@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,251 @@
1
+ const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
2
+ const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
3
+ let styleEl;
4
+ let nextIdIndex;
5
+ function ensureStyleEl() {
6
+ if (!styleEl) {
7
+ styleEl = document.createElement('style');
8
+ const css = document.createTextNode(`
9
+ .${CLS_VIEWKEEPER_FIXED} {
10
+ position: fixed !important;
11
+ z-index: 999;
12
+ opacity: 0.95;
13
+ overflow: hidden;
14
+ }
15
+
16
+ .sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
17
+ box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
18
+ opacity: initial;
19
+ }
20
+ `);
21
+ styleEl.appendChild(css);
22
+ document.head.appendChild(styleEl);
23
+ }
24
+ }
25
+ function nextId() {
26
+ nextIdIndex = (nextIdIndex || 0) + 1;
27
+ return 'viewkeeper-' + nextIdIndex;
28
+ }
29
+ function getOffset(el, scrollableHost) {
30
+ const rect = el.getBoundingClientRect();
31
+ const parent = scrollableHost ? scrollableHost : document.documentElement;
32
+ return {
33
+ top: rect.top + parent.scrollTop,
34
+ left: rect.left + parent.scrollLeft,
35
+ };
36
+ }
37
+ function px(value) {
38
+ let pxValue = value ? value.toString() : '';
39
+ if (typeof value === 'number') {
40
+ pxValue = value + 'px';
41
+ }
42
+ return pxValue;
43
+ }
44
+ function setElPosition(el, left, top, width, marginTop) {
45
+ el.style.top = px(top);
46
+ el.style.left = px(left);
47
+ el.style.marginTop = px(marginTop);
48
+ /*istanbul ignore else*/
49
+ /* sanity check */
50
+ if (width !== null) {
51
+ el.style.width = px(width);
52
+ }
53
+ }
54
+ function getHeightWithMargin(el) {
55
+ const computedStyle = getComputedStyle(el);
56
+ return (el.offsetHeight +
57
+ parseInt(computedStyle.marginTop, 10) +
58
+ parseInt(computedStyle.marginBottom, 10));
59
+ }
60
+ function createCustomEvent(name) {
61
+ const evt = document.createEvent('CustomEvent');
62
+ evt.initCustomEvent(name, false, false, undefined);
63
+ return evt;
64
+ }
65
+ export class SkyViewkeeper {
66
+ constructor(options) {
67
+ options = options || /* istanbul ignore next */ {};
68
+ this.setWidth = options.setWidth;
69
+ this.id = nextId();
70
+ this.el = options.el;
71
+ this.boundaryEl = options.boundaryEl;
72
+ this.scrollableHost = options.scrollableHost;
73
+ this.verticalOffset = options.verticalOffset || 0;
74
+ this.verticalOffsetEl = options.verticalOffsetEl;
75
+ this.viewportMarginTop = options.viewportMarginTop || 0;
76
+ this.syncElPositionHandler = () => this.syncElPosition();
77
+ if (this.verticalOffsetEl) {
78
+ this.verticalOffsetEl.addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.syncElPositionHandler);
79
+ }
80
+ window.addEventListener('scroll', this.syncElPositionHandler, true);
81
+ window.addEventListener('resize', this.syncElPositionHandler);
82
+ window.addEventListener('orientationchange', this.syncElPositionHandler);
83
+ ensureStyleEl();
84
+ this.syncElPosition();
85
+ }
86
+ set viewportMarginTop(margin) {
87
+ this._viewportMarginTop = margin;
88
+ }
89
+ get viewportMarginTop() {
90
+ if (this.scrollableHost) {
91
+ return 0;
92
+ }
93
+ else {
94
+ return this._viewportMarginTop;
95
+ }
96
+ }
97
+ syncElPosition() {
98
+ const verticalOffset = this.calculateVerticalOffset();
99
+ // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.
100
+ if (this.el.offsetWidth === 0 && this.el.offsetHeight === 0) {
101
+ return;
102
+ }
103
+ const boundaryInfo = this.getBoundaryInfo();
104
+ const fixedStyles = this.getFixedStyles(boundaryInfo, verticalOffset);
105
+ const doFixEl = this.shouldFixEl(boundaryInfo, verticalOffset);
106
+ if (this.needsUpdating(doFixEl, fixedStyles)) {
107
+ if (doFixEl) {
108
+ this.fixEl(boundaryInfo, fixedStyles);
109
+ }
110
+ else {
111
+ this.unfixEl();
112
+ }
113
+ }
114
+ const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
115
+ this.el.dispatchEvent(evt);
116
+ }
117
+ destroy() {
118
+ if (!this.isDestroyed) {
119
+ window.removeEventListener('scroll', this.syncElPositionHandler, true);
120
+ window.removeEventListener('resize', this.syncElPositionHandler);
121
+ window.removeEventListener('orientationchange', this.syncElPositionHandler);
122
+ this.unfixEl();
123
+ if (this.verticalOffsetEl) {
124
+ this.verticalOffsetEl.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.syncElPositionHandler);
125
+ }
126
+ this.el = this.boundaryEl = this.verticalOffsetEl = undefined;
127
+ this.isDestroyed = true;
128
+ }
129
+ }
130
+ getSpacerId() {
131
+ return this.id + '-spacer';
132
+ }
133
+ unfixEl() {
134
+ const spacerEl = document.getElementById(this.getSpacerId());
135
+ if (spacerEl) {
136
+ spacerEl.parentElement.removeChild(spacerEl);
137
+ }
138
+ this.el.classList.remove(CLS_VIEWKEEPER_FIXED);
139
+ this.currentElFixedLeft =
140
+ this.currentElFixedTop =
141
+ this.currentElFixedWidth =
142
+ undefined;
143
+ let width;
144
+ if (this.setWidth) {
145
+ width = 'auto';
146
+ }
147
+ setElPosition(this.el, '', '', width, '');
148
+ }
149
+ calculateVerticalOffset() {
150
+ let offset = this.verticalOffset;
151
+ if (this.verticalOffsetEl) {
152
+ const verticalOffsetElTopStyle = this.verticalOffsetEl.style.top;
153
+ const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;
154
+ offset += this.verticalOffsetEl.offsetHeight + verticalOffsetElTop;
155
+ }
156
+ else if (this.scrollableHost) {
157
+ offset += this.scrollableHost.getBoundingClientRect().top;
158
+ }
159
+ return offset;
160
+ }
161
+ shouldFixEl(boundaryInfo, verticalOffset) {
162
+ let anchorTop;
163
+ if (boundaryInfo.spacerEl) {
164
+ anchorTop = getOffset(boundaryInfo.spacerEl, this.scrollableHost).top;
165
+ }
166
+ else {
167
+ anchorTop = getOffset(this.el, this.scrollableHost).top;
168
+ }
169
+ const doFixEl = boundaryInfo.scrollTop + verticalOffset + this.viewportMarginTop >
170
+ anchorTop;
171
+ return doFixEl;
172
+ }
173
+ getFixedStyles(boundaryInfo, verticalOffset) {
174
+ // If the element needs to be fixed, this will calculate its position. The position
175
+ // will be 0 (fully visible) unless the user is scrolling the boundary out of view.
176
+ // In that case, the element should begin to scroll out of view with the
177
+ // rest of the boundary by setting its top position to a negative value.
178
+ const elFixedTop = Math.min(boundaryInfo.boundaryBottom -
179
+ boundaryInfo.elHeight -
180
+ boundaryInfo.scrollTop, verticalOffset);
181
+ const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
182
+ const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
183
+ return {
184
+ elFixedLeft,
185
+ elFixedTop,
186
+ elFixedWidth,
187
+ };
188
+ }
189
+ needsUpdating(doFixEl, fixedStyles) {
190
+ if ((doFixEl &&
191
+ this.currentElFixedLeft === fixedStyles.elFixedLeft &&
192
+ this.currentElFixedTop === fixedStyles.elFixedTop &&
193
+ this.currentElFixedWidth === fixedStyles.elFixedWidth) ||
194
+ (!doFixEl &&
195
+ !(this.currentElFixedLeft !== undefined &&
196
+ this.currentElFixedLeft !== null))) {
197
+ // The element is either currently fixed and its position and width do not need
198
+ // to change, or the element is not currently fixed and does not need to be fixed.
199
+ // No changes are needed.
200
+ return false;
201
+ }
202
+ return true;
203
+ }
204
+ fixEl(boundaryInfo, fixedStyles) {
205
+ const el = this.el;
206
+ /* istanbul ignore else */
207
+ /* sanity check */
208
+ if (!boundaryInfo.spacerEl) {
209
+ const spacerHeight = boundaryInfo.elHeight;
210
+ const spacerEl = document.createElement('div');
211
+ spacerEl.id = boundaryInfo.spacerId;
212
+ spacerEl.style.height = px(spacerHeight);
213
+ el.parentNode.insertBefore(spacerEl, el.nextSibling);
214
+ }
215
+ el.classList.add(CLS_VIEWKEEPER_FIXED);
216
+ this.currentElFixedTop = fixedStyles.elFixedTop;
217
+ this.currentElFixedLeft = fixedStyles.elFixedLeft;
218
+ this.currentElFixedWidth = fixedStyles.elFixedWidth;
219
+ let width;
220
+ if (this.setWidth) {
221
+ width = fixedStyles.elFixedWidth;
222
+ }
223
+ setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, this.viewportMarginTop);
224
+ }
225
+ getBoundaryInfo() {
226
+ const spacerId = this.getSpacerId();
227
+ const spacerEl = document.getElementById(spacerId);
228
+ const boundaryEl = this.boundaryEl;
229
+ const boundaryOffset = getOffset(boundaryEl, this.scrollableHost);
230
+ const boundaryTop = boundaryOffset.top;
231
+ const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;
232
+ const scrollLeft = this.scrollableHost
233
+ ? this.scrollableHost.scrollLeft
234
+ : document.documentElement.scrollLeft;
235
+ const scrollTop = this.scrollableHost
236
+ ? this.scrollableHost.scrollTop
237
+ : document.documentElement.scrollTop;
238
+ const elHeight = getHeightWithMargin(this.el);
239
+ return {
240
+ boundaryBottom,
241
+ boundaryOffset,
242
+ boundaryEl,
243
+ elHeight,
244
+ scrollLeft,
245
+ scrollTop,
246
+ spacerId,
247
+ spacerEl,
248
+ };
249
+ }
250
+ }
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDO0FBRXhELElBQUksT0FBeUIsQ0FBQztBQUM5QixJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxhQUFhO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0dBQ3JDLG9CQUFvQjs7Ozs7OztxQkFPRixvQkFBb0I7Ozs7Q0FJeEMsQ0FBQyxDQUFDO1FBRUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNwQztBQUNILENBQUM7QUFFRCxTQUFTLE1BQU07SUFDYixXQUFXLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQ2hCLEVBQWUsRUFDZixjQUE0QjtJQUU1QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUUxRSxPQUFPO1FBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdB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dmlld2tlZXBlci1ib3VuZGFyeS1pbmZvJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB9IGZyb20gJy4vdmlld2tlZXBlci1maXhlZC1zdHlsZXMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9mZnNldCB9IGZyb20gJy4vdmlld2tlZXBlci1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkJztcbmNvbnN0IEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMgPSAnYWZ0ZXJWaWV3a2VlcGVyU3luYyc7XG5cbmxldCBzdHlsZUVsOiBIVE1MU3R5bGVFbGVtZW50O1xubGV0IG5leHRJZEluZGV4OiBudW1iZXI7XG5cbmZ1bmN0aW9uIGVuc3VyZVN0eWxlRWwoKTogdm9pZCB7XG4gIGlmICghc3R5bGVFbCkge1xuICAgIHN0eWxlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxuLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3BhY2l0eTogMC45NTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNreS10aGVtZS1tb2Rlcm4gLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA4cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIG9wYWNpdHk6IGluaXRpYWw7XG59XG5gKTtcblxuICAgIHN0eWxlRWwuYXBwZW5kQ2hpbGQoY3NzKTtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dElkKCk6IHN0cmluZyB7XG4gIG5leHRJZEluZGV4ID0gKG5leHRJZEluZGV4IHx8IDApICsgMTtcblxuICByZXR1cm4gJ3ZpZXdrZWVwZXItJyArIG5leHRJZEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgc2Nyb2xsYWJsZUhvc3Q/OiBIVE1MRWxlbWVudFxuKTogU2t5Vmlld2tlZXBlck9mZnNldCB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50ID0gc2Nyb2xsYWJsZUhvc3QgPyBzY3JvbGxhYmxlSG9zdCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgIGxlZnQ6IHJlY3QubGVmdCArIHBhcmVudC5zY3JvbGxMZWZ0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBweCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHB4VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHB4VmFsdWUgPSB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gcHhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0RWxQb3NpdGlvbihcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBsZWZ0OiBudW1iZXIgfCBzdHJpbmcsXG4gIHRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nLFxuICBtYXJnaW5Ub3A6IG51bWJlciB8IHN0cmluZ1xuKTogdm9pZCB7XG4gIGVsLnN0eWxlLnRvcCA9IHB4KHRvcCk7XG4gIGVsLnN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgZWwuc3R5bGUubWFyZ2luVG9wID0gcHgobWFyZ2luVG9wKTtcblxuICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgLyogc2FuaXR5IGNoZWNrICovXG4gIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgIGVsLnN0eWxlLndpZHRoID0gcHgod2lkdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEhlaWdodFdpdGhNYXJnaW4oZWw6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuXG4gIHJldHVybiAoXG4gICAgZWwub2Zmc2V0SGVpZ2h0ICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpblRvcCwgMTApICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSwgMTApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUV2ZW50KG5hbWU6IGFueSk6IEN1c3RvbUV2ZW50PGFueT4ge1xuICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcblxuICBldnQuaW5pdEN1c3RvbUV2ZW50KG5hbWUsIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkKTtcblxuICByZXR1cm4gZXZ0O1xufVxuXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlciB7XG4gIHByaXZhdGUgc2V0V2lkdGg6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgZWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgYm91bmRhcnlFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSB2ZXJ0aWNhbE9mZnNldDogbnVtYmVyO1xuXG4gIHByaXZhdGUgdmVydGljYWxPZmZzZXRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBzZXQgdmlld3BvcnRNYXJnaW5Ub3AobWFyZ2luOiBudW1iZXIpIHtcbiAgICB0aGlzLl92aWV3cG9ydE1hcmdpblRvcCA9IG1hcmdpbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHZpZXdwb3J0TWFyZ2luVG9wKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRNYXJnaW5Ub3A7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0Rlc3Ryb3llZDogYm9vbGVhbjtcblxuICBwcml2YXRlIGN1cnJlbnRFbEZpeGVkVG9wOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBjdXJyZW50RWxGaXhlZExlZnQ6IG51bWJlcjtcblxuICBwcml2YXRlIGN1cnJlbnRFbEZpeGVkV2lkdGg6IG51bWJlcjtcblxuICBwcml2YXRlIHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHN5bmNFbFBvc2l0aW9uSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF92aWV3cG9ydE1hcmdpblRvcDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307XG5cbiAgICB0aGlzLnNldFdpZHRoID0gb3B0aW9ucy5zZXRXaWR0aDtcbiAgICB0aGlzLmlkID0gbmV4dElkKCk7XG4gICAgdGhpcy5lbCA9IG9wdGlvbnMuZWw7XG4gICAgdGhpcy5ib3VuZGFyeUVsID0gb3B0aW9ucy5ib3VuZGFyeUVsO1xuICAgIHRoaXMuc2Nyb2xsYWJsZUhvc3QgPSBvcHRpb25zLnNjcm9sbGFibGVIb3N0O1xuICAgIHRoaXMudmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy52ZXJ0aWNhbE9mZnNldEVsID0gb3B0aW9ucy52ZXJ0aWNhbE9mZnNldEVsO1xuICAgIHRoaXMudmlld3BvcnRNYXJnaW5Ub3AgPSBvcHRpb25zLnZpZXdwb3J0TWFyZ2luVG9wIHx8IDA7XG5cbiAgICB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlciA9ICgpID0+IHRoaXMuc3luY0VsUG9zaXRpb24oKTtcblxuICAgIGlmICh0aGlzLnZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgIHRoaXMudmVydGljYWxPZmZzZXRFbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuXG4gICAgZW5zdXJlU3R5bGVFbCgpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHN5bmNFbFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy5jYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlLCBpdHMgc2l6ZSBjYW4ndCBiZSBjYWxjdWxhdGVkLCBzbyBkb24ndCBhdHRlbXB0IHN5bmNpbmcgcG9zaXRpb24gaW4gdGhpcyBjYXNlLlxuICAgIGlmICh0aGlzLmVsLm9mZnNldFdpZHRoID09PSAwICYmIHRoaXMuZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRhcnlJbmZvID0gdGhpcy5nZXRCb3VuZGFyeUluZm8oKTtcbiAgICBjb25zdCBmaXhlZFN0eWxlcyA9IHRoaXMuZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy5zaG91bGRGaXhFbChib3VuZGFyeUluZm8sIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLm5lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLmZpeEVsKGJvdW5kYXJ5SW5mbywgZml4ZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51bmZpeEVsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZ0ID0gY3JlYXRlQ3VzdG9tRXZlbnQoRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyk7XG5cbiAgICB0aGlzLmVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudW5maXhFbCgpO1xuXG4gICAgICBpZiAodGhpcy52ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICAgIHRoaXMudmVydGljYWxPZmZzZXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbCA9IHRoaXMuYm91bmRhcnlFbCA9IHRoaXMudmVydGljYWxPZmZzZXRFbCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkICsgJy1zcGFjZXInO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmZpeEVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRTcGFjZXJJZCgpKTtcblxuICAgIGlmIChzcGFjZXJFbCkge1xuICAgICAgc3BhY2VyRWwucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChzcGFjZXJFbCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRUb3AgPVxuICAgICAgdGhpcy5jdXJyZW50RWxGaXhlZFdpZHRoID1cbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHdpZHRoOiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy5zZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbih0aGlzLmVsLCAnJywgJycsIHdpZHRoLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVZlcnRpY2FsT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMudmVydGljYWxPZmZzZXQ7XG5cbiAgICBpZiAodGhpcy52ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUgPSB0aGlzLnZlcnRpY2FsT2Zmc2V0RWwuc3R5bGUudG9wO1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcCA9IHBhcnNlSW50KHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSwgMTApIHx8IDA7XG5cbiAgICAgIG9mZnNldCArPSB0aGlzLnZlcnRpY2FsT2Zmc2V0RWwub2Zmc2V0SGVpZ2h0ICsgdmVydGljYWxPZmZzZXRFbFRvcDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIG9mZnNldCArPSB0aGlzLnNjcm9sbGFibGVIb3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRGaXhFbChcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBib29sZWFuIHtcbiAgICBsZXQgYW5jaG9yVG9wOiBudW1iZXI7XG5cbiAgICBpZiAoYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoYm91bmRhcnlJbmZvLnNwYWNlckVsLCB0aGlzLnNjcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldCh0aGlzLmVsLCB0aGlzLnNjcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfVxuXG4gICAgY29uc3QgZG9GaXhFbCA9XG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wICsgdmVydGljYWxPZmZzZXQgKyB0aGlzLnZpZXdwb3J0TWFyZ2luVG9wID5cbiAgICAgIGFuY2hvclRvcDtcblxuICAgIHJldHVybiBkb0ZpeEVsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXhlZFN0eWxlcyhcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGZpeGVkLCB0aGlzIHdpbGwgY2FsY3VsYXRlIGl0cyBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvblxuICAgIC8vIHdpbGwgYmUgMCAoZnVsbHkgdmlzaWJsZSkgdW5sZXNzIHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0aGUgYm91bmRhcnkgb3V0IG9mIHZpZXcuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGQgYmVnaW4gdG8gc2Nyb2xsIG91dCBvZiB2aWV3IHdpdGggdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgYm91bmRhcnkgYnkgc2V0dGluZyBpdHMgdG9wIHBvc2l0aW9uIHRvIGEgbmVnYXRpdmUgdmFsdWUuXG4gICAgY29uc3QgZWxGaXhlZFRvcCA9IE1hdGgubWluKFxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5Qm90dG9tIC1cbiAgICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCxcbiAgICAgIHZlcnRpY2FsT2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGVsRml4ZWRXaWR0aCA9IGJvdW5kYXJ5SW5mby5ib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IGVsRml4ZWRMZWZ0ID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeU9mZnNldC5sZWZ0IC0gYm91bmRhcnlJbmZvLnNjcm9sbExlZnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxGaXhlZExlZnQsXG4gICAgICBlbEZpeGVkVG9wLFxuICAgICAgZWxGaXhlZFdpZHRoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5lZWRzVXBkYXRpbmcoXG4gICAgZG9GaXhFbDogYm9vbGVhbixcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIChkb0ZpeEVsICYmXG4gICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdCAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRFbEZpeGVkVG9wID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wICYmXG4gICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRXaWR0aCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoKSB8fFxuICAgICAgKCFkb0ZpeEVsICYmXG4gICAgICAgICEoXG4gICAgICAgICAgdGhpcy5jdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ICE9PSBudWxsXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBlaXRoZXIgY3VycmVudGx5IGZpeGVkIGFuZCBpdHMgcG9zaXRpb24gYW5kIHdpZHRoIGRvIG5vdCBuZWVkXG4gICAgICAvLyB0byBjaGFuZ2UsIG9yIHRoZSBlbGVtZW50IGlzIG5vdCBjdXJyZW50bHkgZml4ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgZml4ZWQuXG4gICAgICAvLyBObyBjaGFuZ2VzIGFyZSBuZWVkZWQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGZpeEVsKFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKCFib3VuZGFyeUluZm8uc3BhY2VyRWwpIHtcbiAgICAgIGNvbnN0IHNwYWNlckhlaWdodCA9IGJvdW5kYXJ5SW5mby5lbEhlaWdodDtcblxuICAgICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHNwYWNlckVsLmlkID0gYm91bmRhcnlJbmZvLnNwYWNlcklkO1xuICAgICAgc3BhY2VyRWwuc3R5bGUuaGVpZ2h0ID0gcHgoc3BhY2VySGVpZ2h0KTtcblxuICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuY3VycmVudEVsRml4ZWRUb3AgPSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wO1xuICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQ7XG4gICAgdGhpcy5jdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoOiBudW1iZXI7XG5cbiAgICBpZiAodGhpcy5zZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLnZpZXdwb3J0TWFyZ2luVG9wXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Qm91bmRhcnlJbmZvKCk6IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8ge1xuICAgIGNvbnN0IHNwYWNlcklkID0gdGhpcy5nZXRTcGFjZXJJZCgpO1xuXG4gICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFjZXJJZCk7XG5cbiAgICBjb25zdCBib3VuZGFyeUVsID0gdGhpcy5ib3VuZGFyeUVsO1xuXG4gICAgY29uc3QgYm91bmRhcnlPZmZzZXQgPSBnZXRPZmZzZXQoYm91bmRhcnlFbCwgdGhpcy5zY3JvbGxhYmxlSG9zdCk7XG4gICAgY29uc3QgYm91bmRhcnlUb3AgPSBib3VuZGFyeU9mZnNldC50b3A7XG4gICAgY29uc3QgYm91bmRhcnlCb3R0b20gPVxuICAgICAgYm91bmRhcnlUb3AgKyBib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsTGVmdFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLnNjcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsVG9wXG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBlbEhlaWdodCA9IGdldEhlaWdodFdpdGhNYXJnaW4odGhpcy5lbCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm91bmRhcnlCb3R0b20sXG4gICAgICBib3VuZGFyeU9mZnNldCxcbiAgICAgIGJvdW5kYXJ5RWwsXG4gICAgICBlbEhlaWdodCxcbiAgICAgIHNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzcGFjZXJJZCxcbiAgICAgIHNwYWNlckVsLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SkyViewkeeperDirective } from './viewkeeper.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class SkyViewkeeperModule {
5
+ }
6
+ SkyViewkeeperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ SkyViewkeeperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] });
8
+ SkyViewkeeperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperModule });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ declarations: [SkyViewkeeperDirective],
13
+ exports: [SkyViewkeeperDirective],
14
+ }]
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU1oRSxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBSGYsc0JBQXNCLGFBQzNCLHNCQUFzQjtpSEFFckIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVZpZXdrZWVwZXJEaXJlY3RpdmUgfSBmcm9tICcuL3ZpZXdrZWVwZXIuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5Vmlld2tlZXBlckRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtTa3lWaWV3a2VlcGVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,39 @@
1
+ import { Injectable, Optional } from '@angular/core';
2
+ import { SkyViewkeeper } from './viewkeeper';
3
+ import { SkyViewkeeperHostOptions } from './viewkeeper-host-options';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./viewkeeper-host-options";
6
+ /**
7
+ * Provides methods for creating and destroying viewkeeper instances.
8
+ */
9
+ export class SkyViewkeeperService {
10
+ constructor(hostOptions) {
11
+ this.hostOptions = hostOptions;
12
+ }
13
+ /**
14
+ *
15
+ * @param options Creates a viewkeeper instance, applying host options where applicable.
16
+ */
17
+ create(options) {
18
+ options = Object.assign({}, this.hostOptions || {}, options);
19
+ return new SkyViewkeeper(options);
20
+ }
21
+ /**
22
+ * Destroys a viewkeeper instance.
23
+ * @param vk Viewkeeper instance to destroy.
24
+ */
25
+ destroy(vk) {
26
+ vk.destroy();
27
+ }
28
+ }
29
+ SkyViewkeeperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: i1.SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
30
+ SkyViewkeeperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyViewkeeperService, decorators: [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root',
35
+ }]
36
+ }], ctorParameters: function () { return [{ type: i1.SkyViewkeeperHostOptions, decorators: [{
37
+ type: Optional
38
+ }] }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUdyRTs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBZ0MsV0FBc0M7UUFBdEMsZ0JBQVcsR0FBWCxXQUFXLENBQTJCO0lBQUcsQ0FBQztJQUUxRTs7O09BR0c7SUFDSSxNQUFNLENBQUMsT0FBNkI7UUFDekMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTdELE9BQU8sSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU8sQ0FBQyxFQUFpQjtRQUM5QixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixDQUFDOztpSEFuQlUsb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFFYyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlciB9IGZyb20gJy4vdmlld2tlZXBlcic7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItaG9zdC1vcHRpb25zJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJPcHRpb25zIH0gZnJvbSAnLi92aWV3a2VlcGVyLW9wdGlvbnMnO1xuXG4vKipcbiAqIFByb3ZpZGVzIG1ldGhvZHMgZm9yIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIHZpZXdrZWVwZXIgaW5zdGFuY2VzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBwcml2YXRlIGhvc3RPcHRpb25zPzogU2t5Vmlld2tlZXBlckhvc3RPcHRpb25zKSB7fVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBDcmVhdGVzIGEgdmlld2tlZXBlciBpbnN0YW5jZSwgYXBwbHlpbmcgaG9zdCBvcHRpb25zIHdoZXJlIGFwcGxpY2FibGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKTogU2t5Vmlld2tlZXBlciB7XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaG9zdE9wdGlvbnMgfHwge30sIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIG5ldyBTa3lWaWV3a2VlcGVyKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHZrIFZpZXdrZWVwZXIgaW5zdGFuY2UgdG8gZGVzdHJveS5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KHZrOiBTa3lWaWV3a2VlcGVyKTogdm9pZCB7XG4gICAgdmsuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * @internal
5
+ */
6
+ export function getWindow() {
7
+ return window;
8
+ }
9
+ /**
10
+ * The application window reference service references the global window variable.
11
+ * After users inject SkyAppWindowRef into a component, they can use the service to interact with
12
+ * window properties and event handlers by referencing its nativeWindow property.
13
+ */
14
+ export class SkyAppWindowRef {
15
+ /**
16
+ * References the global `window` variable.
17
+ */
18
+ get nativeWindow() {
19
+ return getWindow();
20
+ }
21
+ }
22
+ SkyAppWindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
+ SkyAppWindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyAppWindowRef, decorators: [{
25
+ type: Injectable,
26
+ args: [{
27
+ providedIn: 'root',
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy93aW5kb3cvd2luZG93LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFDMUI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs0R0FOVSxlQUFlO2dIQUFmLGVBQWUsY0FGZCxNQUFNOzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93KCk6IGFueSB7XG4gIHJldHVybiB3aW5kb3c7XG59XG5cbi8qKlxuICogVGhlIGFwcGxpY2F0aW9uIHdpbmRvdyByZWZlcmVuY2Ugc2VydmljZSByZWZlcmVuY2VzIHRoZSBnbG9iYWwgd2luZG93IHZhcmlhYmxlLlxuICogQWZ0ZXIgdXNlcnMgaW5qZWN0IFNreUFwcFdpbmRvd1JlZiBpbnRvIGEgY29tcG9uZW50LCB0aGV5IGNhbiB1c2UgdGhlIHNlcnZpY2UgdG8gaW50ZXJhY3Qgd2l0aFxuICogd2luZG93IHByb3BlcnRpZXMgYW5kIGV2ZW50IGhhbmRsZXJzIGJ5IHJlZmVyZW5jaW5nIGl0cyBuYXRpdmVXaW5kb3cgcHJvcGVydHkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBXaW5kb3dSZWYge1xuICAvKipcbiAgICogUmVmZXJlbmNlcyB0aGUgZ2xvYmFsIGB3aW5kb3dgIHZhcmlhYmxlLlxuICAgKi9cbiAgcHVibGljIGdldCBuYXRpdmVXaW5kb3coKTogYW55IHtcbiAgICByZXR1cm4gZ2V0V2luZG93KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9za3l1eC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,41 @@
1
+ import { Injectable, NgZone } from '@angular/core';
2
+ import { SkyMediaBreakpoints, SkyMediaQueryService, } from '@skyux/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class MockSkyMediaQueryService extends SkyMediaQueryService {
6
+ constructor() {
7
+ super(new NgZone({
8
+ enableLongStackTrace: true,
9
+ }));
10
+ this.currentMockSubject = new BehaviorSubject(this.current);
11
+ this._currentBreakpoints = SkyMediaBreakpoints.md;
12
+ }
13
+ get current() {
14
+ return this._currentBreakpoints;
15
+ }
16
+ set current(breakpoints) {
17
+ this._currentBreakpoints = breakpoints;
18
+ }
19
+ subscribe(listener) {
20
+ return this.currentMockSubject.subscribe({
21
+ next: (breakpoints) => {
22
+ listener(breakpoints);
23
+ },
24
+ });
25
+ }
26
+ fire(args) {
27
+ this._currentBreakpoints = args;
28
+ this.currentMockSubject.next(this._currentBreakpoints);
29
+ }
30
+ destroy() { }
31
+ }
32
+ MockSkyMediaQueryService.xs = '(max-width: 767px)';
33
+ MockSkyMediaQueryService.sm = '(min-width: 768px) and (max-width: 991px)';
34
+ MockSkyMediaQueryService.md = '(min-width: 992px) and (max-width: 1199px)';
35
+ MockSkyMediaQueryService.lg = '(min-width: 1200px)';
36
+ MockSkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
37
+ MockSkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService, decorators: [{
39
+ type: Injectable
40
+ }], ctorParameters: function () { return []; } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay1tZWRpYS1xdWVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvdGVzdGluZy9zcmMvbW9jay1tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxtQkFBbUIsRUFFbkIsb0JBQW9CLEdBQ3JCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDOztBQUdyRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBb0JoRTtRQUNFLEtBQUssQ0FDSCxJQUFJLE1BQU0sQ0FBQztZQUNULG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQyxDQUNILENBQUM7UUFYRyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FDN0MsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBRU0sd0JBQW1CLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO0lBUXJELENBQUM7SUFwQkQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLE9BQU8sQ0FBQyxXQUFnQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO0lBQ3pDLENBQUM7SUFnQk0sU0FBUyxDQUFDLFFBQStCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7Z0JBQ3pDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLElBQUksQ0FBQyxJQUF5QjtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLE9BQU8sS0FBVSxDQUFDOztBQXhDWCwyQkFBRSxHQUFHLG9CQUFxQixDQUFBO0FBQzFCLDJCQUFFLEdBQUcsMkNBQTRDLENBQUE7QUFDakQsMkJBQUUsR0FBRyw0Q0FBNkMsQ0FBQTtBQUNsRCwyQkFBRSxHQUFHLHFCQUFzQixDQUFBO3FIQUo5Qix3QkFBd0I7eUhBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTa3lNZWRpYUJyZWFrcG9pbnRzLFxuICBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXIsXG4gIFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2NrU2t5TWVkaWFRdWVyeVNlcnZpY2UgZXh0ZW5kcyBTa3lNZWRpYVF1ZXJ5U2VydmljZSB7XG4gIHB1YmxpYyBzdGF0aWMgeHMgPSAnKG1heC13aWR0aDogNzY3cHgpJztcbiAgcHVibGljIHN0YXRpYyBzbSA9ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KSc7XG4gIHB1YmxpYyBzdGF0aWMgbWQgPSAnKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpJztcbiAgcHVibGljIHN0YXRpYyBsZyA9ICcobWluLXdpZHRoOiAxMjAwcHgpJztcblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRCcmVha3BvaW50cztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgY3VycmVudChicmVha3BvaW50czogU2t5TWVkaWFCcmVha3BvaW50cykge1xuICAgIHRoaXMuX2N1cnJlbnRCcmVha3BvaW50cyA9IGJyZWFrcG9pbnRzO1xuICB9XG5cbiAgcHVibGljIGN1cnJlbnRNb2NrU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5TWVkaWFCcmVha3BvaW50cz4oXG4gICAgdGhpcy5jdXJyZW50XG4gICk7XG5cbiAgcHJpdmF0ZSBfY3VycmVudEJyZWFrcG9pbnRzID0gU2t5TWVkaWFCcmVha3BvaW50cy5tZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBOZ1pvbmUoe1xuICAgICAgICBlbmFibGVMb25nU3RhY2tUcmFjZTogdHJ1ZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmUobGlzdGVuZXI6IFNreU1lZGlhUXVlcnlMaXN0ZW5lcik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1vY2tTdWJqZWN0LnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoYnJlYWtwb2ludHM6IFNreU1lZGlhQnJlYWtwb2ludHMpID0+IHtcbiAgICAgICAgbGlzdGVuZXIoYnJlYWtwb2ludHMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaXJlKGFyZ3M6IFNreU1lZGlhQnJlYWtwb2ludHMpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50QnJlYWtwb2ludHMgPSBhcmdzO1xuICAgIHRoaXMuY3VycmVudE1vY2tTdWJqZWN0Lm5leHQodGhpcy5fY3VycmVudEJyZWFrcG9pbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge31cbn1cbiJdfQ==
@@ -0,0 +1,59 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SkyUIConfigService } from '@skyux/core';
3
+ import { of as observableOf } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class MockSkyUIConfigService extends SkyUIConfigService {
6
+ getConfig(key, defaultConfig) {
7
+ switch (key) {
8
+ case 'defaultSettings':
9
+ return observableOf(defaultConfig);
10
+ case 'badData':
11
+ return observableOf({ invalidProperty: 'invalidData' });
12
+ default: {
13
+ return observableOf({
14
+ settings: {
15
+ userSettings: {
16
+ singleColumn: {
17
+ tiles: [
18
+ {
19
+ id: 'tile-1',
20
+ isCollapsed: true,
21
+ },
22
+ {
23
+ id: 'tile-2',
24
+ isCollapsed: true,
25
+ },
26
+ ],
27
+ },
28
+ multiColumn: [
29
+ {
30
+ tiles: [
31
+ {
32
+ id: 'tile-2',
33
+ isCollapsed: true,
34
+ },
35
+ ],
36
+ },
37
+ {
38
+ tiles: [
39
+ {
40
+ id: 'tile-1',
41
+ isCollapsed: true,
42
+ },
43
+ ],
44
+ },
45
+ ],
46
+ },
47
+ defaultSettings: ['tile-1', 'tile-2'],
48
+ },
49
+ });
50
+ }
51
+ }
52
+ }
53
+ }
54
+ MockSkyUIConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
55
+ MockSkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService });
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService, decorators: [{
57
+ type: Injectable
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay11aS1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3Rlc3Rpbmcvc3JjL21vY2stdWktY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakQsT0FBTyxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRzFDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFDckQsU0FBUyxDQUFDLEdBQVcsRUFBRSxhQUFtQjtRQUMvQyxRQUFRLEdBQUcsRUFBRTtZQUNYLEtBQUssaUJBQWlCO2dCQUNwQixPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyQyxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxZQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUMxRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxPQUFPLFlBQVksQ0FBQztvQkFDbEIsUUFBUSxFQUFFO3dCQUNSLFlBQVksRUFBRTs0QkFDWixZQUFZLEVBQUU7Z0NBQ1osS0FBSyxFQUFFO29DQUNMO3dDQUNFLEVBQUUsRUFBRSxRQUFRO3dDQUNaLFdBQVcsRUFBRSxJQUFJO3FDQUNsQjtvQ0FDRDt3Q0FDRSxFQUFFLEVBQUUsUUFBUTt3Q0FDWixXQUFXLEVBQUUsSUFBSTtxQ0FDbEI7aUNBQ0Y7NkJBQ0Y7NEJBQ0QsV0FBVyxFQUFFO2dDQUNYO29DQUNFLEtBQUssRUFBRTt3Q0FDTDs0Q0FDRSxFQUFFLEVBQUUsUUFBUTs0Q0FDWixXQUFXLEVBQUUsSUFBSTt5Q0FDbEI7cUNBQ0Y7aUNBQ0Y7Z0NBQ0Q7b0NBQ0UsS0FBSyxFQUFFO3dDQUNMOzRDQUNFLEVBQUUsRUFBRSxRQUFROzRDQUNaLFdBQVcsRUFBRSxJQUFJO3lDQUNsQjtxQ0FDRjtpQ0FDRjs2QkFDRjt5QkFDRjt3QkFDRCxlQUFlLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO3FCQUN0QztpQkFDRixDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQzs7bUhBL0NVLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lVSUNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTW9ja1NreVVJQ29uZmlnU2VydmljZSBleHRlbmRzIFNreVVJQ29uZmlnU2VydmljZSB7XG4gIHB1YmxpYyBnZXRDb25maWcoa2V5OiBzdHJpbmcsIGRlZmF1bHRDb25maWc/OiBhbnkpOiBhbnkge1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdkZWZhdWx0U2V0dGluZ3MnOlxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKGRlZmF1bHRDb25maWcpO1xuICAgICAgY2FzZSAnYmFkRGF0YSc6XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2YoeyBpbnZhbGlkUHJvcGVydHk6ICdpbnZhbGlkRGF0YScgfSk7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe1xuICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICB1c2VyU2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgc2luZ2xlQ29sdW1uOiB7XG4gICAgICAgICAgICAgICAgdGlsZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICd0aWxlLTEnLFxuICAgICAgICAgICAgICAgICAgICBpc0NvbGxhcHNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAndGlsZS0yJyxcbiAgICAgICAgICAgICAgICAgICAgaXNDb2xsYXBzZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG11bHRpQ29sdW1uOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGlsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAndGlsZS0yJyxcbiAgICAgICAgICAgICAgICAgICAgICBpc0NvbGxhcHNlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0aWxlczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6ICd0aWxlLTEnLFxuICAgICAgICAgICAgICAgICAgICAgIGlzQ29sbGFwc2VkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlZmF1bHRTZXR0aW5nczogWyd0aWxlLTEnLCAndGlsZS0yJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './mock-media-query.service';
2
+ export * from './mock-ui-config.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3Rlc3Rpbmcvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tb2NrLW1lZGlhLXF1ZXJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2NrLXVpLWNvbmZpZy5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtY29yZS10ZXN0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvdGVzdGluZy9zcmMvc2t5dXgtY29yZS10ZXN0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -34,9 +34,9 @@ MockSkyMediaQueryService.xs = '(max-width: 767px)';
34
34
  MockSkyMediaQueryService.sm = '(min-width: 768px) and (max-width: 991px)';
35
35
  MockSkyMediaQueryService.md = '(min-width: 992px) and (max-width: 1199px)';
36
36
  MockSkyMediaQueryService.lg = '(min-width: 1200px)';
37
- MockSkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
- MockSkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyMediaQueryService, decorators: [{
37
+ MockSkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
38
+ MockSkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyMediaQueryService, decorators: [{
40
40
  type: Injectable
41
41
  }], ctorParameters: function () { return []; } });
42
42
 
@@ -89,9 +89,9 @@ class MockSkyUIConfigService extends SkyUIConfigService {
89
89
  }
90
90
  }
91
91
  }
92
- MockSkyUIConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyUIConfigService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
93
- MockSkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyUIConfigService });
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: MockSkyUIConfigService, decorators: [{
92
+ MockSkyUIConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
93
+ MockSkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService });
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MockSkyUIConfigService, decorators: [{
95
95
  type: Injectable
96
96
  }] });
