@skyux/core 5.6.2 → 6.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/documentation.json +113 -113
  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} +188 -180
  87. package/fesm2020/skyux-core.mjs.map +1 -0
  88. package/lib/modules/dock/dock.service.d.ts +2 -2
  89. package/lib/modules/numeric/numeric.options.d.ts +1 -1
  90. package/lib/modules/scrollable-host/scrollable-host.service.d.ts +2 -1
  91. package/lib/modules/shared/sky-core-resources.module.d.ts +1 -1
  92. package/package.json +32 -11
  93. package/testing/package.json +5 -5
  94. package/bundles/skyux-core-testing.umd.js +0 -459
  95. package/bundles/skyux-core.umd.js +0 -3624
  96. package/esm2015/index.js +0 -60
  97. package/esm2015/index.js.map +0 -1
  98. package/esm2015/lib/modules/adapter-service/adapter.module.js +0 -16
  99. package/esm2015/lib/modules/adapter-service/adapter.module.js.map +0 -1
  100. package/esm2015/lib/modules/adapter-service/adapter.service.js +0 -218
  101. package/esm2015/lib/modules/adapter-service/adapter.service.js.map +0 -1
  102. package/esm2015/lib/modules/adapter-service/focusable-children-options.js +0 -2
  103. package/esm2015/lib/modules/adapter-service/focusable-children-options.js.map +0 -1
  104. package/esm2015/lib/modules/affix/affix-auto-fit-context.js +0 -12
  105. package/esm2015/lib/modules/affix/affix-auto-fit-context.js.map +0 -1
  106. package/esm2015/lib/modules/affix/affix-config.js +0 -2
  107. package/esm2015/lib/modules/affix/affix-config.js.map +0 -1
  108. package/esm2015/lib/modules/affix/affix-horizontal-alignment.js +0 -2
  109. package/esm2015/lib/modules/affix/affix-horizontal-alignment.js.map +0 -1
  110. package/esm2015/lib/modules/affix/affix-offset-change.js +0 -2
  111. package/esm2015/lib/modules/affix/affix-offset-change.js.map +0 -1
  112. package/esm2015/lib/modules/affix/affix-offset.js +0 -2
  113. package/esm2015/lib/modules/affix/affix-offset.js.map +0 -1
  114. package/esm2015/lib/modules/affix/affix-placement-change.js +0 -2
  115. package/esm2015/lib/modules/affix/affix-placement-change.js.map +0 -1
  116. package/esm2015/lib/modules/affix/affix-placement.js +0 -2
  117. package/esm2015/lib/modules/affix/affix-placement.js.map +0 -1
  118. package/esm2015/lib/modules/affix/affix-utils.js +0 -18
  119. package/esm2015/lib/modules/affix/affix-utils.js.map +0 -1
  120. package/esm2015/lib/modules/affix/affix-vertical-alignment.js +0 -2
  121. package/esm2015/lib/modules/affix/affix-vertical-alignment.js.map +0 -1
  122. package/esm2015/lib/modules/affix/affix.directive.js +0 -100
  123. package/esm2015/lib/modules/affix/affix.directive.js.map +0 -1
  124. package/esm2015/lib/modules/affix/affix.module.js +0 -18
  125. package/esm2015/lib/modules/affix/affix.module.js.map +0 -1
  126. package/esm2015/lib/modules/affix/affix.service.js +0 -24
  127. package/esm2015/lib/modules/affix/affix.service.js.map +0 -1
  128. package/esm2015/lib/modules/affix/affixer.js +0 -349
  129. package/esm2015/lib/modules/affix/affixer.js.map +0 -1
  130. package/esm2015/lib/modules/affix/dom-utils.js +0 -77
  131. package/esm2015/lib/modules/affix/dom-utils.js.map +0 -1
  132. package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +0 -80
  133. package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +0 -1
  134. package/esm2015/lib/modules/dock/dock-insert-component-config.js +0 -2
  135. package/esm2015/lib/modules/dock/dock-insert-component-config.js.map +0 -1
  136. package/esm2015/lib/modules/dock/dock-item-config.js +0 -2
  137. package/esm2015/lib/modules/dock/dock-item-config.js.map +0 -1
  138. package/esm2015/lib/modules/dock/dock-item-reference.js +0 -2
  139. package/esm2015/lib/modules/dock/dock-item-reference.js.map +0 -1
  140. package/esm2015/lib/modules/dock/dock-item.js +0 -29
  141. package/esm2015/lib/modules/dock/dock-item.js.map +0 -1
  142. package/esm2015/lib/modules/dock/dock-location.js +0 -19
  143. package/esm2015/lib/modules/dock/dock-location.js.map +0 -1
  144. package/esm2015/lib/modules/dock/dock-options.js +0 -2
  145. package/esm2015/lib/modules/dock/dock-options.js.map +0 -1
  146. package/esm2015/lib/modules/dock/dock.component.js +0 -95
  147. package/esm2015/lib/modules/dock/dock.component.js.map +0 -1
  148. package/esm2015/lib/modules/dock/dock.module.js +0 -20
  149. package/esm2015/lib/modules/dock/dock.module.js.map +0 -1
  150. package/esm2015/lib/modules/dock/dock.service.js +0 -92
  151. package/esm2015/lib/modules/dock/dock.service.js.map +0 -1
  152. package/esm2015/lib/modules/dock/sort-by-stack-order.js +0 -13
  153. package/esm2015/lib/modules/dock/sort-by-stack-order.js.map +0 -1
  154. package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js +0 -27
  155. package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js.map +0 -1
  156. package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js +0 -2
  157. package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js.map +0 -1
  158. package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js +0 -17
  159. package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js.map +0 -1
  160. package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js +0 -83
  161. package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +0 -1
  162. package/esm2015/lib/modules/format/app-format.js +0 -18
  163. package/esm2015/lib/modules/format/app-format.js.map +0 -1
  164. package/esm2015/lib/modules/id/id.directive.js +0 -34
  165. package/esm2015/lib/modules/id/id.directive.js.map +0 -1
  166. package/esm2015/lib/modules/id/id.module.js +0 -16
  167. package/esm2015/lib/modules/id/id.module.js.map +0 -1
  168. package/esm2015/lib/modules/log/log.module.js +0 -16
  169. package/esm2015/lib/modules/log/log.module.js.map +0 -1
  170. package/esm2015/lib/modules/log/log.service.js +0 -23
  171. package/esm2015/lib/modules/log/log.service.js.map +0 -1
  172. package/esm2015/lib/modules/media-query/media-breakpoints.js +0 -20
  173. package/esm2015/lib/modules/media-query/media-breakpoints.js.map +0 -1
  174. package/esm2015/lib/modules/media-query/media-query-listener.js +0 -2
  175. package/esm2015/lib/modules/media-query/media-query-listener.js.map +0 -1
  176. package/esm2015/lib/modules/media-query/media-query.module.js +0 -16
  177. package/esm2015/lib/modules/media-query/media-query.module.js.map +0 -1
  178. package/esm2015/lib/modules/media-query/media-query.service.js +0 -121
  179. package/esm2015/lib/modules/media-query/media-query.service.js.map +0 -1
  180. package/esm2015/lib/modules/mutation/mutation-observer-service.js +0 -16
  181. package/esm2015/lib/modules/mutation/mutation-observer-service.js.map +0 -1
  182. package/esm2015/lib/modules/numeric/numeric-symbol.js +0 -2
  183. package/esm2015/lib/modules/numeric/numeric-symbol.js.map +0 -1
  184. package/esm2015/lib/modules/numeric/numeric.module.js +0 -20
  185. package/esm2015/lib/modules/numeric/numeric.module.js.map +0 -1
  186. package/esm2015/lib/modules/numeric/numeric.options.js +0 -41
  187. package/esm2015/lib/modules/numeric/numeric.options.js.map +0 -1
  188. package/esm2015/lib/modules/numeric/numeric.pipe.js +0 -83
  189. package/esm2015/lib/modules/numeric/numeric.pipe.js.map +0 -1
  190. package/esm2015/lib/modules/numeric/numeric.service.js +0 -189
  191. package/esm2015/lib/modules/numeric/numeric.service.js.map +0 -1
  192. package/esm2015/lib/modules/overlay/overlay-adapter.service.js +0 -41
  193. package/esm2015/lib/modules/overlay/overlay-adapter.service.js.map +0 -1
  194. package/esm2015/lib/modules/overlay/overlay-config.js +0 -2
  195. package/esm2015/lib/modules/overlay/overlay-config.js.map +0 -1
  196. package/esm2015/lib/modules/overlay/overlay-context.js +0 -10
  197. package/esm2015/lib/modules/overlay/overlay-context.js.map +0 -1
  198. package/esm2015/lib/modules/overlay/overlay-instance.js +0 -55
  199. package/esm2015/lib/modules/overlay/overlay-instance.js.map +0 -1
  200. package/esm2015/lib/modules/overlay/overlay.component.js +0 -154
  201. package/esm2015/lib/modules/overlay/overlay.component.js.map +0 -1
  202. package/esm2015/lib/modules/overlay/overlay.module.js +0 -18
  203. package/esm2015/lib/modules/overlay/overlay.module.js.map +0 -1
  204. package/esm2015/lib/modules/overlay/overlay.service.js +0 -120
  205. package/esm2015/lib/modules/overlay/overlay.service.js.map +0 -1
  206. package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js +0 -20
  207. package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +0 -1
  208. package/esm2015/lib/modules/percent-pipe/percent.pipe.js +0 -48
  209. package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +0 -1
  210. package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +0 -163
  211. package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +0 -1
  212. package/esm2015/lib/modules/shared/number-format/number-format-utility.js +0 -72
  213. package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +0 -1
  214. package/esm2015/lib/modules/shared/sky-core-resources.module.js +0 -50
  215. package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +0 -1
  216. package/esm2015/lib/modules/title/set-title-args.js +0 -2
  217. package/esm2015/lib/modules/title/set-title-args.js.map +0 -1
  218. package/esm2015/lib/modules/title/title.service.js +0 -31
  219. package/esm2015/lib/modules/title/title.service.js.map +0 -1
  220. package/esm2015/lib/modules/ui-config/ui-config.service.js +0 -21
  221. package/esm2015/lib/modules/ui-config/ui-config.service.js.map +0 -1
  222. package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js +0 -2
  223. package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js.map +0 -1
  224. package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -2
  225. package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js.map +0 -1
  226. package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js +0 -10
  227. package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js.map +0 -1
  228. package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js +0 -2
  229. package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js.map +0 -1
  230. package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js +0 -2
  231. package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js.map +0 -1
  232. package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +0 -116
  233. package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +0 -1
  234. package/esm2015/lib/modules/viewkeeper/viewkeeper.js +0 -251
  235. package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +0 -1
  236. package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js +0 -16
  237. package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js.map +0 -1
  238. package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js +0 -39
  239. package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +0 -1
  240. package/esm2015/lib/modules/window/window-ref.js +0 -30
  241. package/esm2015/lib/modules/window/window-ref.js.map +0 -1
  242. package/esm2015/skyux-core.js +0 -5
  243. package/esm2015/skyux-core.js.map +0 -1
  244. package/esm2015/testing/mock-media-query.service.js +0 -41
  245. package/esm2015/testing/mock-media-query.service.js.map +0 -1
  246. package/esm2015/testing/mock-ui-config.service.js +0 -59
  247. package/esm2015/testing/mock-ui-config.service.js.map +0 -1
  248. package/esm2015/testing/public-api.js +0 -3
  249. package/esm2015/testing/public-api.js.map +0 -1
  250. package/esm2015/testing/skyux-core-testing.js +0 -5
  251. package/esm2015/testing/skyux-core-testing.js.map +0 -1
  252. package/fesm2015/skyux-core-testing.js.map +0 -1
  253. package/fesm2015/skyux-core.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { Injectable, NgZone } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { SkyMediaBreakpoints } from './media-breakpoints';
