@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.
- package/documentation.json +113 -113
- package/esm2020/index.mjs +60 -0
- package/esm2020/lib/modules/adapter-service/adapter.module.mjs +16 -0
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +218 -0
- package/esm2020/lib/modules/adapter-service/focusable-children-options.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-auto-fit-context.mjs +12 -0
- package/esm2020/lib/modules/affix/affix-config.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-horizontal-alignment.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-offset-change.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-offset.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-placement-change.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-placement.mjs +2 -0
- package/esm2020/lib/modules/affix/affix-utils.mjs +18 -0
- package/esm2020/lib/modules/affix/affix-vertical-alignment.mjs +2 -0
- package/esm2020/lib/modules/affix/affix.directive.mjs +100 -0
- package/esm2020/lib/modules/affix/affix.module.mjs +18 -0
- package/esm2020/lib/modules/affix/affix.service.mjs +24 -0
- package/esm2020/lib/modules/affix/affixer.mjs +349 -0
- package/esm2020/lib/modules/affix/dom-utils.mjs +77 -0
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +80 -0
- package/esm2020/lib/modules/dock/dock-insert-component-config.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item-config.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item-reference.mjs +2 -0
- package/esm2020/lib/modules/dock/dock-item.mjs +29 -0
- package/esm2020/lib/modules/dock/dock-location.mjs +19 -0
- package/esm2020/lib/modules/dock/dock-options.mjs +2 -0
- package/esm2020/lib/modules/dock/dock.component.mjs +88 -0
- package/esm2020/lib/modules/dock/dock.module.mjs +19 -0
- package/esm2020/lib/modules/dock/dock.service.mjs +95 -0
- package/esm2020/lib/modules/dock/sort-by-stack-order.mjs +13 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component-location.mjs +27 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component-options.mjs +2 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +17 -0
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +83 -0
- package/esm2020/lib/modules/format/app-format.mjs +18 -0
- package/esm2020/lib/modules/id/id.directive.mjs +34 -0
- package/esm2020/lib/modules/id/id.module.mjs +16 -0
- package/esm2020/lib/modules/log/log.module.mjs +16 -0
- package/esm2020/lib/modules/log/log.service.mjs +23 -0
- package/esm2020/lib/modules/media-query/media-breakpoints.mjs +20 -0
- package/esm2020/lib/modules/media-query/media-query-listener.mjs +2 -0
- package/esm2020/lib/modules/media-query/media-query.module.mjs +16 -0
- package/esm2020/lib/modules/media-query/media-query.service.mjs +121 -0
- package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +16 -0
- package/esm2020/lib/modules/numeric/numeric-symbol.mjs +2 -0
- package/esm2020/lib/modules/numeric/numeric.module.mjs +20 -0
- package/esm2020/lib/modules/numeric/numeric.options.mjs +41 -0
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +82 -0
- package/esm2020/lib/modules/numeric/numeric.service.mjs +188 -0
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +41 -0
- package/esm2020/lib/modules/overlay/overlay-config.mjs +2 -0
- package/esm2020/lib/modules/overlay/overlay-context.mjs +10 -0
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +55 -0
- package/esm2020/lib/modules/overlay/overlay.component.mjs +149 -0
- package/esm2020/lib/modules/overlay/overlay.module.mjs +17 -0
- package/esm2020/lib/modules/overlay/overlay.service.mjs +120 -0
- package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +20 -0
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +48 -0
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +184 -0
- package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +72 -0
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +50 -0
- package/esm2020/lib/modules/title/set-title-args.mjs +2 -0
- package/esm2020/lib/modules/title/title.service.mjs +31 -0
- package/esm2020/lib/modules/ui-config/ui-config.service.mjs +21 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +10 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-offset.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper-options.mjs +2 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +116 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +251 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +16 -0
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
- package/esm2020/lib/modules/window/window-ref.mjs +30 -0
- package/esm2020/skyux-core.mjs +5 -0
- package/esm2020/testing/mock-media-query.service.mjs +41 -0
- package/esm2020/testing/mock-ui-config.service.mjs +59 -0
- package/esm2020/testing/public-api.mjs +3 -0
- package/esm2020/testing/skyux-core-testing.mjs +5 -0
- package/fesm2015/{skyux-core-testing.js → skyux-core-testing.mjs} +7 -7
- package/fesm2015/skyux-core-testing.mjs.map +1 -0
- package/fesm2015/skyux-core.mjs +3043 -0
- package/fesm2015/skyux-core.mjs.map +1 -0
- package/fesm2020/skyux-core-testing.mjs +103 -0
- package/fesm2020/skyux-core-testing.mjs.map +1 -0
- package/{fesm2015/skyux-core.js → fesm2020/skyux-core.mjs} +188 -180
- package/fesm2020/skyux-core.mjs.map +1 -0
- package/lib/modules/dock/dock.service.d.ts +2 -2
- package/lib/modules/numeric/numeric.options.d.ts +1 -1
- package/lib/modules/scrollable-host/scrollable-host.service.d.ts +2 -1
- package/lib/modules/shared/sky-core-resources.module.d.ts +1 -1
- package/package.json +32 -11
- package/testing/package.json +5 -5
- package/bundles/skyux-core-testing.umd.js +0 -459
- package/bundles/skyux-core.umd.js +0 -3624
- package/esm2015/index.js +0 -60
- package/esm2015/index.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/adapter.module.js +0 -16
- package/esm2015/lib/modules/adapter-service/adapter.module.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/adapter.service.js +0 -218
- package/esm2015/lib/modules/adapter-service/adapter.service.js.map +0 -1
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js +0 -2
- package/esm2015/lib/modules/adapter-service/focusable-children-options.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js +0 -12
- package/esm2015/lib/modules/affix/affix-auto-fit-context.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-config.js +0 -2
- package/esm2015/lib/modules/affix/affix-config.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js +0 -2
- package/esm2015/lib/modules/affix/affix-horizontal-alignment.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-offset-change.js +0 -2
- package/esm2015/lib/modules/affix/affix-offset-change.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-offset.js +0 -2
- package/esm2015/lib/modules/affix/affix-offset.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-placement-change.js +0 -2
- package/esm2015/lib/modules/affix/affix-placement-change.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-placement.js +0 -2
- package/esm2015/lib/modules/affix/affix-placement.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-utils.js +0 -18
- package/esm2015/lib/modules/affix/affix-utils.js.map +0 -1
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js +0 -2
- package/esm2015/lib/modules/affix/affix-vertical-alignment.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.directive.js +0 -100
- package/esm2015/lib/modules/affix/affix.directive.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.module.js +0 -18
- package/esm2015/lib/modules/affix/affix.module.js.map +0 -1
- package/esm2015/lib/modules/affix/affix.service.js +0 -24
- package/esm2015/lib/modules/affix/affix.service.js.map +0 -1
- package/esm2015/lib/modules/affix/affixer.js +0 -349
- package/esm2015/lib/modules/affix/affixer.js.map +0 -1
- package/esm2015/lib/modules/affix/dom-utils.js +0 -77
- package/esm2015/lib/modules/affix/dom-utils.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js +0 -80
- package/esm2015/lib/modules/dock/dock-dom-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-insert-component-config.js +0 -2
- package/esm2015/lib/modules/dock/dock-insert-component-config.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item-config.js +0 -2
- package/esm2015/lib/modules/dock/dock-item-config.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item-reference.js +0 -2
- package/esm2015/lib/modules/dock/dock-item-reference.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-item.js +0 -29
- package/esm2015/lib/modules/dock/dock-item.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-location.js +0 -19
- package/esm2015/lib/modules/dock/dock-location.js.map +0 -1
- package/esm2015/lib/modules/dock/dock-options.js +0 -2
- package/esm2015/lib/modules/dock/dock-options.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.component.js +0 -95
- package/esm2015/lib/modules/dock/dock.component.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.module.js +0 -20
- package/esm2015/lib/modules/dock/dock.module.js.map +0 -1
- package/esm2015/lib/modules/dock/dock.service.js +0 -92
- package/esm2015/lib/modules/dock/dock.service.js.map +0 -1
- package/esm2015/lib/modules/dock/sort-by-stack-order.js +0 -13
- package/esm2015/lib/modules/dock/sort-by-stack-order.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js +0 -27
- package/esm2015/lib/modules/dynamic-component/dynamic-component-location.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js +0 -2
- package/esm2015/lib/modules/dynamic-component/dynamic-component-options.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js +0 -17
- package/esm2015/lib/modules/dynamic-component/dynamic-component.module.js.map +0 -1
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js +0 -83
- package/esm2015/lib/modules/dynamic-component/dynamic-component.service.js.map +0 -1
- package/esm2015/lib/modules/format/app-format.js +0 -18
- package/esm2015/lib/modules/format/app-format.js.map +0 -1
- package/esm2015/lib/modules/id/id.directive.js +0 -34
- package/esm2015/lib/modules/id/id.directive.js.map +0 -1
- package/esm2015/lib/modules/id/id.module.js +0 -16
- package/esm2015/lib/modules/id/id.module.js.map +0 -1
- package/esm2015/lib/modules/log/log.module.js +0 -16
- package/esm2015/lib/modules/log/log.module.js.map +0 -1
- package/esm2015/lib/modules/log/log.service.js +0 -23
- package/esm2015/lib/modules/log/log.service.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-breakpoints.js +0 -20
- package/esm2015/lib/modules/media-query/media-breakpoints.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query-listener.js +0 -2
- package/esm2015/lib/modules/media-query/media-query-listener.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query.module.js +0 -16
- package/esm2015/lib/modules/media-query/media-query.module.js.map +0 -1
- package/esm2015/lib/modules/media-query/media-query.service.js +0 -121
- package/esm2015/lib/modules/media-query/media-query.service.js.map +0 -1
- package/esm2015/lib/modules/mutation/mutation-observer-service.js +0 -16
- package/esm2015/lib/modules/mutation/mutation-observer-service.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric-symbol.js +0 -2
- package/esm2015/lib/modules/numeric/numeric-symbol.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.module.js +0 -20
- package/esm2015/lib/modules/numeric/numeric.module.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.options.js +0 -41
- package/esm2015/lib/modules/numeric/numeric.options.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.pipe.js +0 -83
- package/esm2015/lib/modules/numeric/numeric.pipe.js.map +0 -1
- package/esm2015/lib/modules/numeric/numeric.service.js +0 -189
- package/esm2015/lib/modules/numeric/numeric.service.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js +0 -41
- package/esm2015/lib/modules/overlay/overlay-adapter.service.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-config.js +0 -2
- package/esm2015/lib/modules/overlay/overlay-config.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-context.js +0 -10
- package/esm2015/lib/modules/overlay/overlay-context.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay-instance.js +0 -55
- package/esm2015/lib/modules/overlay/overlay-instance.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.component.js +0 -154
- package/esm2015/lib/modules/overlay/overlay.component.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.module.js +0 -18
- package/esm2015/lib/modules/overlay/overlay.module.js.map +0 -1
- package/esm2015/lib/modules/overlay/overlay.service.js +0 -120
- package/esm2015/lib/modules/overlay/overlay.service.js.map +0 -1
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js +0 -20
- package/esm2015/lib/modules/percent-pipe/percent-pipe.module.js.map +0 -1
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js +0 -48
- package/esm2015/lib/modules/percent-pipe/percent.pipe.js.map +0 -1
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js +0 -163
- package/esm2015/lib/modules/scrollable-host/scrollable-host.service.js.map +0 -1
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js +0 -72
- package/esm2015/lib/modules/shared/number-format/number-format-utility.js.map +0 -1
- package/esm2015/lib/modules/shared/sky-core-resources.module.js +0 -50
- package/esm2015/lib/modules/shared/sky-core-resources.module.js.map +0 -1
- package/esm2015/lib/modules/title/set-title-args.js +0 -2
- package/esm2015/lib/modules/title/set-title-args.js.map +0 -1
- package/esm2015/lib/modules/title/title.service.js +0 -31
- package/esm2015/lib/modules/title/title.service.js.map +0 -1
- package/esm2015/lib/modules/ui-config/ui-config.service.js +0 -21
- package/esm2015/lib/modules/ui-config/ui-config.service.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-boundary-info.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-fixed-styles.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js +0 -10
- package/esm2015/lib/modules/viewkeeper/viewkeeper-host-options.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-offset.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js +0 -2
- package/esm2015/lib/modules/viewkeeper/viewkeeper-options.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js +0 -116
- package/esm2015/lib/modules/viewkeeper/viewkeeper.directive.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js +0 -251
- package/esm2015/lib/modules/viewkeeper/viewkeeper.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js +0 -16
- package/esm2015/lib/modules/viewkeeper/viewkeeper.module.js.map +0 -1
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js +0 -39
- package/esm2015/lib/modules/viewkeeper/viewkeeper.service.js.map +0 -1
- package/esm2015/lib/modules/window/window-ref.js +0 -30
- package/esm2015/lib/modules/window/window-ref.js.map +0 -1
- package/esm2015/skyux-core.js +0 -5
- package/esm2015/skyux-core.js.map +0 -1
- package/esm2015/testing/mock-media-query.service.js +0 -41
- package/esm2015/testing/mock-media-query.service.js.map +0 -1
- package/esm2015/testing/mock-ui-config.service.js +0 -59
- package/esm2015/testing/mock-ui-config.service.js.map +0 -1
- package/esm2015/testing/public-api.js +0 -3
- package/esm2015/testing/public-api.js.map +0 -1
- package/esm2015/testing/skyux-core-testing.js +0 -5
- package/esm2015/testing/skyux-core-testing.js.map +0 -1
- package/fesm2015/skyux-core-testing.js.map +0 -1
- 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: "
|
38
|
-
MockSkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
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: "
|
93
|
-
MockSkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
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.
|
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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"}
|