97
97
 
@@ -100,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
100
100
  */
101
101
 
102
102
  export { MockSkyMediaQueryService, MockSkyUIConfigService };
103
- //# sourceMappingURL=skyux-core-testing.js.map
103
+ //# sourceMappingURL=skyux-core-testing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skyux-core-testing.mjs","sources":["../../../../../libs/components/core/testing/src/mock-media-query.service.ts","../../../../../libs/components/core/testing/src/mock-ui-config.service.ts","../../../../../libs/components/core/testing/src/skyux-core-testing.ts"],"sourcesContent":["import { Injectable, NgZone } from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n@Injectable()\nexport class MockSkyMediaQueryService extends SkyMediaQueryService {\n public static xs = '(max-width: 767px)';\n public static sm = '(min-width: 768px) and (max-width: 991px)';\n public static md = '(min-width: 992px) and (max-width: 1199px)';\n public static lg = '(min-width: 1200px)';\n\n public get current(): SkyMediaBreakpoints {\n return this._currentBreakpoints;\n }\n\n public set current(breakpoints: SkyMediaBreakpoints) {\n this._currentBreakpoints = breakpoints;\n }\n\n public currentMockSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n private _currentBreakpoints = SkyMediaBreakpoints.md;\n\n constructor() {\n super(\n new NgZone({\n enableLongStackTrace: true,\n })\n );\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentMockSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public fire(args: SkyMediaBreakpoints): void {\n this._currentBreakpoints = args;\n this.currentMockSubject.next(this._currentBreakpoints);\n }\n\n public destroy(): void {}\n}\n","import { Injectable } from '@angular/core';\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { of as observableOf } from 'rxjs';\n\n@Injectable()\nexport class MockSkyUIConfigService extends SkyUIConfigService {\n public getConfig(key: string, defaultConfig?: any): any {\n switch (key) {\n case 'defaultSettings':\n return observableOf(defaultConfig);\n case 'badData':\n return observableOf({ invalidProperty: 'invalidData' });\n default: {\n return observableOf({\n settings: {\n userSettings: {\n singleColumn: {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n multiColumn: [\n {\n tiles: [\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n ],\n },\n ],\n },\n defaultSettings: ['tile-1', 'tile-2'],\n },\n });\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}