4
+ import * as i0 from "@angular/core";
5
+ export class SkyMediaQueryService {
6
+ constructor(zone) {
7
+ this.zone = zone;
8
+ this.currentSubject = new BehaviorSubject(this.current);
9
+ this._current = SkyMediaBreakpoints.md;
10
+ this.breakpoints = [
11
+ {
12
+ mediaQueryString: SkyMediaQueryService.xs,
13
+ name: SkyMediaBreakpoints.xs,
14
+ },
15
+ {
16
+ mediaQueryString: SkyMediaQueryService.sm,
17
+ name: SkyMediaBreakpoints.sm,
18
+ },
19
+ {
20
+ mediaQueryString: SkyMediaQueryService.md,
21
+ name: SkyMediaBreakpoints.md,
22
+ },
23
+ {
24
+ mediaQueryString: SkyMediaQueryService.lg,
25
+ name: SkyMediaBreakpoints.lg,
26
+ },
27
+ ];
28
+ this.mediaQueries = [];
29
+ this.addListeners();
30
+ }
31
+ /**
32
+ * Returns the current breakpoint.
33
+ */
34
+ get current() {
35
+ return this._current;
36
+ }
37
+ ngOnDestroy() {
38
+ this.removeListeners();
39
+ this.currentSubject.complete();
40
+ }
41
+ /**
42
+ * Suscribes to screen size changes.
43
+ * @param listener Specifies a function that is called when breakpoints change.
44
+ */
45
+ subscribe(listener) {
46
+ return this.currentSubject.subscribe({
47
+ next: (breakpoints) => {
48
+ listener(breakpoints);
49
+ },
50
+ });
51
+ }
52
+ /**
53
+ * @internal
54
+ */
55
+ destroy() {
56
+ this.removeListeners();
57
+ this.currentSubject.complete();
58
+ }
59
+ addListeners() {
60
+ this.mediaQueries = this.breakpoints.map((breakpoint) => {
61
+ const mq = matchMedia(breakpoint.mediaQueryString);
62
+ const listener = (event) => {
63
+ // Run the check outside of Angular's change detection since Angular
64
+ // does not wrap matchMedia listeners in NgZone.
65
+ // See: https://blog.assaf.co/angular-2-change-detection-zones-and-an-example/
66
+ this.zone.run(() => {
67
+ if (event.matches) {
68
+ this.notifyBreakpointChange(breakpoint.name);
69
+ }
70
+ });
71
+ };
72
+ mq.addListener(listener);
73
+ if (mq.matches) {
74
+ this.notifyBreakpointChange(breakpoint.name);
75
+ }
76
+ return {
77
+ mediaQueryList: mq,
78
+ listener,
79
+ };
80
+ });
81
+ }
82
+ removeListeners() {
83
+ this.mediaQueries.forEach((mediaQuery) => {
84
+ mediaQuery.mediaQueryList.removeListener(mediaQuery.listener);
85
+ });
86
+ this.mediaQueries = [];
87
+ }
88
+ notifyBreakpointChange(breakpoint) {
89
+ this._current = breakpoint;
90
+ this.currentSubject.next(breakpoint);
91
+ }
92
+ }
93
+ /**
94
+ * The size for the `xs` breakpoint.
95
+ * @default "(max-width: 767px)"
96
+ */
97
+ SkyMediaQueryService.xs = '(max-width: 767px)';
98
+ /**
99
+ * The size for the `sm` breakpoint.
100
+ * @default "(min-width: 768px) and (max-width: 991px)"
101
+ */
102
+ SkyMediaQueryService.sm = '(min-width: 768px) and (max-width: 991px)';
103
+ /**
104
+ * The size for the `md` breakpoint.
105
+ * @default "(min-width: 992px) and (max-width: 1199px)"
106
+ */
107
+ SkyMediaQueryService.md = '(min-width: 992px) and (max-width: 1199px)';
108
+ /**
109
+ * The size for the `lg` breakpoint.
110
+ * @default "(min-width: 1200px)"
111
+ */
112
+ SkyMediaQueryService.lg = '(min-width: 1200px)';
113
+ SkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyMediaQueryService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
114
+ SkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyMediaQueryService, providedIn: 'root' });
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyMediaQueryService, decorators: [{
116
+ type: Injectable,
117
+ args: [{
118
+ providedIn: 'root',
119
+ }]
120
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tZWRpYS1xdWVyeS9tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU0xRCxNQUFNLE9BQU8sb0JBQW9CO0lBaUUvQixZQUFvQixJQUFZO1FBQVosU0FBSSxHQUFKLElBQUksQ0FBUTtRQWpDeEIsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FDMUMsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBRU0sYUFBUSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztRQUVsQyxnQkFBVyxHQUdiO1lBQ0o7Z0JBQ0UsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtnQkFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7YUFDN0I7WUFDRDtnQkFDRSxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO2dCQUN6QyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsRUFBRTthQUM3QjtZQUNEO2dCQUNFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7Z0JBQ3pDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO2FBQzdCO1lBQ0Q7Z0JBQ0UsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtnQkFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7YUFDN0I7U0FDRixDQUFDO1FBRU0saUJBQVksR0FHZCxFQUFFLENBQUM7UUFHUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQTFDRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQXVDTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsUUFBK0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7Z0JBQ3pDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRTtZQUMzRCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFbkQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDOUIsb0VBQW9FO2dCQUNwRSxnREFBZ0Q7Z0JBQ2hELDhFQUE4RTtnQkFDOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7d0JBQ2pCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzlDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QixJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QztZQUVELE9BQU87Z0JBQ0wsY0FBYyxFQUFFLEVBQUU7Z0JBQ2xCLFFBQVE7YUFDVCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3ZDLFVBQVUsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUErQjtRQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDOztBQW5JRDs7O0dBR0c7QUFDVyx1QkFBRSxHQUFHLG9CQUFxQixDQUFBO0FBRXhDOzs7R0FHRztBQUNXLHVCQUFFLEdBQUcsMkNBQTRDLENBQUE7QUFFL0Q7OztHQUdHO0FBQ1csdUJBQUUsR0FBRyw0Q0FBNkMsQ0FBQTtBQUVoRTs7O0dBR0c7QUFDVyx1QkFBRSxHQUFHLHFCQUFzQixDQUFBO2lIQXZCOUIsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJy4vbWVkaWEtYnJlYWtwb2ludHMnO1xuaW1wb3J0IHsgU2t5TWVkaWFRdWVyeUxpc3RlbmVyIH0gZnJvbSAnLi9tZWRpYS1xdWVyeS1saXN0ZW5lcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNZWRpYVF1ZXJ5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWF4LXdpZHRoOiA3NjdweClcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB4cyA9ICcobWF4LXdpZHRoOiA3NjdweCknO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNtID0gJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpJztcblxuICAvKipcbiAgICogVGhlIHNpemUgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0IFwiKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWQgPSAnKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpJztcblxuICAvKipcbiAgICogVGhlIHNpemUgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0IFwiKG1pbi13aWR0aDogMTIwMHB4KVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxnID0gJyhtaW4td2lkdGg6IDEyMDBweCknO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lNZWRpYUJyZWFrcG9pbnRzPihcbiAgICB0aGlzLmN1cnJlbnRcbiAgKTtcblxuICBwcml2YXRlIF9jdXJyZW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy5tZDtcblxuICBwcml2YXRlIGJyZWFrcG9pbnRzOiB7XG4gICAgbWVkaWFRdWVyeVN0cmluZzogc3RyaW5nO1xuICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHM7XG4gIH1bXSA9IFtcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS54cyxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMueHMsXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5zbSxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMuc20sXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5tZCxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMubWQsXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5sZyxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMubGcsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIG1lZGlhUXVlcmllczoge1xuICAgIG1lZGlhUXVlcnlMaXN0OiBNZWRpYVF1ZXJ5TGlzdDtcbiAgICBsaXN0ZW5lcjogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG4gIH1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lKSB7XG4gICAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuY3VycmVudFN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdXNjcmliZXMgdG8gc2NyZWVuIHNpemUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGxpc3RlbmVyIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gYnJlYWtwb2ludHMgY2hhbmdlLlxuICAgKi9cbiAgcHVibGljIHN1YnNjcmliZShsaXN0ZW5lcjogU2t5TWVkaWFRdWVyeUxpc3RlbmVyKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGJyZWFrcG9pbnRzOiBTa3lNZWRpYUJyZWFrcG9pbnRzKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyKGJyZWFrcG9pbnRzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgIHRoaXMuY3VycmVudFN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMubWVkaWFRdWVyaWVzID0gdGhpcy5icmVha3BvaW50cy5tYXAoKGJyZWFrcG9pbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgbXEgPSBtYXRjaE1lZGlhKGJyZWFrcG9pbnQubWVkaWFRdWVyeVN0cmluZyk7XG5cbiAgICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgLy8gUnVuIHRoZSBjaGVjayBvdXRzaWRlIG9mIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uIHNpbmNlIEFuZ3VsYXJcbiAgICAgICAgLy8gZG9lcyBub3Qgd3JhcCBtYXRjaE1lZGlhIGxpc3RlbmVycyBpbiBOZ1pvbmUuXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9ibG9nLmFzc2FmLmNvL2FuZ3VsYXItMi1jaGFuZ2UtZGV0ZWN0aW9uLXpvbmVzLWFuZC1hbi1leGFtcGxlL1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQubWF0Y2hlcykge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIG1xLmFkZExpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgaWYgKG1xLm1hdGNoZXMpIHtcbiAgICAgICAgdGhpcy5ub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lZGlhUXVlcnlMaXN0OiBtcSxcbiAgICAgICAgbGlzdGVuZXIsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVF1ZXJpZXMuZm9yRWFjaCgobWVkaWFRdWVyeSkgPT4ge1xuICAgICAgbWVkaWFRdWVyeS5tZWRpYVF1ZXJ5TGlzdC5yZW1vdmVMaXN0ZW5lcihtZWRpYVF1ZXJ5Lmxpc3RlbmVyKTtcbiAgICB9KTtcbiAgICB0aGlzLm1lZGlhUXVlcmllcyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50ID0gYnJlYWtwb2ludDtcbiAgICB0aGlzLmN1cnJlbnRTdWJqZWN0Lm5leHQoYnJlYWtwb2ludCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MutationObserverService {
4
+ create(callback) {
5
+ return new MutationObserver(callback);
6
+ }
7
+ }
8
+ MutationObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
+ MutationObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MutationObserverService, providedIn: 'root' });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MutationObserverService, decorators: [{
11
+ type: Injectable,
12
+ args: [{
13
+ providedIn: 'root',
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLFFBQWE7UUFDekIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O29IQUhVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogYW55KTogTXV0YXRpb25PYnNlcnZlciB7XG4gICAgcmV0dXJuIG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1zeW1ib2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbnVtZXJpYy9udW1lcmljLXN5bWJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lOdW1lcmljU3ltYm9sIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SkyI18nModule } from '@skyux/i18n';
3
+ import { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';
4
+ import { SkyNumericPipe } from './numeric.pipe';
5
+ import * as i0 from "@angular/core";
6
+ export class SkyNumericModule {
7
+ }
8
+ SkyNumericModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ SkyNumericModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericModule, declarations: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule], exports: [SkyNumericPipe] });
10
+ SkyNumericModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericModule, providers: [SkyNumericPipe], imports: [[SkyI18nModule, SkyCoreResourcesModule]] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [SkyNumericPipe],
15
+ providers: [SkyNumericPipe],
16
+ imports: [SkyI18nModule, SkyCoreResourcesModule],
17
+ exports: [SkyNumericPipe],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbnVtZXJpYy9udW1lcmljLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVFoRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBTFosY0FBYyxhQUVuQixhQUFhLEVBQUUsc0JBQXNCLGFBQ3JDLGNBQWM7OEdBRWIsZ0JBQWdCLGFBSmhCLENBQUMsY0FBYyxDQUFDLFlBQ2xCLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDOzJGQUdyQyxnQkFBZ0I7a0JBTjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzNCLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJMThuTW9kdWxlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTa3lDb3JlUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1jb3JlLXJlc291cmNlcy5tb2R1bGUnO1xuXG5pbXBvcnQgeyBTa3lOdW1lcmljUGlwZSB9IGZyb20gJy4vbnVtZXJpYy5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5TnVtZXJpY1BpcGVdLFxuICBwcm92aWRlcnM6IFtTa3lOdW1lcmljUGlwZV0sXG4gIGltcG9ydHM6IFtTa3lJMThuTW9kdWxlLCBTa3lDb3JlUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreU51bWVyaWNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5TnVtZXJpY01vZHVsZSB7fVxuIl19
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Provides arguments for the number to format.
3
+ */
4
+ export class NumericOptions {
5
+ constructor() {
6
+ /**
7
+ * Specifies the maximum number of digits after the decimal separator.
8
+ * @default 1
9
+ */
10
+ this.digits = 1;
11
+ /**
12
+ * Specifies how to format the number. Options are `currency` or `number`.
13
+ * @default "number"
14
+ */
15
+ this.format = 'number';
16
+ /**
17
+ * Specifies the format of the currency.
18
+ * @default "standard"
19
+ */
20
+ this.currencySign = 'standard';
21
+ /**
22
+ * Specifies the ISO4217 currency code to use for currency formatting. If you do not specify a
23
+ * currency code, the component uses the browser's culture to determine the currency unless your
24
+ * SPA provides a different culture with `SkyAppLocaleProvider`.
25
+ * @default "USD"
26
+ */
27
+ this.iso = 'USD';
28
+ /**
29
+ * Indicates whether to shorten numbers to rounded numbers and abbreviation characters
30
+ * such as K for thousands, M for millions, B for billions, and T for trillions.
31
+ */
32
+ this.truncate = true;
33
+ /**
34
+ * Specifies the starting point after which numbers are shortened to rounded numbers
35
+ * and abbreviation characters.
36
+ * @default 0
37
+ */
38
+ this.truncateAfter = 0;
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFBM0I7UUFDRTs7O1dBR0c7UUFDSSxXQUFNLEdBQVksQ0FBQyxDQUFDO1FBRTNCOzs7V0FHRztRQUNJLFdBQU0sR0FBWSxRQUFRLENBQUM7UUFFbEM7OztXQUdHO1FBQ0ksaUJBQVksR0FBK0IsVUFBVSxDQUFDO1FBRTdEOzs7OztXQUtHO1FBQ0ksUUFBRyxHQUFZLEtBQUssQ0FBQztRQWM1Qjs7O1dBR0c7UUFDSSxhQUFRLEdBQWEsSUFBSSxDQUFDO1FBRWpDOzs7O1dBSUc7UUFDSSxrQkFBYSxHQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3ZpZGVzIGFyZ3VtZW50cyBmb3IgdGhlIG51bWJlciB0byBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOdW1lcmljT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHB1YmxpYyBkaWdpdHM/OiBudW1iZXIgPSAxO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IHRvIGZvcm1hdCB0aGUgbnVtYmVyLiBPcHRpb25zIGFyZSBgY3VycmVuY3lgIG9yIGBudW1iZXJgLlxuICAgKiBAZGVmYXVsdCBcIm51bWJlclwiXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0Pzogc3RyaW5nID0gJ251bWJlcic7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IG9mIHRoZSBjdXJyZW5jeS5cbiAgICogQGRlZmF1bHQgXCJzdGFuZGFyZFwiXG4gICAqL1xuICBwdWJsaWMgY3VycmVuY3lTaWduPzogJ2FjY291bnRpbmcnIHwgJ3N0YW5kYXJkJyA9ICdzdGFuZGFyZCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgSVNPNDIxNyBjdXJyZW5jeSBjb2RlIHRvIHVzZSBmb3IgY3VycmVuY3kgZm9ybWF0dGluZy4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IGFcbiAgICogY3VycmVuY3kgY29kZSwgdGhlIGNvbXBvbmVudCB1c2VzIHRoZSBicm93c2VyJ3MgY3VsdHVyZSB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbmN5IHVubGVzcyB5b3VyXG4gICAqIFNQQSBwcm92aWRlcyBhIGRpZmZlcmVudCBjdWx0dXJlIHdpdGggYFNreUFwcExvY2FsZVByb3ZpZGVyYC5cbiAgICogQGRlZmF1bHQgXCJVU0RcIlxuICAgKi9cbiAgcHVibGljIGlzbz86IHN0cmluZyA9ICdVU0QnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGxvY2FsZSBjb2RlIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcuXG4gICAqL1xuICBwdWJsaWMgbG9jYWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuIFRoaXMgcHJvcGVydHkgb25seSBhcHBsaWVzXG4gICAqIHdoZW4gdGhlIGB0cnVuY2F0ZWAgcHJvcGVydHkgaXMgc2V0IHRvIGBmYWxzZWAuIElmIGBkaWdpdHNgIHNwZWNpZmllcyBhIG1heGltdW0gbnVtYmVyIG9mXG4gICAqIGRpZ2l0cywgdGhlbiBgbWluRGlnaXRzYCBtdXN0IGJlIGxlc3MgdGhhbiB0aGF0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG1pbkRpZ2l0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gc2hvcnRlbiBudW1iZXJzIHRvIHJvdW5kZWQgbnVtYmVycyBhbmQgYWJicmV2aWF0aW9uIGNoYXJhY3RlcnNcbiAgICogc3VjaCBhcyBLIGZvciB0aG91c2FuZHMsIE0gZm9yIG1pbGxpb25zLCBCIGZvciBiaWxsaW9ucywgYW5kIFQgZm9yIHRyaWxsaW9ucy5cbiAgICovXG4gIHB1YmxpYyB0cnVuY2F0ZT86IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHN0YXJ0aW5nIHBvaW50IGFmdGVyIHdoaWNoIG51bWJlcnMgYXJlIHNob3J0ZW5lZCB0byByb3VuZGVkIG51bWJlcnNcbiAgICogYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBwdWJsaWMgdHJ1bmNhdGVBZnRlcj86IG51bWJlciA9IDA7XG59XG4iXX0=
@@ -0,0 +1,82 @@
1
+ import { ChangeDetectorRef, Pipe, } from '@angular/core';
2
+ import { SkyAppLocaleProvider } from '@skyux/i18n';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
5
+ import { NumericOptions } from './numeric.options';
6
+ import { SkyNumericService } from './numeric.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@skyux/i18n";
9
+ import * as i2 from "./numeric.service";
10
+ /**
11
+ * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,
12
+ * M for millions, B for billions, and T for trillions. The pipe also formats for currency.
13
+ * Be sure you have a space after the two curly brackets opening the pipe and
14
+ * a space before the two curly brackets closing the pipe or it will not work.
15
+ * Usage:
16
+ * ```
17
+ * {{ value | skyNumeric(config) }}
18
+ * ```
19
+ */
20
+ export class SkyNumericPipe {
21
+ constructor(localeProvider, numericService, changeDetector) {
22
+ this.localeProvider = localeProvider;
23
+ this.numericService = numericService;
24
+ this.changeDetector = changeDetector;
25
+ this.ngUnsubscribe = new Subject();
26
+ this.localeProvider
27
+ .getLocaleInfo()
28
+ .pipe(takeUntil(this.ngUnsubscribe))
29
+ .subscribe((localeInfo) => {
30
+ this.providerLocale = localeInfo.locale;
31
+ numericService.currentLocale = this.providerLocale;
32
+ this.changeDetector.markForCheck();
33
+ });
34
+ }
35
+ ngOnDestroy() {
36
+ this.ngUnsubscribe.next();
37
+ this.ngUnsubscribe.complete();
38
+ }
39
+ transform(value, config) {
40
+ const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
41
+ `${value}_${config?.locale || this.providerLocale}`;
42
+ /* If the value and locale are the same as the last transform then return the previous value
43
+ instead of reformatting. */
44
+ if (this.formattedValue && this.cacheKey === newCacheKey) {
45
+ return this.formattedValue;
46
+ }
47
+ const options = new NumericOptions();
48
+ // The default number of digits is `1`. When truncate is disabled, set digits
49
+ // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.
50
+ if (config && config.truncate === false && config.digits === undefined) {
51
+ options.digits = 0;
52
+ }
53
+ // If the minimum digits is less than the set maximum digits then throw an error
54
+ if (config &&
55
+ config.minDigits &&
56
+ config.digits &&
57
+ config.minDigits > config.digits) {
58
+ throw new Error('The `digits` property must be greater than or equal to the `minDigits` property');
59
+ // If there is a minimum digits given but not a maximum then default the maximum to the minimum
60
+ }
61
+ else if (config && config.minDigits && !config.digits) {
62
+ options.digits = config.minDigits;
63
+ }
64
+ Object.assign(options, config);
65
+ // Assign properties for proper result caching.
66
+ this.rawValue = value;
67
+ this.lastTransformLocale = config?.locale ?? this.providerLocale;
68
+ this.cacheKey = newCacheKey;
69
+ this.formattedValue = this.numericService.formatNumber(value, options);
70
+ return this.formattedValue;
71
+ }
72
+ }
73
+ SkyNumericPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericPipe, deps: [{ token: i1.SkyAppLocaleProvider }, { token: i2.SkyNumericService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
74
+ SkyNumericPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericPipe, name: "skyNumeric", pure: false });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericPipe, decorators: [{
76
+ type: Pipe,
77
+ args: [{
78
+ name: 'skyNumeric',
79
+ pure: false,
80
+ }]
81
+ }], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }, { type: i2.SkyNumericService }, { type: i0.ChangeDetectorRef }]; } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdEQ7Ozs7Ozs7OztHQVNHO0FBS0gsTUFBTSxPQUFPLGNBQWM7SUFTekIsWUFDVSxjQUFvQyxFQUMzQixjQUFpQyxFQUMxQyxjQUFpQztRQUZqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUxuQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFPMUMsSUFBSSxDQUFDLGNBQWM7YUFDaEIsYUFBYSxFQUFFO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQXVCO1FBQ3JELE1BQU0sV0FBVyxHQUNmLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxHQUFHLEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0RDttQ0FDMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQ3hELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUM1QjtRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFFckMsNkVBQTZFO1FBQzdFLHVGQUF1RjtRQUN2RixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN0RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUVELGdGQUFnRjtRQUNoRixJQUNFLE1BQU07WUFDTixNQUFNLENBQUMsU0FBUztZQUNoQixNQUFNLENBQUMsTUFBTTtZQUNiLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFDaEM7WUFDQSxNQUFNLElBQUksS0FBSyxDQUNiLGlGQUFpRixDQUNsRixDQUFDO1lBRUYsK0ZBQStGO1NBQ2hHO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDdkQsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1NBQ25DO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0IsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFFNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7OzJHQXpFVSxjQUFjO3lHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFKMUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUFwcExvY2FsZVByb3ZpZGVyIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bWVyaWNPcHRpb25zIH0gZnJvbSAnLi9udW1lcmljLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5TnVtZXJpY1NlcnZpY2UgfSBmcm9tICcuL251bWVyaWMuc2VydmljZSc7XG5cbi8qKlxuICogU2hvcnRlbnMgbnVtYmVycyB0byByb3VuZGVkIG51bWJlcnMgYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgSyBmb3IgdGhvdXNhbmRzLFxuICogTSBmb3IgbWlsbGlvbnMsIEIgZm9yIGJpbGxpb25zLCBhbmQgVCBmb3IgdHJpbGxpb25zLiBUaGUgcGlwZSBhbHNvIGZvcm1hdHMgZm9yIGN1cnJlbmN5LlxuICogQmUgc3VyZSB5b3UgaGF2ZSBhIHNwYWNlIGFmdGVyIHRoZSB0d28gY3VybHkgYnJhY2tldHMgb3BlbmluZyB0aGUgcGlwZSBhbmRcbiAqIGEgc3BhY2UgYmVmb3JlIHRoZSB0d28gY3VybHkgYnJhY2tldHMgY2xvc2luZyB0aGUgcGlwZSBvciBpdCB3aWxsIG5vdCB3b3JrLlxuICogVXNhZ2U6XG4gKiBgYGBcbiAqIHt7IHZhbHVlIHwgc2t5TnVtZXJpYyhjb25maWcpIH19XG4gKiBgYGBcbiAqL1xuQFBpcGUoe1xuICBuYW1lOiAnc2t5TnVtZXJpYycsXG4gIHB1cmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY2FjaGVLZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIGxhc3RUcmFuc2Zvcm1Mb2NhbGU6IHN0cmluZztcbiAgcHJpdmF0ZSByYXdWYWx1ZTogbnVtYmVyO1xuICBwcml2YXRlIHByb3ZpZGVyTG9jYWxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWVyaWNTZXJ2aWNlOiBTa3lOdW1lcmljU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLmxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy5wcm92aWRlckxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgICBudW1lcmljU2VydmljZS5jdXJyZW50TG9jYWxlID0gdGhpcy5wcm92aWRlckxvY2FsZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIsIGNvbmZpZz86IE51bWVyaWNPcHRpb25zKTogc3RyaW5nIHtcbiAgICBjb25zdCBuZXdDYWNoZUtleSA9XG4gICAgICAoY29uZmlnID8gSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBPYmplY3Qua2V5cyhjb25maWcpLnNvcnQoKSkgOiAnJykgK1xuICAgICAgYCR7dmFsdWV9XyR7Y29uZmlnPy5sb2NhbGUgfHwgdGhpcy5wcm92aWRlckxvY2FsZX1gO1xuXG4gICAgLyogSWYgdGhlIHZhbHVlIGFuZCBsb2NhbGUgYXJlIHRoZSBzYW1lIGFzIHRoZSBsYXN0IHRyYW5zZm9ybSB0aGVuIHJldHVybiB0aGUgcHJldmlvdXMgdmFsdWVcbiAgICBpbnN0ZWFkIG9mIHJlZm9ybWF0dGluZy4gKi9cbiAgICBpZiAodGhpcy5mb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLmNhY2hlS2V5ID09PSBuZXdDYWNoZUtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IG5ldyBOdW1lcmljT3B0aW9ucygpO1xuXG4gICAgLy8gVGhlIGRlZmF1bHQgbnVtYmVyIG9mIGRpZ2l0cyBpcyBgMWAuIFdoZW4gdHJ1bmNhdGUgaXMgZGlzYWJsZWQsIHNldCBkaWdpdHNcbiAgICAvLyB0byBgMGAgdG8gYXZvaWQgdGhlIHVubmVjZXNzYXJ5IGFkZGl0aW9uIG9mIGAuMGAgYXQgdGhlIGVuZCBvZiB0aGUgZm9ybWF0dGVkIG51bWJlci5cbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy50cnVuY2F0ZSA9PT0gZmFsc2UgJiYgY29uZmlnLmRpZ2l0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb25zLmRpZ2l0cyA9IDA7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG1pbmltdW0gZGlnaXRzIGlzIGxlc3MgdGhhbiB0aGUgc2V0IG1heGltdW0gZGlnaXRzIHRoZW4gdGhyb3cgYW4gZXJyb3JcbiAgICBpZiAoXG4gICAgICBjb25maWcgJiZcbiAgICAgIGNvbmZpZy5taW5EaWdpdHMgJiZcbiAgICAgIGNvbmZpZy5kaWdpdHMgJiZcbiAgICAgIGNvbmZpZy5taW5EaWdpdHMgPiBjb25maWcuZGlnaXRzXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGUgYGRpZ2l0c2AgcHJvcGVydHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGBtaW5EaWdpdHNgIHByb3BlcnR5J1xuICAgICAgKTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW5pbXVtIGRpZ2l0cyBnaXZlbiBidXQgbm90IGEgbWF4aW11bSB0aGVuIGRlZmF1bHQgdGhlIG1heGltdW0gdG8gdGhlIG1pbmltdW1cbiAgICB9IGVsc2UgaWYgKGNvbmZpZyAmJiBjb25maWcubWluRGlnaXRzICYmICFjb25maWcuZGlnaXRzKSB7XG4gICAgICBvcHRpb25zLmRpZ2l0cyA9IGNvbmZpZy5taW5EaWdpdHM7XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihvcHRpb25zLCBjb25maWcpO1xuXG4gICAgLy8gQXNzaWduIHByb3BlcnRpZXMgZm9yIHByb3BlciByZXN1bHQgY2FjaGluZy5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sYXN0VHJhbnNmb3JtTG9jYWxlID0gY29uZmlnPy5sb2NhbGUgPz8gdGhpcy5wcm92aWRlckxvY2FsZTtcbiAgICB0aGlzLmNhY2hlS2V5ID0gbmV3Q2FjaGVLZXk7XG5cbiAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdGhpcy5udW1lcmljU2VydmljZS5mb3JtYXROdW1iZXIodmFsdWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdHRlZFZhbHVlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,188 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SkyIntlNumberFormatStyle, SkyLibResourcesService } from '@skyux/i18n';
3
+ import { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@skyux/i18n";
6
+ export class SkyNumericService {
7
+ constructor(resourcesService) {
8
+ this.resourcesService = resourcesService;
9
+ this.symbolIndex = [
10
+ { value: 1e12, label: this.getSymbol('skyux_numeric_trillions_symbol') },
11
+ { value: 1e9, label: this.getSymbol('skyux_numeric_billions_symbol') },
12
+ { value: 1e6, label: this.getSymbol('skyux_numeric_millions_symbol') },
13
+ { value: 1e3, label: this.getSymbol('skyux_numeric_thousands_symbol') },
14
+ ];
15
+ }
16
+ /**
17
+ * The browser's current locale.
18
+ * @internal
19
+ */
20
+ set currentLocale(value) {
21
+ this._locale = value;
22
+ }
23
+ get currentLocale() {
24
+ return this._locale || 'en-US';
25
+ }
26
+ /**
27
+ * Shortens with or without symbol (K/M/B/T) depending on value of number.
28
+ * @param value The number to format.
29
+ * @param options Format options.
30
+ */
31
+ formatNumber(value, options) {
32
+ /* tslint:disable-next-line:no-null-keyword */
33
+ if (isNaN(value) || value === null) {
34
+ return '';
35
+ }
36
+ const decimalPlaceRegExp = /\.0+$|(\.[0-9]*[1-9])0+$/;
37
+ // Get the symbol for the number after rounding, since rounding could push the number
38
+ // into a different symbol range.
39
+ let roundedNumber = this.roundNumber(value, options.digits);
40
+ const roundedNumberAbs = Math.abs(roundedNumber);
41
+ let suffix = '';
42
+ for (let i = 0; i < this.symbolIndex.length; i++) {
43
+ let symbol = this.symbolIndex[i];
44
+ if (options.truncate &&
45
+ roundedNumberAbs >= options.truncateAfter &&
46
+ roundedNumberAbs >= symbol.value) {
47
+ roundedNumber = this.roundNumber(value / symbol.value, options.digits);
48
+ if (Math.abs(roundedNumber) === 1000 && i > 0) {
49
+ // Rounding caused the number to cross into the range of the next symbol.
50
+ symbol = this.symbolIndex[i - 1];
51
+ roundedNumber /= 1000;
52
+ }
53
+ suffix = symbol.label;
54
+ break;
55
+ }
56
+ }
57
+ let output = roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;
58
+ this.storeShortenSymbol(output);
59
+ const locale = options.locale || this.currentLocale;
60
+ let digits;
61
+ let isDecimal;
62
+ // Checks the string entered for format. Using toLowerCase to ignore case.
63
+ switch (options.format?.toLowerCase()) {
64
+ // In a case where a decimal value was not shortened and
65
+ // the digit input is 2 or higher, it forces 2 digits.
66
+ // For example, this prevents a value like $15.50 from displaying as $15.5.
67
+ // Note: This will need to be reviewed if we support currencies with
68
+ // three decimal digits.
69
+ case 'currency':
70
+ isDecimal = value % 1 !== 0;
71
+ if (options.minDigits) {
72
+ digits = `1.${options.minDigits}-${options.digits}`;
73
+ }
74
+ else if (isDecimal && options.digits >= 2) {
75
+ digits = `1.2-${options.digits}`;
76
+ }
77
+ else {
78
+ digits = `1.0-${options.digits}`;
79
+ }
80
+ output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digits, options.iso,
81
+ // Angular 5+ needs a string for this parameter, but Angular 4 needs a boolean.
82
+ // To support both versions we can supply 'symbol' which will evaluate truthy for Angular 4
83
+ // and the appropriate string value for Angular 5+.
84
+ // See: https://angular.io/api/common/CurrencyPipe#parameters
85
+ 'symbol', options.currencySign);
86
+ break;
87
+ // The following is a catch-all to ensure that if
88
+ // anything but currency (or a future option) are entered,
89
+ // it will be treated like a number.
90
+ default:
91
+ // Ensures localization of the number to ensure comma and
92
+ // decimal separator
93
+ if (options.minDigits) {
94
+ digits = `1.${options.minDigits}-${options.digits}`;
95
+ }
96
+ else if (options.truncate) {
97
+ digits = `1.0-${options.digits}`;
98
+ }
99
+ else {
100
+ digits = `1.${options.digits}-${options.digits}`;
101
+ }
102
+ output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digits);
103
+ break;
104
+ }
105
+ if (options.truncate) {
106
+ output = this.replaceShortenSymbol(output);
107
+ }
108
+ return output;
109
+ }
110
+ /**
111
+ * Rounds a given number
112
+ *
113
+ * JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER
114
+ * are not guaranteed to be represented or rounded correctly
115
+ * @param value - value to round
116
+ * @param precision - what precision to round with, defaults to 0 decimal places
117
+ */
118
+ roundNumber(value, precision = 0) {
119
+ if (precision < 0) {
120
+ throw new Error('SkyInvalidArgument: precision must be >= 0');
121
+ }
122
+ /* tslint:disable-next-line:no-null-keyword */
123
+ /* Sanity check - ignoring coverage but should not ignore if we make this method public */
124
+ /* istanbul ignore next */
125
+ if (isNaN(value) || value === null) {
126
+ return 0;
127
+ }
128
+ const scaledValue = this.scaleNumberByPowerOfTen(value, precision, true);
129
+ const scaledRoundedValue = Math.round(scaledValue);
130
+ const unscaledRoundedValue = this.scaleNumberByPowerOfTen(scaledRoundedValue, precision, false);
131
+ return unscaledRoundedValue;
132
+ }
133
+ /**
134
+ * Scales a given number by a power of 10
135
+ * @param value - value to scale
136
+ * @param scalar - 10^scalar
137
+ * @param scaleUp - whether to increase or decrease the value
138
+ */
139
+ scaleNumberByPowerOfTen(value, scalar, scaleUp) {
140
+ const valueStr = value.toString().toLowerCase();
141
+ const isExponentFormat = valueStr.includes('e');
142
+ if (isExponentFormat) {
143
+ const [base, exp] = valueStr.split('e');
144
+ const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;
145
+ return Number(`${base}e${newExp}`);
146
+ }
147
+ else {
148
+ const e = scaleUp ? 'e' : 'e-';
149
+ return Number(`${value}${e}${scalar}`);
150
+ }
151
+ }
152
+ /**
153
+ * Stores the symbol added from shortening to reapply later.
154
+ * @param value The string to derive the shorten symbol from.
155
+ */
156
+ storeShortenSymbol(value) {
157
+ const symbols = this.symbolIndex.map((s) => s.label);
158
+ const regexp = new RegExp(symbols.join('|'), 'ig');
159
+ const match = value.match(regexp);
160
+ this.shortSymbol = match ? match.toString() : '';
161
+ }
162
+ /**
163
+ * Must have previously called storeShortenSymbol to have something to replace.
164
+ * Finds the last number in the formatted number, gets the index of the position
165
+ * after that character and re-inserts the symbol.
166
+ * Works regardless of currency symbol position.
167
+ * @param value The string to modify.
168
+ */
169
+ replaceShortenSymbol(value) {
170
+ const result = /(\d)(?!.*\d)/g.exec(value);
171
+ const pos = result.index + result.length;
172
+ const output = value.substring(0, pos) + this.shortSymbol + value.substring(pos);
173
+ return output;
174
+ }
175
+ getSymbol(key) {
176
+ // TODO: Need to implement the async `getString` method in a breaking change.
177
+ return this.resourcesService.getStringForLocale({ locale: 'en_US' }, key);
178
+ }
179
+ }
180
+ SkyNumericService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
181
+ SkyNumericService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericService, providedIn: 'any' });
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyNumericService, decorators: [{
183
+ type: Injectable,
184
+ args: [{
185
+ providedIn: 'any',
186
+ }]
187
+ }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }]; } });
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7QUFRdkYsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFBb0IsZ0JBQXdDO1FBQXhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFUcEQsZ0JBQVcsR0FBdUI7WUFDeEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7WUFDeEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDdEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDdEUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLEVBQUU7U0FDeEUsQ0FBQztJQUk2RCxDQUFDO0lBMUJoRTs7O09BR0c7SUFDSCxJQUFXLGFBQWEsQ0FBQyxLQUFhO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztJQUNqQyxD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O2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZSwgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU2t5TnVtYmVyRm9ybWF0VXRpbGl0eSB9IGZyb20gJy4uL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eSc7XG5cbmltcG9ydCB7IFNreU51bWVyaWNTeW1ib2wgfSBmcm9tICcuL251bWVyaWMtc3ltYm9sJztcbmltcG9ydCB7IE51bWVyaWNPcHRpb25zIH0gZnJvbSAnLi9udW1lcmljLm9wdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgYnJvd3NlcidzIGN1cnJlbnQgbG9jYWxlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzZXQgY3VycmVudExvY2FsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9jYWxlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9jYWxlIHx8ICdlbi1VUyc7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2hvcnRTeW1ib2w6IHN0cmluZztcblxuICBwcml2YXRlIHN5bWJvbEluZGV4OiBTa3lOdW1lcmljU3ltYm9sW10gPSBbXG4gICAgeyB2YWx1ZTogMWUxMiwgbGFiZWw6IHRoaXMuZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX3RyaWxsaW9uc19zeW1ib2wnKSB9LFxuICAgIHsgdmFsdWU6IDFlOSwgbGFiZWw6IHRoaXMuZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbCcpIH0sXG4gICAgeyB2YWx1ZTogMWU2LCBsYWJlbDogdGhpcy5nZXRTeW1ib2woJ3NreXV4X251bWVyaWNfbWlsbGlvbnNfc3ltYm9sJykgfSxcbiAgICB7IHZhbHVlOiAxZTMsIGxhYmVsOiB0aGlzLmdldFN5bWJvbCgnc2t5dXhfbnVtZXJpY190aG91c2FuZHNfc3ltYm9sJykgfSxcbiAgXTtcblxuICBwcml2YXRlIF9sb2NhbGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFNob3J0ZW5zIHdpdGggb3Igd2l0aG91dCBzeW1ib2wgKEsvTS9CL1QpIGRlcGVuZGluZyBvbiB2YWx1ZSBvZiBudW1iZXIuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgRm9ybWF0IG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIsIG9wdGlvbnM6IE51bWVyaWNPcHRpb25zKTogc3RyaW5nIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbnVsbC1rZXl3b3JkICovXG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZVJlZ0V4cCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG5cbiAgICAvLyBHZXQgdGhlIHN5bWJvbCBmb3IgdGhlIG51bWJlciBhZnRlciByb3VuZGluZywgc2luY2Ugcm91bmRpbmcgY291bGQgcHVzaCB0aGUgbnVtYmVyXG4gICAgLy8gaW50byBhIGRpZmZlcmVudCBzeW1ib2wgcmFuZ2UuXG4gICAgbGV0IHJvdW5kZWROdW1iZXIgPSB0aGlzLnJvdW5kTnVtYmVyKHZhbHVlLCBvcHRpb25zLmRpZ2l0cyk7XG4gICAgY29uc3Qgcm91bmRlZE51bWJlckFicyA9IE1hdGguYWJzKHJvdW5kZWROdW1iZXIpO1xuXG4gICAgbGV0IHN1ZmZpeCA9ICcnO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN5bWJvbEluZGV4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xJbmRleFtpXTtcblxuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLnRydW5jYXRlICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gb3B0aW9ucy50cnVuY2F0ZUFmdGVyICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gc3ltYm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgcm91bmRlZE51bWJlciA9IHRoaXMucm91bmROdW1iZXIodmFsdWUgLyBzeW1ib2wudmFsdWUsIG9wdGlvbnMuZGlnaXRzKTtcblxuICAgICAgICBpZiAoTWF0aC5hYnMocm91bmRlZE51bWJlcikgPT09IDEwMDAgJiYgaSA+IDApIHtcbiAgICAgICAgICAvLyBSb3VuZGluZyBjYXVzZWQgdGhlIG51bWJlciB0byBjcm9zcyBpbnRvIHRoZSByYW5nZSBvZiB0aGUgbmV4dCBzeW1ib2wuXG4gICAgICAgICAgc3ltYm9sID0gdGhpcy5zeW1ib2xJbmRleFtpIC0gMV07XG4gICAgICAgICAgcm91bmRlZE51bWJlciAvPSAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VmZml4ID0gc3ltYm9sLmxhYmVsO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvdXRwdXQgPVxuICAgICAgcm91bmRlZE51bWJlci50b1N0cmluZygpLnJlcGxhY2UoZGVjaW1hbFBsYWNlUmVnRXhwLCAnJDEnKSArIHN1ZmZpeDtcblxuICAgIHRoaXMuc3RvcmVTaG9ydGVuU3ltYm9sKG91dHB1dCk7XG5cbiAgICBjb25zdCBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSB8fCB0aGlzLmN1cnJlbnRMb2NhbGU7XG5cbiAgICBsZXQgZGlnaXRzOiBzdHJpbmc7XG4gICAgbGV0IGlzRGVjaW1hbDogYm9vbGVhbjtcblxuICAgIC8vIENoZWNrcyB0aGUgc3RyaW5nIGVudGVyZWQgZm9yIGZvcm1hdC4gVXNpbmcgdG9Mb3dlckNhc2UgdG8gaWdub3JlIGNhc2UuXG4gICAgc3dpdGNoIChvcHRpb25zLmZvcm1hdD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gSW4gYSBjYXNlIHdoZXJlIGEgZGVjaW1hbCB2YWx1ZSB3YXMgbm90IHNob3J0ZW5lZCBhbmRcbiAgICAgIC8vIHRoZSBkaWdpdCBpbnB1dCBpcyAyIG9yIGhpZ2hlciwgaXQgZm9yY2VzIDIgZGlnaXRzLlxuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgcHJldmVudHMgYSB2YWx1ZSBsaWtlICQxNS41MCBmcm9tIGRpc3BsYXlpbmcgYXMgJDE1LjUuXG4gICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgbmVlZCB0byBiZSByZXZpZXdlZCBpZiB3ZSBzdXBwb3J0IGN1cnJlbmNpZXMgd2l0aFxuICAgICAgLy8gdGhyZWUgZGVjaW1hbCBkaWdpdHMuXG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIGlzRGVjaW1hbCA9IHZhbHVlICUgMSAhPT0gMDtcblxuICAgICAgICBpZiAob3B0aW9ucy5taW5EaWdpdHMpIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4ke29wdGlvbnMubWluRGlnaXRzfS0ke29wdGlvbnMuZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWNpbWFsICYmIG9wdGlvbnMuZGlnaXRzID49IDIpIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4yLSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaWdpdHMgPSBgMS4wLSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJzZUZsb2F0KG91dHB1dCksXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5LFxuICAgICAgICAgIGRpZ2l0cyxcbiAgICAgICAgICBvcHRpb25zLmlzbyxcbiAgICAgICAgICAvLyBBbmd1bGFyIDUrIG5lZWRzIGEgc3RyaW5nIGZvciB0aGlzIHBhcmFtZXRlciwgYnV0IEFuZ3VsYXIgNCBuZWVkcyBhIGJvb2xlYW4uXG4gICAgICAgICAgLy8gVG8gc3VwcG9ydCBib3RoIHZlcnNpb25zIHdlIGNhbiBzdXBwbHkgJ3N5bWJvbCcgd2hpY2ggd2lsbCBldmFsdWF0ZSB0cnV0aHkgZm9yIEFuZ3VsYXIgNFxuICAgICAgICAgIC8vIGFuZCB0aGUgYXBwcm9wcmlhdGUgc3RyaW5nIHZhbHVlIGZvciBBbmd1bGFyIDUrLlxuICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vQ3VycmVuY3lQaXBlI3BhcmFtZXRlcnNcbiAgICAgICAgICAnc3ltYm9sJyBhcyBhbnksXG4gICAgICAgICAgb3B0aW9ucy5jdXJyZW5jeVNpZ25cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYSBjYXRjaC1hbGwgdG8gZW5zdXJlIHRoYXQgaWZcbiAgICAgIC8vIGFueXRoaW5nIGJ1dCBjdXJyZW5jeSAob3IgYSBmdXR1cmUgb3B0aW9uKSBhcmUgZW50ZXJlZCxcbiAgICAgIC8vIGl0IHdpbGwgYmUgdHJlYXRlZCBsaWtlIGEgbnVtYmVyLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRW5zdXJlcyBsb2NhbGl6YXRpb24gb2YgdGhlIG51bWJlciB0byBlbnN1cmUgY29tbWEgYW5kXG4gICAgICAgIC8vIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAgICAgIGlmIChvcHRpb25zLm1pbkRpZ2l0cykge1xuICAgICAgICAgIGRpZ2l0cyA9IGAxLiR7b3B0aW9ucy5taW5EaWdpdHN9LSR7b3B0aW9ucy5kaWdpdHN9YDtcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICAgICAgZGlnaXRzID0gYDEuMC0ke29wdGlvbnMuZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlnaXRzID0gYDEuJHtvcHRpb25zLmRpZ2l0c30tJHtvcHRpb25zLmRpZ2l0c31gO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gU2t5TnVtYmVyRm9ybWF0VXRpbGl0eS5mb3JtYXROdW1iZXIoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcnNlRmxvYXQob3V0cHV0KSxcbiAgICAgICAgICBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCxcbiAgICAgICAgICBkaWdpdHNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudHJ1bmNhdGUpIHtcbiAgICAgIG91dHB1dCA9IHRoaXMucmVwbGFjZVNob3J0ZW5TeW1ib2wob3V0cHV0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJvdW5kcyBhIGdpdmVuIG51bWJlclxuICAgKlxuICAgKiBKUydzIGxpbWl0YXRpb24gLSBudW1iZXJzIGJpZ2dlciB0aGFuIE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIG9yIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAqIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZSByZXByZXNlbnRlZCBvciByb3VuZGVkIGNvcnJlY3RseVxuICAgKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSB0byByb3VuZFxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIC0gd2hhdCBwcmVjaXNpb24gdG8gcm91bmQgd2l0aCwgZGVmYXVsdHMgdG8gMCBkZWNpbWFsIHBsYWNlc1xuICAgKi9cbiAgcHJpdmF0ZSByb3VuZE51bWJlcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlciA9IDApOiBudW1iZXIge1xuICAgIGlmIChwcmVjaXNpb24gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NreUludmFsaWRBcmd1bWVudDogcHJlY2lzaW9uIG11c3QgYmUgPj0gMCcpO1xuICAgIH1cblxuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1udWxsLWtleXdvcmQgKi9cbiAgICAvKiBTYW5pdHkgY2hlY2sgLSBpZ25vcmluZyBjb3ZlcmFnZSBidXQgc2hvdWxkIG5vdCBpZ25vcmUgaWYgd2UgbWFrZSB0aGlzIG1ldGhvZCBwdWJsaWMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IHNjYWxlZFZhbHVlOiBudW1iZXIgPSB0aGlzLnNjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgICAgdmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgICBjb25zdCBzY2FsZWRSb3VuZGVkVmFsdWU6IG51bWJlciA9IE1hdGgucm91bmQoc2NhbGVkVmFsdWUpO1xuICAgIGNvbnN0IHVuc2NhbGVkUm91bmRlZFZhbHVlOiBudW1iZXIgPSB0aGlzLnNjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgICAgc2NhbGVkUm91bmRlZFZhbHVlLFxuICAgICAgcHJlY2lzaW9uLFxuICAgICAgZmFsc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc2NhbGVkUm91bmRlZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYWxlcyBhIGdpdmVuIG51bWJlciBieSBhIHBvd2VyIG9mIDEwXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHNjYWxlXG4gICAqIEBwYXJhbSBzY2FsYXIgLSAxMF5zY2FsYXJcbiAgICogQHBhcmFtIHNjYWxlVXAgLSB3aGV0aGVyIHRvIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBzY2FsZU51bWJlckJ5UG93ZXJPZlRlbihcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIHNjYWxhcjogbnVtYmVyLFxuICAgIHNjYWxlVXA6IGJvb2xlYW5cbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWx1ZVN0cjogc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlzRXhwb25lbnRGb3JtYXQ6IGJvb2xlYW4gPSB2YWx1ZVN0ci5pbmNsdWRlcygnZScpO1xuXG4gICAgaWYgKGlzRXhwb25lbnRGb3JtYXQpIHtcbiAgICAgIGNvbnN0IFtiYXNlLCBleHBdID0gdmFsdWVTdHIuc3BsaXQoJ2UnKTtcbiAgICAgIGNvbnN0IG5ld0V4cCA9IHNjYWxlVXAgPyBOdW1iZXIoZXhwKSArIHNjYWxhciA6IE51bWJlcihleHApIC0gc2NhbGFyO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHtiYXNlfWUke25ld0V4cH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZSA9IHNjYWxlVXAgPyAnZScgOiAnZS0nO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHt2YWx1ZX0ke2V9JHtzY2FsYXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgc3ltYm9sIGFkZGVkIGZyb20gc2hvcnRlbmluZyB0byByZWFwcGx5IGxhdGVyLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBkZXJpdmUgdGhlIHNob3J0ZW4gc3ltYm9sIGZyb20uXG4gICAqL1xuICBwcml2YXRlIHN0b3JlU2hvcnRlblN5bWJvbCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3ltYm9sczogc3RyaW5nW10gPSB0aGlzLnN5bWJvbEluZGV4Lm1hcCgocykgPT4gcy5sYWJlbCk7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChzeW1ib2xzLmpvaW4oJ3wnKSwgJ2lnJyk7XG4gICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdleHApO1xuICAgIHRoaXMuc2hvcnRTeW1ib2wgPSBtYXRjaCA/IG1hdGNoLnRvU3RyaW5nKCkgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXN0IGhhdmUgcHJldmlvdXNseSBjYWxsZWQgc3RvcmVTaG9ydGVuU3ltYm9sIHRvIGhhdmUgc29tZXRoaW5nIHRvIHJlcGxhY2UuXG4gICAqIEZpbmRzIHRoZSBsYXN0IG51bWJlciBpbiB0aGUgZm9ybWF0dGVkIG51bWJlciwgZ2V0cyB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uXG4gICAqIGFmdGVyIHRoYXQgY2hhcmFjdGVyIGFuZCByZS1pbnNlcnRzIHRoZSBzeW1ib2wuXG4gICAqIFdvcmtzIHJlZ2FyZGxlc3Mgb2YgY3VycmVuY3kgc3ltYm9sIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAqL1xuICBwcml2YXRlIHJlcGxhY2VTaG9ydGVuU3ltYm9sKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc3VsdCA9IC8oXFxkKSg/IS4qXFxkKS9nLmV4ZWModmFsdWUpO1xuICAgIGNvbnN0IHBvcyA9IHJlc3VsdC5pbmRleCArIHJlc3VsdC5sZW5ndGg7XG4gICAgY29uc3Qgb3V0cHV0ID1cbiAgICAgIHZhbHVlLnN1YnN0cmluZygwLCBwb3MpICsgdGhpcy5zaG9ydFN5bWJvbCArIHZhbHVlLnN1YnN0cmluZyhwb3MpO1xuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ltYm9sKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUT0RPOiBOZWVkIHRvIGltcGxlbWVudCB0aGUgYXN5bmMgYGdldFN0cmluZ2AgbWV0aG9kIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHJldHVybiB0aGlzLnJlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nRm9yTG9jYWxlKHsgbG9jYWxlOiAnZW5fVVMnIH0sIGtleSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { Injectable, RendererFactory2 } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * @internal
5
+ */
6
+ export class SkyOverlayAdapterService {
7
+ constructor(rendererFactory) {
8
+ this.renderer = rendererFactory.createRenderer(undefined, undefined);
9
+ }
10
+ restrictBodyScroll() {
11
+ // Create a style element to avoid overwriting any existing inline body styles.
12
+ const styleElement = this.renderer.createElement('style');
13
+ const textNode = this.renderer.createText('body { overflow: hidden }');
14
+ // Apply a `data-` attribute to make unit testing easier.
15
+ this.renderer.setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');
16
+ this.renderer.appendChild(styleElement, textNode);
17
+ this.renderer.appendChild(document.head, styleElement);
18
+ if (this.styleElement) {
19
+ this.destroyStyleElement();
20
+ }
21
+ this.styleElement = styleElement;
22
+ }
23
+ releaseBodyScroll() {
24
+ this.destroyStyleElement();
25
+ }
26
+ destroyStyleElement() {
27
+ /* istanbul ignore else */
28
+ if (this.styleElement.parentElement === document.head) {
29
+ this.renderer.removeChild(document.head, this.styleElement);
30
+ }
31
+ }
32
+ }
33
+ SkyOverlayAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
34
+ SkyOverlayAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{
36
+ type: Injectable,
37
+ args: [{
38
+ providedIn: 'root',
39
+ }]
40
+ }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV4RTs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFBWSxlQUFpQztRQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsK0VBQStFO1FBQy9FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFdkUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUN4QixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLG9DQUFvQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDN0Q7SUFDSCxDQUFDOztxSEF4Q1Usd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5QWRhcHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgcHJpdmF0ZSBzdHlsZUVsZW1lbnQ6IEhUTUxTdHlsZUVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgcmVzdHJpY3RCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgIC8vIENyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIGlubGluZSBib2R5IHN0eWxlcy5cbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgY29uc3QgdGV4dE5vZGUgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVuIH0nKTtcblxuICAgIC8vIEFwcGx5IGEgYGRhdGEtYCBhdHRyaWJ1dGUgdG8gbWFrZSB1bml0IHRlc3RpbmcgZWFzaWVyLlxuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxuICAgICAgc3R5bGVFbGVtZW50LFxuICAgICAgJ2RhdGEtdGVzdC1zZWxlY3RvcicsXG4gICAgICAnc2t5LW92ZXJsYXktcmVzdHJpY3Qtc2Nyb2xsLXN0eWxlcydcbiAgICApO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRleHROb2RlKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmhlYWQsIHN0eWxlRWxlbWVudCk7XG5cbiAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHJlbGVhc2VCb2R5U2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U3R5bGVFbGVtZW50KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IGRvY3VtZW50LmhlYWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuaGVhZCwgdGhpcy5zdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lPdmVybGF5Q29uZmlnIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0aGUgb3ZlcmxheSBzaG91bGQgYmUgY2xvc2VkIGFmdGVyIGEgbmF2aWdhdGlvbiBjaGFuZ2UuXG4gICAqL1xuICBjbG9zZU9uTmF2aWdhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0aGUgb3ZlcmxheSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gYSB1c2VyIGNsaWNrcyBvdXRzaWRlIHRoZSBvdmVybGF5J3MgY29udGVudC5cbiAgICovXG4gIGVuYWJsZUNsb3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIG1vdXNlIGludGVyYWN0aW9ucyBzaG91bGQgYmUgYWxsb3dlZCBiZWxvdyB0aGUgYmFja2Ryb3AuXG4gICAqL1xuICBlbmFibGVQb2ludGVyRXZlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGlmIHdpbmRvdyBzY3JvbGxpbmcgc2hvdWxkIGJlIGVuYWJsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqL1xuICBlbmFibGVTY3JvbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIG92ZXJsYXkncyBiYWNrZHJvcCBzaG91bGQgYmUgdmlzaWJsZS5cbiAgICovXG4gIHNob3dCYWNrZHJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBleHRyYSBDU1MgY2xhc3NlcyB0byBiZSBhZGRlZCB0byB0aGUgb3ZlcmxheSdzIHdyYXBwZXIgZWxlbWVudC5cbiAgICovXG4gIHdyYXBwZXJDbGFzcz86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provides contextual information to each overlay created.
3
+ * @internal
4
+ */
5
+ export class SkyOverlayContext {
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNEIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFBRyxDQUFDO0NBQ3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gdG8gZWFjaCBvdmVybGF5IGNyZWF0ZWQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreU92ZXJsYXlDb250ZXh0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNvbmZpZzogU2t5T3ZlcmxheUNvbmZpZykge31cbn1cbiJdfQ==