@skyux/core 8.6.0 → 9.0.0-alpha.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/{esm2020 → esm2022}/lib/modules/adapter-service/adapter.module.mjs +5 -5
- package/esm2022/lib/modules/adapter-service/adapter.service.mjs +225 -0
- package/esm2022/lib/modules/affix/affix.directive.mjs +116 -0
- package/{esm2020 → esm2022}/lib/modules/affix/affix.module.mjs +5 -5
- package/esm2022/lib/modules/affix/affix.service.mjs +25 -0
- package/esm2022/lib/modules/affix/affixer.mjs +398 -0
- package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +26 -0
- package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +81 -0
- package/esm2022/lib/modules/dock/dock-item.mjs +31 -0
- package/esm2022/lib/modules/dock/dock.component.mjs +108 -0
- package/{esm2020 → esm2022}/lib/modules/dock/dock.module.mjs +5 -5
- package/esm2022/lib/modules/dock/dock.service.mjs +96 -0
- package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component.module.mjs +5 -5
- package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +106 -0
- package/{esm2020 → esm2022}/lib/modules/format/app-format.mjs +4 -4
- package/esm2022/lib/modules/id/id.directive.mjs +31 -0
- package/{esm2020 → esm2022}/lib/modules/id/id.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/id/id.service.mjs +4 -4
- package/esm2022/lib/modules/layout-host/layout-host.service.mjs +22 -0
- package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +79 -0
- package/{esm2020 → esm2022}/lib/modules/log/log.module.mjs +5 -5
- package/esm2022/lib/modules/log/log.service.mjs +148 -0
- package/{esm2020 → esm2022}/lib/modules/media-query/media-query.module.mjs +5 -5
- package/esm2022/lib/modules/media-query/media-query.service.mjs +123 -0
- package/{esm2020 → esm2022}/lib/modules/mutation/mutation-observer-service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/numeric/numeric.module.mjs +5 -5
- package/esm2022/lib/modules/numeric/numeric.pipe.mjs +81 -0
- package/esm2022/lib/modules/numeric/numeric.service.mjs +205 -0
- package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +44 -0
- package/esm2022/lib/modules/overlay/overlay-instance.mjs +62 -0
- package/esm2022/lib/modules/overlay/overlay.component.mjs +193 -0
- package/{esm2020 → esm2022}/lib/modules/overlay/overlay.module.mjs +5 -5
- package/esm2022/lib/modules/overlay/overlay.service.mjs +124 -0
- package/{esm2020 → esm2022}/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
- package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +56 -0
- package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +120 -0
- package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +77 -0
- package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +223 -0
- package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +72 -0
- package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +50 -0
- package/esm2022/lib/modules/title/title.service.mjs +31 -0
- package/esm2022/lib/modules/trim/trim.directive.mjs +64 -0
- package/{esm2020 → esm2022}/lib/modules/trim/trim.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/ui-config/ui-config.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-host-options.mjs +4 -4
- package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +131 -0
- package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +283 -0
- package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper.module.mjs +5 -5
- package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
- package/{esm2020 → esm2022}/lib/modules/window/window-ref.mjs +4 -4
- package/esm2022/testing/core-testing.module.mjs +32 -0
- package/esm2022/testing/mock-media-query.service.mjs +46 -0
- package/{esm2020 → esm2022}/testing/mock-ui-config.service.mjs +4 -4
- package/esm2022/testing/overlay/overlay-harness.mjs +43 -0
- package/esm2022/testing/shared/component-harness.mjs +13 -0
- package/{fesm2020 → fesm2022}/skyux-core-testing.mjs +28 -34
- package/{fesm2020 → fesm2022}/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +3858 -0
- package/fesm2022/skyux-core.mjs.map +1 -0
- package/lib/modules/affix/affix.directive.d.ts +1 -1
- package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +1 -1
- package/package.json +14 -22
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +0 -227
- package/esm2020/lib/modules/affix/affix.directive.mjs +0 -118
- package/esm2020/lib/modules/affix/affix.service.mjs +0 -28
- package/esm2020/lib/modules/affix/affixer.mjs +0 -377
- package/esm2020/lib/modules/default-input-provider/default-input-provider.mjs +0 -31
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +0 -83
- package/esm2020/lib/modules/dock/dock-item.mjs +0 -34
- package/esm2020/lib/modules/dock/dock.component.mjs +0 -110
- package/esm2020/lib/modules/dock/dock.service.mjs +0 -98
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -109
- package/esm2020/lib/modules/id/id.directive.mjs +0 -34
- package/esm2020/lib/modules/layout-host/layout-host.service.mjs +0 -27
- package/esm2020/lib/modules/live-announcer/live-announcer.service.mjs +0 -80
- package/esm2020/lib/modules/log/log.service.mjs +0 -147
- package/esm2020/lib/modules/media-query/media-query.service.mjs +0 -124
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +0 -84
- package/esm2020/lib/modules/numeric/numeric.service.mjs +0 -179
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +0 -47
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +0 -65
- package/esm2020/lib/modules/overlay/overlay.component.mjs +0 -192
- package/esm2020/lib/modules/overlay/overlay.service.mjs +0 -125
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +0 -59
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -121
- package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +0 -79
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -218
- package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +0 -50
- package/esm2020/lib/modules/title/title.service.mjs +0 -34
- package/esm2020/lib/modules/trim/trim.directive.mjs +0 -65
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +0 -276
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -42
- package/esm2020/testing/core-testing.module.mjs +0 -32
- package/esm2020/testing/mock-media-query.service.mjs +0 -46
- package/esm2020/testing/overlay/overlay-harness.mjs +0 -43
- package/esm2020/testing/shared/component-harness.mjs +0 -19
- package/fesm2015/skyux-core-testing.mjs +0 -209
- package/fesm2015/skyux-core-testing.mjs.map +0 -1
- package/fesm2015/skyux-core.mjs +0 -3835
- package/fesm2015/skyux-core.mjs.map +0 -1
- package/fesm2020/skyux-core.mjs +0 -3825
- package/fesm2020/skyux-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/adapter-service/focusable-children-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-auto-fit-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-horizontal-alignment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset-change.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement-change.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-rect.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-vertical-alignment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/dom-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-insert-component-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-reference.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-location.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/sort-by-stack-order.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-deprecation-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-level-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-level.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/media-query/media-breakpoints.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/media-query/media-query-listener.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/numeric/numeric-symbol.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/numeric/numeric.options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/title/set-title-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-core.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/overlay/overlay-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/shared/harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-core-testing.mjs +0 -0
@@ -1,377 +0,0 @@
|
|
1
|
-
var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_resizeListener, _SkyAffixer_scrollListeners, _SkyAffixer__config, _SkyAffixer_affix, _SkyAffixer_getOffset, _SkyAffixer_getRect, _SkyAffixer_getPreferredOffset, _SkyAffixer_adjustOffsetToOverflowParent, _SkyAffixer_getImmediateOverflowParent, _SkyAffixer_getAutoFitContextParent, _SkyAffixer_notifyPlacementChange, _SkyAffixer_reset, _SkyAffixer_isNewOffset, _SkyAffixer_isBaseElementVisible, _SkyAffixer_addScrollListeners, _SkyAffixer_addResizeListener, _SkyAffixer_removeResizeListener, _SkyAffixer_removeScrollListeners;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Subject, fromEvent } from 'rxjs';
|
4
|
-
import { SkyAffixAutoFitContext } from './affix-auto-fit-context';
|
5
|
-
import { getInversePlacement, getNextPlacement } from './affix-utils';
|
6
|
-
import { getElementOffset, getOverflowParents, isOffsetFullyVisibleWithinParent, isOffsetPartiallyVisibleWithinParent, } from './dom-utils';
|
7
|
-
const DEFAULT_AFFIX_CONFIG = {
|
8
|
-
autoFitContext: SkyAffixAutoFitContext.OverflowParent,
|
9
|
-
enableAutoFit: false,
|
10
|
-
horizontalAlignment: 'center',
|
11
|
-
isSticky: false,
|
12
|
-
placement: 'above',
|
13
|
-
};
|
14
|
-
export class SkyAffixer {
|
15
|
-
/**
|
16
|
-
* Fires when the affixed element's offset changes.
|
17
|
-
*/
|
18
|
-
get offsetChange() {
|
19
|
-
return __classPrivateFieldGet(this, _SkyAffixer_offsetChangeObs, "f");
|
20
|
-
}
|
21
|
-
/**
|
22
|
-
* Fires when the base element's nearest overflow parent is scrolling. This is useful if you need
|
23
|
-
* to perform an additional action during the scroll event but don't want to generate another
|
24
|
-
* event listener.
|
25
|
-
*/
|
26
|
-
get overflowScroll() {
|
27
|
-
return __classPrivateFieldGet(this, _SkyAffixer_overflowScrollObs, "f");
|
28
|
-
}
|
29
|
-
/**
|
30
|
-
* Fires when the placement value changes. A `null` value indicates that a suitable
|
31
|
-
* placement could not be found.
|
32
|
-
*/
|
33
|
-
get placementChange() {
|
34
|
-
return __classPrivateFieldGet(this, _SkyAffixer_placementChangeObs, "f");
|
35
|
-
}
|
36
|
-
constructor(affixedElement, renderer) {
|
37
|
-
_SkyAffixer_instances.add(this);
|
38
|
-
_SkyAffixer_affixedElement.set(this, void 0);
|
39
|
-
_SkyAffixer_baseElement.set(this, void 0);
|
40
|
-
_SkyAffixer_currentOffset.set(this, void 0);
|
41
|
-
_SkyAffixer_currentPlacement.set(this, void 0);
|
42
|
-
_SkyAffixer_offsetChange.set(this, void 0);
|
43
|
-
_SkyAffixer_offsetChangeObs.set(this, void 0);
|
44
|
-
_SkyAffixer_overflowParents.set(this, []);
|
45
|
-
_SkyAffixer_overflowScroll.set(this, void 0);
|
46
|
-
_SkyAffixer_overflowScrollObs.set(this, void 0);
|
47
|
-
_SkyAffixer_placementChange.set(this, void 0);
|
48
|
-
_SkyAffixer_placementChangeObs.set(this, void 0);
|
49
|
-
_SkyAffixer_renderer.set(this, void 0);
|
50
|
-
_SkyAffixer_resizeListener.set(this, void 0);
|
51
|
-
_SkyAffixer_scrollListeners.set(this, void 0);
|
52
|
-
_SkyAffixer__config.set(this, DEFAULT_AFFIX_CONFIG);
|
53
|
-
__classPrivateFieldSet(this, _SkyAffixer_affixedElement, affixedElement, "f");
|
54
|
-
__classPrivateFieldSet(this, _SkyAffixer_renderer, renderer, "f");
|
55
|
-
__classPrivateFieldSet(this, _SkyAffixer_offsetChange, new Subject(), "f");
|
56
|
-
__classPrivateFieldSet(this, _SkyAffixer_overflowScroll, new Subject(), "f");
|
57
|
-
__classPrivateFieldSet(this, _SkyAffixer_placementChange, new Subject(), "f");
|
58
|
-
__classPrivateFieldSet(this, _SkyAffixer_offsetChangeObs, __classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").asObservable(), "f");
|
59
|
-
__classPrivateFieldSet(this, _SkyAffixer_overflowScrollObs, __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").asObservable(), "f");
|
60
|
-
__classPrivateFieldSet(this, _SkyAffixer_placementChangeObs, __classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").asObservable(), "f");
|
61
|
-
}
|
62
|
-
/**
|
63
|
-
* Affixes an element to a base element.
|
64
|
-
* @param baseElement The base element.
|
65
|
-
* @param config Configuration for the affix action.
|
66
|
-
*/
|
67
|
-
affixTo(baseElement, config) {
|
68
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_reset).call(this);
|
69
|
-
__classPrivateFieldSet(this, _SkyAffixer_instances, config, "a", _SkyAffixer_config_set);
|
70
|
-
__classPrivateFieldSet(this, _SkyAffixer_baseElement, baseElement, "f");
|
71
|
-
__classPrivateFieldSet(this, _SkyAffixer_overflowParents, getOverflowParents(baseElement), "f");
|
72
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
|
73
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).isSticky) {
|
74
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addScrollListeners).call(this);
|
75
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addResizeListener).call(this);
|
76
|
-
}
|
77
|
-
}
|
78
|
-
getConfig() {
|
79
|
-
return __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get);
|
80
|
-
}
|
81
|
-
/**
|
82
|
-
* Re-runs the affix calculation.
|
83
|
-
*/
|
84
|
-
reaffix() {
|
85
|
-
// Reset current placement to preferred placement.
|
86
|
-
__classPrivateFieldSet(this, _SkyAffixer_currentPlacement, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement, "f");
|
87
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
|
88
|
-
}
|
89
|
-
/**
|
90
|
-
* Destroys the affixer.
|
91
|
-
*/
|
92
|
-
destroy() {
|
93
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_reset).call(this);
|
94
|
-
__classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").complete();
|
95
|
-
__classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").complete();
|
96
|
-
__classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").complete();
|
97
|
-
}
|
98
|
-
}
|
99
|
-
_SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_resizeListener = new WeakMap(), _SkyAffixer_scrollListeners = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
|
100
|
-
return __classPrivateFieldGet(this, _SkyAffixer__config, "f");
|
101
|
-
}, _SkyAffixer_config_set = function _SkyAffixer_config_set(value) {
|
102
|
-
const merged = {
|
103
|
-
...DEFAULT_AFFIX_CONFIG,
|
104
|
-
...value,
|
105
|
-
};
|
106
|
-
// Make sure none of the values are undefined.
|
107
|
-
let key;
|
108
|
-
for (key in merged) {
|
109
|
-
if (merged[key] === undefined) {
|
110
|
-
merged[key] = DEFAULT_AFFIX_CONFIG[key];
|
111
|
-
}
|
112
|
-
}
|
113
|
-
__classPrivateFieldSet(this, _SkyAffixer__config, merged, "f");
|
114
|
-
}, _SkyAffixer_affix = function _SkyAffixer_affix() {
|
115
|
-
const offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getOffset).call(this);
|
116
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_isNewOffset).call(this, offset)) {
|
117
|
-
__classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'top', `${offset.top}px`);
|
118
|
-
__classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'left', `${offset.left}px`);
|
119
|
-
__classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").next({ offset });
|
120
|
-
}
|
121
|
-
}, _SkyAffixer_getOffset = function _SkyAffixer_getOffset() {
|
122
|
-
const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
|
123
|
-
const maxAttempts = 4;
|
124
|
-
let attempts = 0;
|
125
|
-
let isAffixedElementFullyVisible = false;
|
126
|
-
let offset;
|
127
|
-
let placement = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement;
|
128
|
-
const autoFitOverflowOffset = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset || {
|
129
|
-
bottom: 0,
|
130
|
-
left: 0,
|
131
|
-
right: 0,
|
132
|
-
top: 0,
|
133
|
-
};
|
134
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
|
135
|
-
autoFitOverflowOffset.top =
|
136
|
-
(autoFitOverflowOffset.top || 0) + window.scrollY;
|
137
|
-
}
|
138
|
-
do {
|
139
|
-
offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, placement);
|
140
|
-
isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(parent, offset, autoFitOverflowOffset);
|
141
|
-
if (!__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit) {
|
142
|
-
break;
|
143
|
-
}
|
144
|
-
if (!isAffixedElementFullyVisible) {
|
145
|
-
placement =
|
146
|
-
attempts % 2 === 0
|
147
|
-
? getInversePlacement(placement)
|
148
|
-
: getNextPlacement(placement);
|
149
|
-
}
|
150
|
-
attempts++;
|
151
|
-
} while (!isAffixedElementFullyVisible && attempts < maxAttempts);
|
152
|
-
if (isAffixedElementFullyVisible) {
|
153
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_isBaseElementVisible).call(this)) {
|
154
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, placement);
|
155
|
-
}
|
156
|
-
else {
|
157
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, null);
|
158
|
-
}
|
159
|
-
return offset;
|
160
|
-
}
|
161
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit) {
|
162
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, null);
|
163
|
-
}
|
164
|
-
// No suitable placement was found, so revert to preferred placement.
|
165
|
-
return __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement);
|
166
|
-
}, _SkyAffixer_getRect = function _SkyAffixer_getRect(baseElement) {
|
167
|
-
const baseDomRect = baseElement.getBoundingClientRect();
|
168
|
-
const baseRect = {
|
169
|
-
top: baseDomRect.top,
|
170
|
-
bottom: baseDomRect.bottom,
|
171
|
-
left: baseDomRect.left,
|
172
|
-
right: baseDomRect.right,
|
173
|
-
width: baseDomRect.width,
|
174
|
-
height: baseDomRect.height,
|
175
|
-
};
|
176
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
|
177
|
-
baseRect.top += window.scrollY;
|
178
|
-
baseRect.bottom = baseRect.top + baseDomRect.height;
|
179
|
-
}
|
180
|
-
return baseRect;
|
181
|
-
}, _SkyAffixer_getPreferredOffset = function _SkyAffixer_getPreferredOffset(placement) {
|
182
|
-
if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
|
183
|
-
return { top: 0, left: 0, bottom: 0, right: 0 };
|
184
|
-
}
|
185
|
-
const affixedRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
|
186
|
-
const baseRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f"));
|
187
|
-
const horizontalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).horizontalAlignment;
|
188
|
-
const verticalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).verticalAlignment;
|
189
|
-
const enableAutoFit = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit;
|
190
|
-
let top;
|
191
|
-
let left;
|
192
|
-
if (placement === 'above' || placement === 'below') {
|
193
|
-
if (placement === 'above') {
|
194
|
-
top = baseRect.top - affixedRect.height;
|
195
|
-
switch (verticalAlignment) {
|
196
|
-
case 'top':
|
197
|
-
top = top + affixedRect.height;
|
198
|
-
break;
|
199
|
-
case 'middle':
|
200
|
-
top = top + affixedRect.height / 2;
|
201
|
-
break;
|
202
|
-
case 'bottom':
|
203
|
-
default:
|
204
|
-
break;
|
205
|
-
}
|
206
|
-
}
|
207
|
-
else {
|
208
|
-
top = baseRect.bottom;
|
209
|
-
switch (verticalAlignment) {
|
210
|
-
case 'top':
|
211
|
-
default:
|
212
|
-
break;
|
213
|
-
case 'middle':
|
214
|
-
top = top - affixedRect.height / 2;
|
215
|
-
break;
|
216
|
-
case 'bottom':
|
217
|
-
top = top - affixedRect.height;
|
218
|
-
break;
|
219
|
-
}
|
220
|
-
}
|
221
|
-
switch (horizontalAlignment) {
|
222
|
-
case 'left':
|
223
|
-
left = baseRect.left;
|
224
|
-
break;
|
225
|
-
case 'center':
|
226
|
-
default:
|
227
|
-
left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;
|
228
|
-
break;
|
229
|
-
case 'right':
|
230
|
-
left = baseRect.right - affixedRect.width;
|
231
|
-
break;
|
232
|
-
}
|
233
|
-
}
|
234
|
-
else {
|
235
|
-
if (placement === 'left') {
|
236
|
-
left = baseRect.left - affixedRect.width;
|
237
|
-
}
|
238
|
-
else {
|
239
|
-
left = baseRect.right;
|
240
|
-
}
|
241
|
-
switch (verticalAlignment) {
|
242
|
-
case 'top':
|
243
|
-
top = baseRect.top;
|
244
|
-
break;
|
245
|
-
case 'middle':
|
246
|
-
default:
|
247
|
-
top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;
|
248
|
-
break;
|
249
|
-
case 'bottom':
|
250
|
-
top = baseRect.bottom - affixedRect.height;
|
251
|
-
break;
|
252
|
-
}
|
253
|
-
}
|
254
|
-
const offset = { top, left, bottom: 0, right: 0 };
|
255
|
-
if (enableAutoFit) {
|
256
|
-
const adjustments = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_adjustOffsetToOverflowParent).call(this, { top, left }, placement, __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f"));
|
257
|
-
offset.top = adjustments.top;
|
258
|
-
offset.left = adjustments.left;
|
259
|
-
}
|
260
|
-
offset.bottom = offset.top + affixedRect.height;
|
261
|
-
offset.right = offset.left + affixedRect.width;
|
262
|
-
return offset;
|
263
|
-
}, _SkyAffixer_adjustOffsetToOverflowParent = function _SkyAffixer_adjustOffsetToOverflowParent(offset, placement, baseElement) {
|
264
|
-
const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
|
265
|
-
const parentOffset = getElementOffset(parent, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
|
266
|
-
const affixedRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
|
267
|
-
const baseRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, baseElement);
|
268
|
-
// A pixel value representing the leeway between the edge of the overflow parent and the edge
|
269
|
-
// of the base element before it disappears from view.
|
270
|
-
// If the visible portion of the base element is less than this pixel value, the auto-fit
|
271
|
-
// functionality attempts to find another placement.
|
272
|
-
const defaultPixelTolerance = 40;
|
273
|
-
let pixelTolerance;
|
274
|
-
const originalOffsetTop = offset.top;
|
275
|
-
const originalOffsetLeft = offset.left;
|
276
|
-
switch (placement) {
|
277
|
-
case 'above':
|
278
|
-
case 'below':
|
279
|
-
// Keep the affixed element within the overflow parent.
|
280
|
-
if (offset.left < parentOffset.left) {
|
281
|
-
offset.left = parentOffset.left;
|
282
|
-
}
|
283
|
-
else if (offset.left + affixedRect.width > parentOffset.right) {
|
284
|
-
offset.left = parentOffset.right - affixedRect.width;
|
285
|
-
}
|
286
|
-
// Use a smaller pixel tolerance if the base element width is less than the default.
|
287
|
-
pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);
|
288
|
-
// Make sure the affixed element never detaches from the base element.
|
289
|
-
if (offset.left + pixelTolerance > baseRect.right ||
|
290
|
-
offset.left + affixedRect.width - pixelTolerance < baseRect.left) {
|
291
|
-
offset.left = originalOffsetLeft;
|
292
|
-
}
|
293
|
-
break;
|
294
|
-
case 'left':
|
295
|
-
case 'right':
|
296
|
-
// Keep the affixed element within the overflow parent.
|
297
|
-
if (offset.top < parentOffset.top) {
|
298
|
-
offset.top = parentOffset.top;
|
299
|
-
}
|
300
|
-
else if (offset.top + affixedRect.height > parentOffset.bottom) {
|
301
|
-
offset.top = parentOffset.bottom - affixedRect.height;
|
302
|
-
}
|
303
|
-
// Use a smaller pixel tolerance if the base element height is less than the default.
|
304
|
-
pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);
|
305
|
-
// Make sure the affixed element never detaches from the base element.
|
306
|
-
if (offset.top + pixelTolerance > baseRect.bottom ||
|
307
|
-
offset.top + affixedRect.height - pixelTolerance < baseRect.top) {
|
308
|
-
offset.top = originalOffsetTop;
|
309
|
-
}
|
310
|
-
break;
|
311
|
-
}
|
312
|
-
return offset;
|
313
|
-
}, _SkyAffixer_getImmediateOverflowParent = function _SkyAffixer_getImmediateOverflowParent() {
|
314
|
-
return __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").length - 1];
|
315
|
-
}, _SkyAffixer_getAutoFitContextParent = function _SkyAffixer_getAutoFitContextParent() {
|
316
|
-
const bodyElement = __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[0];
|
317
|
-
return __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitContext === SkyAffixAutoFitContext.OverflowParent
|
318
|
-
? __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this)
|
319
|
-
: bodyElement;
|
320
|
-
}, _SkyAffixer_notifyPlacementChange = function _SkyAffixer_notifyPlacementChange(placement) {
|
321
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_currentPlacement, "f") !== placement) {
|
322
|
-
__classPrivateFieldSet(this, _SkyAffixer_currentPlacement, placement ?? undefined, "f");
|
323
|
-
__classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").next({
|
324
|
-
placement,
|
325
|
-
});
|
326
|
-
}
|
327
|
-
}, _SkyAffixer_reset = function _SkyAffixer_reset() {
|
328
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeScrollListeners).call(this);
|
329
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeResizeListener).call(this);
|
330
|
-
__classPrivateFieldSet(this, _SkyAffixer_overflowParents, [], "f");
|
331
|
-
__classPrivateFieldSet(this, _SkyAffixer_instances, __classPrivateFieldSet(this, _SkyAffixer_baseElement, __classPrivateFieldSet(this, _SkyAffixer_currentPlacement, __classPrivateFieldSet(this, _SkyAffixer_currentOffset, undefined, "f"), "f"), "f"), "a", _SkyAffixer_config_set);
|
332
|
-
}, _SkyAffixer_isNewOffset = function _SkyAffixer_isNewOffset(offset) {
|
333
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f") === undefined) {
|
334
|
-
__classPrivateFieldSet(this, _SkyAffixer_currentOffset, offset, "f");
|
335
|
-
return true;
|
336
|
-
}
|
337
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f").top === offset.top &&
|
338
|
-
__classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f").left === offset.left) {
|
339
|
-
return false;
|
340
|
-
}
|
341
|
-
__classPrivateFieldSet(this, _SkyAffixer_currentOffset, offset, "f");
|
342
|
-
return true;
|
343
|
-
}, _SkyAffixer_isBaseElementVisible = function _SkyAffixer_isBaseElementVisible() {
|
344
|
-
if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
|
345
|
-
return false;
|
346
|
-
}
|
347
|
-
const baseRect = __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f").getBoundingClientRect();
|
348
|
-
return isOffsetPartiallyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this), {
|
349
|
-
top: baseRect.top,
|
350
|
-
left: baseRect.left,
|
351
|
-
right: baseRect.right,
|
352
|
-
bottom: baseRect.bottom,
|
353
|
-
}, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
|
354
|
-
}, _SkyAffixer_addScrollListeners = function _SkyAffixer_addScrollListeners() {
|
355
|
-
__classPrivateFieldSet(this, _SkyAffixer_scrollListeners, __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").map((parentElement) => {
|
356
|
-
const overflow = parentElement === document.body ? 'window' : parentElement;
|
357
|
-
return __classPrivateFieldGet(this, _SkyAffixer_renderer, "f").listen(overflow, 'scroll', () => {
|
358
|
-
__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
|
359
|
-
__classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").next();
|
360
|
-
});
|
361
|
-
}), "f");
|
362
|
-
}, _SkyAffixer_addResizeListener = function _SkyAffixer_addResizeListener() {
|
363
|
-
__classPrivateFieldSet(this, _SkyAffixer_resizeListener, fromEvent(window, 'resize').subscribe(() => __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this)), "f");
|
364
|
-
}, _SkyAffixer_removeResizeListener = function _SkyAffixer_removeResizeListener() {
|
365
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f")) {
|
366
|
-
__classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f").unsubscribe();
|
367
|
-
__classPrivateFieldSet(this, _SkyAffixer_resizeListener, undefined, "f");
|
368
|
-
}
|
369
|
-
}, _SkyAffixer_removeScrollListeners = function _SkyAffixer_removeScrollListeners() {
|
370
|
-
if (__classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f")) {
|
371
|
-
// Remove renderer-generated listeners by calling the listener itself.
|
372
|
-
// https://github.com/angular/angular/issues/9368#issuecomment-227199778
|
373
|
-
__classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f").forEach((listener) => listener());
|
374
|
-
__classPrivateFieldSet(this, _SkyAffixer_scrollListeners, undefined, "f");
|
375
|
-
}
|
376
|
-
};
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBT2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sYUFBYSxDQUFDO0FBa0JyQixNQUFNLG9CQUFvQixHQUEwQjtJQUNsRCxjQUFjLEVBQUUsc0JBQXNCLENBQUMsY0FBYztJQUNyRCxhQUFhLEVBQUUsS0FBSztJQUNwQixtQkFBbUIsRUFBRSxRQUFRO0lBQzdCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLE9BQU87Q0FDbkIsQ0FBQztBQUVGLE1BQU0sT0FBTyxVQUFVO0lBQ3JCOztPQUVHO0lBQ0gsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sdUJBQUEsSUFBSSxtQ0FBaUIsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsY0FBYztRQUN2QixPQUFPLHVCQUFBLElBQUkscUNBQW1CLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsZUFBZTtRQUN4QixPQUFPLHVCQUFBLElBQUksc0NBQW9CLENBQUM7SUFDbEMsQ0FBQztJQXFERCxZQUFZLGNBQTJCLEVBQUUsUUFBbUI7O1FBOUI1RCw2Q0FBNkI7UUFFN0IsMENBQXNDO1FBRXRDLDRDQUEyQztRQUUzQywrQ0FBaUQ7UUFFakQsMkNBQTZDO1FBRTdDLDhDQUFtRDtR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QVgsSUFBSSxDQUFTLENBQUM7WUFDZCx1QkFBQSxJQUFJLGtDQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLE1BQUEsQ0FBQztBQUNMLENBQUM7SUFHQyx1QkFBQSxJQUFJLDhCQUFtQixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDaEUsdUJBQUEsSUFBSSxnREFBTyxNQUFYLElBQUksQ0FBUyxDQUNkLE1BQUEsQ0FBQztBQUNKLENBQUM7SUFHQyxJQUFJLHVCQUFBLElBQUksa0NBQWdCLEVBQUU7UUFDeEIsdUJBQUEsSUFBSSxrQ0FBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyx1QkFBQSxJQUFJLDhCQUFtQixTQUFTLE1BQUEsQ0FBQztLQUNsQztBQUNILENBQUM7SUFHQyxJQUFJLHVCQUFBLElBQUksbUNBQWlCLEVBQUU7UUFDekIsc0VBQXNFO1FBQ3RFLHdFQUF3RTtRQUN4RSx1QkFBQSxJQUFJLG1DQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RCx1QkFBQSxJQUFJLCtCQUFvQixTQUFTLE1BQUEsQ0FBQztLQUNuQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5QWZmaXhBdXRvRml0Q29udGV4dCB9IGZyb20gJy4vYWZmaXgtYXV0by1maXQtY29udGV4dCc7XG5pbXBvcnQgeyBTa3lBZmZpeENvbmZpZyB9IGZyb20gJy4vYWZmaXgtY29uZmlnJztcbmltcG9ydCB7IFNreUFmZml4T2Zmc2V0IH0gZnJvbSAnLi9hZmZpeC1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5QWZmaXhPZmZzZXRDaGFuZ2UgfSBmcm9tICcuL2FmZml4LW9mZnNldC1jaGFuZ2UnO1xuaW1wb3J0IHsgU2t5QWZmaXhQbGFjZW1lbnQgfSBmcm9tICcuL2FmZml4LXBsYWNlbWVudCc7XG5pbXBvcnQgeyBTa3lBZmZpeFBsYWNlbWVudENoYW5nZSB9IGZyb20gJy4vYWZmaXgtcGxhY2VtZW50LWNoYW5nZSc7XG5pbXBvcnQgeyBBZmZpeFJlY3QgfSBmcm9tICcuL2FmZml4LXJlY3QnO1xuaW1wb3J0IHsgZ2V0SW52ZXJzZVBsYWNlbWVudCwgZ2V0TmV4dFBsYWNlbWVudCB9IGZyb20gJy4vYWZmaXgtdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0RWxlbWVudE9mZnNldCxcbiAgZ2V0T3ZlcmZsb3dQYXJlbnRzLFxuICBpc09mZnNldEZ1bGx5VmlzaWJsZVdpdGhpblBhcmVudCxcbiAgaXNPZmZzZXRQYXJ0aWFsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxufSBmcm9tICcuL2RvbS11dGlscyc7XG5cbi8qKlxuICogTWFrZSBzcGVjaWZpYyBwcm9wZXJ0aWVzIHJlcXVpcmVkLCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG9cbiAqIGRvIG51bGwgY2hlY2tzIHRocm91Z2hvdXQgdGhpcyBmaWxlLlxuICovXG50eXBlIEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IFNreUFmZml4Q29uZmlnICZcbiAgUmVxdWlyZWQ8XG4gICAgUGljazxcbiAgICAgIFNreUFmZml4Q29uZmlnLFxuICAgICAgfCAnYXV0b0ZpdENvbnRleHQnXG4gICAgICB8ICdlbmFibGVBdXRvRml0J1xuICAgICAgfCAnaG9yaXpvbnRhbEFsaWdubWVudCdcbiAgICAgIHwgJ2lzU3RpY2t5J1xuICAgICAgfCAncGxhY2VtZW50J1xuICAgID5cbiAgPjtcblxuY29uc3QgREVGQVVMVF9BRkZJWF9DT05GSUc6IEFmZml4Q29uZmlnT3JEZWZhdWx0cyA9IHtcbiAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuT3ZlcmZsb3dQYXJlbnQsXG4gIGVuYWJsZUF1dG9GaXQ6IGZhbHNlLFxuICBob3Jpem9udGFsQWxpZ25tZW50OiAnY2VudGVyJyxcbiAgaXNTdGlja3k6IGZhbHNlLFxuICBwbGFjZW1lbnQ6ICdhYm92ZScsXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5QWZmaXhlciB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhZmZpeGVkIGVsZW1lbnQncyBvZmZzZXQgY2hhbmdlcy5cbiAgICovXG4gIHB1YmxpYyBnZXQgb2Zmc2V0Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+IHtcbiAgICByZXR1cm4gdGhpcy4jb2Zmc2V0Q2hhbmdlT2JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGJhc2UgZWxlbWVudCdzIG5lYXJlc3Qgb3ZlcmZsb3cgcGFyZW50IGlzIHNjcm9sbGluZy4gVGhpcyBpcyB1c2VmdWwgaWYgeW91IG5lZWRcbiAgICogdG8gcGVyZm9ybSBhbiBhZGRpdGlvbmFsIGFjdGlvbiBkdXJpbmcgdGhlIHNjcm9sbCBldmVudCBidXQgZG9uJ3Qgd2FudCB0byBnZW5lcmF0ZSBhbm90aGVyXG4gICAqIGV2ZW50IGxpc3RlbmVyLlxuICAgKi9cbiAgcHVibGljIGdldCBvdmVyZmxvd1Njcm9sbCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jb3ZlcmZsb3dTY3JvbGxPYnM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgcGxhY2VtZW50IHZhbHVlIGNoYW5nZXMuIEEgYG51bGxgIHZhbHVlIGluZGljYXRlcyB0aGF0IGEgc3VpdGFibGVcbiAgICogcGxhY2VtZW50IGNvdWxkIG5vdCBiZSBmb3VuZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGxhY2VtZW50Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+IHtcbiAgICByZXR1cm4gdGhpcy4jcGxhY2VtZW50Q2hhbmdlT2JzO1xuICB9XG5cbiAgZ2V0ICNjb25maWcoKTogQWZmaXhDb25maWdPckRlZmF1bHRzIHtcbiAgICByZXR1cm4gdGhpcy4jX2NvbmZpZztcbiAgfVxuXG4gIHNldCAjY29uZmlnKHZhbHVlOiBTa3lBZmZpeENvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1lcmdlZDogQWZmaXhDb25maWdPckRlZmF1bHRzID0ge1xuICAgICAgLi4uREVGQVVMVF9BRkZJWF9DT05GSUcsXG4gICAgICAuLi52YWx1ZSxcbiAgICB9O1xuXG4gICAgLy8gTWFrZSBzdXJlIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgdW5kZWZpbmVkLlxuICAgIGxldCBrZXk6IGtleW9mIHR5cGVvZiBtZXJnZWQ7XG4gICAgZm9yIChrZXkgaW4gbWVyZ2VkKSB7XG4gICAgICBpZiAobWVyZ2VkW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAobWVyZ2VkIGFzIGFueSlba2V5XSA9IERFRkFVTFRfQUZGSVhfQ09ORklHW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jX2NvbmZpZyA9IG1lcmdlZDtcbiAgfVxuXG4gICNhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgI2Jhc2VFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudE9mZnNldDogU2t5QWZmaXhPZmZzZXQgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRQbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNvZmZzZXRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvZmZzZXRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhPZmZzZXRDaGFuZ2U+O1xuXG4gICNvdmVyZmxvd1BhcmVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAjb3ZlcmZsb3dTY3JvbGw6IFN1YmplY3Q8dm9pZD47XG5cbiAgI292ZXJmbG93U2Nyb2xsT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2U6IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNwbGFjZW1lbnRDaGFuZ2VPYnM6IE9ic2VydmFibGU8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+O1xuXG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICNyZXNpemVMaXN0ZW5lcjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICNzY3JvbGxMaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdIHwgdW5kZWZpbmVkO1xuXG4gICNfY29uZmlnOiBBZmZpeENvbmZpZ09yRGVmYXVsdHMgPSBERUZBVUxUX0FGRklYX0NPTkZJRztcblxuICBjb25zdHJ1Y3RvcihhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQsIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLiNhZmZpeGVkRWxlbWVudCA9IGFmZml4ZWRFbGVtZW50O1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXI7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgdGhpcy4jcGxhY2VtZW50Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2VPYnMgPSB0aGlzLiNvZmZzZXRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGxPYnMgPSB0aGlzLiNvdmVyZmxvd1Njcm9sbC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2VPYnMgPSB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWZmaXhlcyBhbiBlbGVtZW50IHRvIGEgYmFzZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gYmFzZUVsZW1lbnQgVGhlIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIGZvciB0aGUgYWZmaXggYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGFmZml4VG8oYmFzZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb25maWc/OiBTa3lBZmZpeENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuI3Jlc2V0KCk7XG5cbiAgICB0aGlzLiNjb25maWcgPSBjb25maWc7XG4gICAgdGhpcy4jYmFzZUVsZW1lbnQgPSBiYXNlRWxlbWVudDtcbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBnZXRPdmVyZmxvd1BhcmVudHMoYmFzZUVsZW1lbnQpO1xuXG4gICAgdGhpcy4jYWZmaXgoKTtcblxuICAgIGlmICh0aGlzLiNjb25maWcuaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuI2FkZFNjcm9sbExpc3RlbmVycygpO1xuICAgICAgdGhpcy4jYWRkUmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCk6IFNreUFmZml4Q29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy4jY29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLXJ1bnMgdGhlIGFmZml4IGNhbGN1bGF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWZmaXgoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgY3VycmVudCBwbGFjZW1lbnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID0gdGhpcy4jY29uZmlnLnBsYWNlbWVudDtcbiAgICB0aGlzLiNhZmZpeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBhZmZpeGVyLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzZXQoKTtcbiAgICB0aGlzLiNwbGFjZW1lbnRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvZmZzZXRDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNvdmVyZmxvd1Njcm9sbC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI2FmZml4KCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuI2dldE9mZnNldCgpO1xuXG4gICAgaWYgKHRoaXMuI2lzTmV3T2Zmc2V0KG9mZnNldCkpIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuI2FmZml4ZWRFbGVtZW50LCAndG9wJywgYCR7b2Zmc2V0LnRvcH1weGApO1xuICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUodGhpcy4jYWZmaXhlZEVsZW1lbnQsICdsZWZ0JywgYCR7b2Zmc2V0LmxlZnR9cHhgKTtcblxuICAgICAgdGhpcy4jb2Zmc2V0Q2hhbmdlLm5leHQoeyBvZmZzZXQgfSk7XG4gICAgfVxuICB9XG5cbiAgI2dldE9mZnNldCgpOiBTa3lBZmZpeE9mZnNldCB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy4jZ2V0QXV0b0ZpdENvbnRleHRQYXJlbnQoKTtcblxuICAgIGNvbnN0IG1heEF0dGVtcHRzID0gNDtcbiAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuXG4gICAgbGV0IGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUgPSBmYWxzZTtcbiAgICBsZXQgb2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD47XG4gICAgbGV0IHBsYWNlbWVudCA9IHRoaXMuI2NvbmZpZy5wbGFjZW1lbnQ7XG5cbiAgICBjb25zdCBhdXRvRml0T3ZlcmZsb3dPZmZzZXQgPSB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0IHx8IHtcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRvcDogMCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuI2NvbmZpZy5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgYXV0b0ZpdE92ZXJmbG93T2Zmc2V0LnRvcCA9XG4gICAgICAgIChhdXRvRml0T3ZlcmZsb3dPZmZzZXQudG9wIHx8IDApICsgd2luZG93LnNjcm9sbFk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgb2Zmc2V0ID0gdGhpcy4jZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudCk7XG4gICAgICBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICBhdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy4jY29uZmlnLmVuYWJsZUF1dG9GaXQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSkge1xuICAgICAgICBwbGFjZW1lbnQgPVxuICAgICAgICAgIGF0dGVtcHRzICUgMiA9PT0gMFxuICAgICAgICAgICAgPyBnZXRJbnZlcnNlUGxhY2VtZW50KHBsYWNlbWVudClcbiAgICAgICAgICAgIDogZ2V0TmV4dFBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBhdHRlbXB0cysrO1xuICAgIH0gd2hpbGUgKCFpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlICYmIGF0dGVtcHRzIDwgbWF4QXR0ZW1wdHMpO1xuXG4gICAgaWYgKGlzQWZmaXhlZEVsZW1lbnRGdWxseVZpc2libGUpIHtcbiAgICAgIGlmICh0aGlzLiNpc0Jhc2VFbGVtZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIHRoaXMuI25vdGlmeVBsYWNlbWVudENoYW5nZShwbGFjZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgdGhpcy4jbm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgIH1cblxuICAgIC8vIE5vIHN1aXRhYmxlIHBsYWNlbWVudCB3YXMgZm91bmQsIHNvIHJldmVydCB0byBwcmVmZXJyZWQgcGxhY2VtZW50LlxuICAgIHJldHVybiB0aGlzLiNnZXRQcmVmZXJyZWRPZmZzZXQodGhpcy4jY29uZmlnLnBsYWNlbWVudCk7XG4gIH1cblxuICAjZ2V0UmVjdChiYXNlRWxlbWVudDogSFRNTEVsZW1lbnQpOiBBZmZpeFJlY3Qge1xuICAgIGNvbnN0IGJhc2VEb21SZWN0ID0gYmFzZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBiYXNlUmVjdDogQWZmaXhSZWN0ID0ge1xuICAgICAgdG9wOiBiYXNlRG9tUmVjdC50b3AsXG4gICAgICBib3R0b206IGJhc2VEb21SZWN0LmJvdHRvbSxcbiAgICAgIGxlZnQ6IGJhc2VEb21SZWN0LmxlZnQsXG4gICAgICByaWdodDogYmFzZURvbVJlY3QucmlnaHQsXG4gICAgICB3aWR0aDogYmFzZURvbVJlY3Qud2lkdGgsXG4gICAgICBoZWlnaHQ6IGJhc2VEb21SZWN0LmhlaWdodCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuI2NvbmZpZy5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgYmFzZVJlY3QudG9wICs9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgYmFzZVJlY3QuYm90dG9tID0gYmFzZVJlY3QudG9wICsgYmFzZURvbVJlY3QuaGVpZ2h0O1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlUmVjdDtcbiAgfVxuXG4gICNnZXRQcmVmZXJyZWRPZmZzZXQocGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCk6IFJlcXVpcmVkPFNreUFmZml4T2Zmc2V0PiB7XG4gICAgaWYgKCF0aGlzLiNiYXNlRWxlbWVudCkge1xuICAgICAgcmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwLCBib3R0b206IDAsIHJpZ2h0OiAwIH07XG4gICAgfVxuXG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSB0aGlzLiNnZXRSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50KTtcbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2dldFJlY3QodGhpcy4jYmFzZUVsZW1lbnQpO1xuXG4gICAgY29uc3QgaG9yaXpvbnRhbEFsaWdubWVudCA9IHRoaXMuI2NvbmZpZy5ob3Jpem9udGFsQWxpZ25tZW50O1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy4jY29uZmlnLnZlcnRpY2FsQWxpZ25tZW50O1xuICAgIGNvbnN0IGVuYWJsZUF1dG9GaXQgPSB0aGlzLiNjb25maWcuZW5hYmxlQXV0b0ZpdDtcblxuICAgIGxldCB0b3A6IG51bWJlcjtcbiAgICBsZXQgbGVmdDogbnVtYmVyO1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gJ2Fib3ZlJyB8fCBwbGFjZW1lbnQgPT09ICdiZWxvdycpIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScpIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgdG9wID0gdG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWlkZGxlJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tO1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGhvcml6b250YWxBbGlnbm1lbnQpIHtcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LmxlZnQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCArIGJhc2VSZWN0LndpZHRoIC8gMiAtIGFmZml4ZWRSZWN0LndpZHRoIC8gMjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wICsgYmFzZVJlY3QuaGVpZ2h0IC8gMiAtIGFmZml4ZWRSZWN0LmhlaWdodCAvIDI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICB0b3AgPSBiYXNlUmVjdC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2Zmc2V0OiBSZXF1aXJlZDxTa3lBZmZpeE9mZnNldD4gPSB7IHRvcCwgbGVmdCwgYm90dG9tOiAwLCByaWdodDogMCB9O1xuXG4gICAgaWYgKGVuYWJsZUF1dG9GaXQpIHtcbiAgICAgIGNvbnN0IGFkanVzdG1lbnRzID0gdGhpcy4jYWRqdXN0T2Zmc2V0VG9PdmVyZmxvd1BhcmVudChcbiAgICAgICAgeyB0b3AsIGxlZnQgfSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICB0aGlzLiNiYXNlRWxlbWVudFxuICAgICAgKTtcbiAgICAgIG9mZnNldC50b3AgPSBhZGp1c3RtZW50cy50b3A7XG4gICAgICBvZmZzZXQubGVmdCA9IGFkanVzdG1lbnRzLmxlZnQ7XG4gICAgfVxuXG4gICAgb2Zmc2V0LmJvdHRvbSA9IG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgb2Zmc2V0LnJpZ2h0ID0gb2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aDtcblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogU2xpZ2h0bHkgYWRqdXN0IHRoZSBvZmZzZXQgdG8gZml0IHdpdGhpbiB0aGUgc2Nyb2xsIHBhcmVudCdzIGJvdW5kYXJpZXMgaWZcbiAgICogdGhlIGFmZml4ZWQgZWxlbWVudCB3b3VsZCBvdGhlcndpc2UgYmUgY2xpcHBlZC5cbiAgICovXG4gICNhZGp1c3RPZmZzZXRUb092ZXJmbG93UGFyZW50KFxuICAgIG9mZnNldDogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0sXG4gICAgcGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCxcbiAgICBiYXNlRWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG4gICAgY29uc3QgcGFyZW50T2Zmc2V0ID0gZ2V0RWxlbWVudE9mZnNldChcbiAgICAgIHBhcmVudCxcbiAgICAgIHRoaXMuI2NvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICApO1xuXG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSB0aGlzLiNnZXRSZWN0KHRoaXMuI2FmZml4ZWRFbGVtZW50KTtcbiAgICBjb25zdCBiYXNlUmVjdCA9IHRoaXMuI2dldFJlY3QoYmFzZUVsZW1lbnQpO1xuXG4gICAgLy8gQSBwaXhlbCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGxlZXdheSBiZXR3ZWVuIHRoZSBlZGdlIG9mIHRoZSBvdmVyZmxvdyBwYXJlbnQgYW5kIHRoZSBlZGdlXG4gICAgLy8gb2YgdGhlIGJhc2UgZWxlbWVudCBiZWZvcmUgaXQgZGlzYXBwZWFycyBmcm9tIHZpZXcuXG4gICAgLy8gSWYgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgYmFzZSBlbGVtZW50IGlzIGxlc3MgdGhhbiB0aGlzIHBpeGVsIHZhbHVlLCB0aGUgYXV0by1maXRcbiAgICAvLyBmdW5jdGlvbmFsaXR5IGF0dGVtcHRzIHRvIGZpbmQgYW5vdGhlciBwbGFjZW1lbnQuXG4gICAgY29uc3QgZGVmYXVsdFBpeGVsVG9sZXJhbmNlID0gNDA7XG4gICAgbGV0IHBpeGVsVG9sZXJhbmNlOiBudW1iZXI7XG5cbiAgICBjb25zdCBvcmlnaW5hbE9mZnNldFRvcCA9IG9mZnNldC50b3A7XG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRMZWZ0ID0gb2Zmc2V0LmxlZnQ7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSAnYWJvdmUnOlxuICAgICAgY2FzZSAnYmVsb3cnOlxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQubGVmdCA8IHBhcmVudE9mZnNldC5sZWZ0KSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBwYXJlbnRPZmZzZXQubGVmdDtcbiAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQubGVmdCArIGFmZml4ZWRSZWN0LndpZHRoID4gcGFyZW50T2Zmc2V0LnJpZ2h0KSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBwYXJlbnRPZmZzZXQucmlnaHQgLSBhZmZpeGVkUmVjdC53aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBhIHNtYWxsZXIgcGl4ZWwgdG9sZXJhbmNlIGlmIHRoZSBiYXNlIGVsZW1lbnQgd2lkdGggaXMgbGVzcyB0aGFuIHRoZSBkZWZhdWx0LlxuICAgICAgICBwaXhlbFRvbGVyYW5jZSA9IE1hdGgubWluKGRlZmF1bHRQaXhlbFRvbGVyYW5jZSwgYmFzZVJlY3Qud2lkdGgpO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC5sZWZ0ICsgcGl4ZWxUb2xlcmFuY2UgPiBiYXNlUmVjdC5yaWdodCB8fFxuICAgICAgICAgIG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGggLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LmxlZnRcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgPSBvcmlnaW5hbE9mZnNldExlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIC8vIEtlZXAgdGhlIGFmZml4ZWQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJmbG93IHBhcmVudC5cbiAgICAgICAgaWYgKG9mZnNldC50b3AgPCBwYXJlbnRPZmZzZXQudG9wKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC50b3A7XG4gICAgICAgIH0gZWxzZSBpZiAob2Zmc2V0LnRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCA+IHBhcmVudE9mZnNldC5ib3R0b20pIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gcGFyZW50T2Zmc2V0LmJvdHRvbSAtIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVzZSBhIHNtYWxsZXIgcGl4ZWwgdG9sZXJhbmNlIGlmIHRoZSBiYXNlIGVsZW1lbnQgaGVpZ2h0IGlzIGxlc3MgdGhhbiB0aGUgZGVmYXVsdC5cbiAgICAgICAgcGl4ZWxUb2xlcmFuY2UgPSBNYXRoLm1pbihkZWZhdWx0UGl4ZWxUb2xlcmFuY2UsIGJhc2VSZWN0LmhlaWdodCk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZmZpeGVkIGVsZW1lbnQgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgYmFzZSBlbGVtZW50LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2Zmc2V0LnRvcCArIHBpeGVsVG9sZXJhbmNlID4gYmFzZVJlY3QuYm90dG9tIHx8XG4gICAgICAgICAgb2Zmc2V0LnRvcCArIGFmZml4ZWRSZWN0LmhlaWdodCAtIHBpeGVsVG9sZXJhbmNlIDwgYmFzZVJlY3QudG9wXG4gICAgICAgICkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBvcmlnaW5hbE9mZnNldFRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICAjZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNvdmVyZmxvd1BhcmVudHNbdGhpcy4jb3ZlcmZsb3dQYXJlbnRzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgI2dldEF1dG9GaXRDb250ZXh0UGFyZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHRoaXMuI292ZXJmbG93UGFyZW50c1swXTtcblxuICAgIHJldHVybiB0aGlzLiNjb25maWcuYXV0b0ZpdENvbnRleHQgPT09IFNreUFmZml4QXV0b0ZpdENvbnRleHQuT3ZlcmZsb3dQYXJlbnRcbiAgICAgID8gdGhpcy4jZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKVxuICAgICAgOiBib2R5RWxlbWVudDtcbiAgfVxuXG4gICNub3RpZnlQbGFjZW1lbnRDaGFuZ2UocGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VycmVudFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50ID8/IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuI3BsYWNlbWVudENoYW5nZS5uZXh0KHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3Jlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuI3JlbW92ZVNjcm9sbExpc3RlbmVycygpO1xuICAgIHRoaXMuI3JlbW92ZVJlc2l6ZUxpc3RlbmVyKCk7XG5cbiAgICB0aGlzLiNvdmVyZmxvd1BhcmVudHMgPSBbXTtcblxuICAgIHRoaXMuI2NvbmZpZyA9XG4gICAgICB0aGlzLiNiYXNlRWxlbWVudCA9XG4gICAgICB0aGlzLiNjdXJyZW50UGxhY2VtZW50ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPVxuICAgICAgICB1bmRlZmluZWQ7XG4gIH1cblxuICAjaXNOZXdPZmZzZXQob2Zmc2V0OiBTa3lBZmZpeE9mZnNldCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLiNjdXJyZW50T2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNjdXJyZW50T2Zmc2V0LnRvcCA9PT0gb2Zmc2V0LnRvcCAmJlxuICAgICAgdGhpcy4jY3VycmVudE9mZnNldC5sZWZ0ID09PSBvZmZzZXQubGVmdFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gICNpc0Jhc2VFbGVtZW50VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuI2Jhc2VFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLiNiYXNlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIHJldHVybiBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gICAgICB0aGlzLiNnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpLFxuICAgICAge1xuICAgICAgICB0b3A6IGJhc2VSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogYmFzZVJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQ6IGJhc2VSZWN0LnJpZ2h0LFxuICAgICAgICBib3R0b206IGJhc2VSZWN0LmJvdHRvbSxcbiAgICAgIH0sXG4gICAgICB0aGlzLiNjb25maWcuYXV0b0ZpdE92ZXJmbG93T2Zmc2V0XG4gICAgKTtcbiAgfVxuXG4gICNhZGRTY3JvbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jc2Nyb2xsTGlzdGVuZXJzID0gdGhpcy4jb3ZlcmZsb3dQYXJlbnRzLm1hcCgocGFyZW50RWxlbWVudCkgPT4ge1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPVxuICAgICAgICBwYXJlbnRFbGVtZW50ID09PSBkb2N1bWVudC5ib2R5ID8gJ3dpbmRvdycgOiBwYXJlbnRFbGVtZW50O1xuICAgICAgcmV0dXJuIHRoaXMuI3JlbmRlcmVyLmxpc3RlbihvdmVyZmxvdywgJ3Njcm9sbCcsICgpID0+IHtcbiAgICAgICAgdGhpcy4jYWZmaXgoKTtcbiAgICAgICAgdGhpcy4jb3ZlcmZsb3dTY3JvbGwubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAjYWRkUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVzaXplTGlzdGVuZXIgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykuc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLiNhZmZpeCgpXG4gICAgKTtcbiAgfVxuXG4gICNyZW1vdmVSZXNpemVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jcmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuI3Jlc2l6ZUxpc3RlbmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLiNyZXNpemVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNzY3JvbGxMaXN0ZW5lcnMpIHtcbiAgICAgIC8vIFJlbW92ZSByZW5kZXJlci1nZW5lcmF0ZWQgbGlzdGVuZXJzIGJ5IGNhbGxpbmcgdGhlIGxpc3RlbmVyIGl0c2VsZi5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzkzNjgjaXNzdWVjb21tZW50LTIyNzE5OTc3OFxuICAgICAgdGhpcy4jc2Nyb2xsTGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcigpKTtcbiAgICAgIHRoaXMuI3Njcm9sbExpc3RlbmVycyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -1,31 +0,0 @@
|
|
1
|
-
var _SkyDefaultInputProvider_instances, _SkyDefaultInputProvider_props, _SkyDefaultInputProvider_getSubject;
|
2
|
-
import { __classPrivateFieldGet } from "tslib";
|
3
|
-
import { ReplaySubject } from 'rxjs';
|
4
|
-
/**
|
5
|
-
* @internal
|
6
|
-
* An API to provide default Angular component input values to child components.
|
7
|
-
*/
|
8
|
-
export class SkyDefaultInputProvider {
|
9
|
-
constructor() {
|
10
|
-
_SkyDefaultInputProvider_instances.add(this);
|
11
|
-
_SkyDefaultInputProvider_props.set(this, {});
|
12
|
-
}
|
13
|
-
setValue(componentName, inputName, value) {
|
14
|
-
const subject = __classPrivateFieldGet(this, _SkyDefaultInputProvider_instances, "m", _SkyDefaultInputProvider_getSubject).call(this, componentName, inputName);
|
15
|
-
subject.next(value);
|
16
|
-
}
|
17
|
-
getValue(componentName, inputName) {
|
18
|
-
const test = __classPrivateFieldGet(this, _SkyDefaultInputProvider_instances, "m", _SkyDefaultInputProvider_getSubject).call(this, componentName, inputName);
|
19
|
-
return test.asObservable();
|
20
|
-
}
|
21
|
-
}
|
22
|
-
_SkyDefaultInputProvider_props = new WeakMap(), _SkyDefaultInputProvider_instances = new WeakSet(), _SkyDefaultInputProvider_getSubject = function _SkyDefaultInputProvider_getSubject(componentName, inputName) {
|
23
|
-
const componentSubjects = __classPrivateFieldGet(this, _SkyDefaultInputProvider_props, "f")[componentName] || {};
|
24
|
-
const inputSubject = componentSubjects[inputName];
|
25
|
-
if (!inputSubject) {
|
26
|
-
componentSubjects[inputName] = new ReplaySubject(1);
|
27
|
-
__classPrivateFieldGet(this, _SkyDefaultInputProvider_props, "f")[componentName] = componentSubjects;
|
28
|
-
}
|
29
|
-
return componentSubjects[inputName];
|
30
|
-
};
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1pbnB1dC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9kZWZhdWx0LWlucHV0LXByb3ZpZGVyL2RlZmF1bHQtaW5wdXQtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpEOzs7R0FHRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFBcEM7O1FBQ0UseUNBQWlFLEVBQUUsRUFBQztJQTZCdEUsQ0FBQztJQTNCUSxRQUFRLENBQUksYUFBcUIsRUFBRSxTQUFpQixFQUFFLEtBQVE7UUFDbkUsTUFBTSxPQUFPLEdBQUcsdUJBQUEsSUFBSSwrRUFBWSxNQUFoQixJQUFJLEVBQWEsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFFBQVEsQ0FDYixhQUFxQixFQUNyQixTQUFpQjtRQUVqQixNQUFNLElBQUksR0FBRyx1QkFBQSxJQUFJLCtFQUFZLE1BQWhCLElBQUksRUFBYSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFtQixDQUFDO0lBQzlDLENBQUM7Q0FnQkY7dUxBYkcsYUFBcUIsRUFDckIsU0FBaUI7SUFFakIsTUFBTSxpQkFBaUIsR0FBRyx1QkFBQSxJQUFJLHNDQUFPLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWxELElBQUksQ0FBQyxZQUFZLEVBQUU7UUFDakIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsdUJBQUEsSUFBSSxzQ0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0tBQ2hEO0lBRUQsT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQW4gQVBJIHRvIHByb3ZpZGUgZGVmYXVsdCBBbmd1bGFyIGNvbXBvbmVudCBpbnB1dCB2YWx1ZXMgdG8gY2hpbGQgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreURlZmF1bHRJbnB1dFByb3ZpZGVyIHtcbiAgI3Byb3BzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBSZXBsYXlTdWJqZWN0PHVua25vd24+Pj4gPSB7fTtcblxuICBwdWJsaWMgc2V0VmFsdWU8VD4oY29tcG9uZW50TmFtZTogc3RyaW5nLCBpbnB1dE5hbWU6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy4jZ2V0U3ViamVjdChjb21wb25lbnROYW1lLCBpbnB1dE5hbWUpO1xuICAgIHN1YmplY3QubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWU8VD4oXG4gICAgY29tcG9uZW50TmFtZTogc3RyaW5nLFxuICAgIGlucHV0TmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRlc3QgPSB0aGlzLiNnZXRTdWJqZWN0KGNvbXBvbmVudE5hbWUsIGlucHV0TmFtZSk7XG4gICAgcmV0dXJuIHRlc3QuYXNPYnNlcnZhYmxlKCkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuXG4gICNnZXRTdWJqZWN0KFxuICAgIGNvbXBvbmVudE5hbWU6IHN0cmluZyxcbiAgICBpbnB1dE5hbWU6IHN0cmluZ1xuICApOiBSZXBsYXlTdWJqZWN0PHVua25vd24+IHtcbiAgICBjb25zdCBjb21wb25lbnRTdWJqZWN0cyA9IHRoaXMuI3Byb3BzW2NvbXBvbmVudE5hbWVdIHx8IHt9O1xuICAgIGNvbnN0IGlucHV0U3ViamVjdCA9IGNvbXBvbmVudFN1YmplY3RzW2lucHV0TmFtZV07XG5cbiAgICBpZiAoIWlucHV0U3ViamVjdCkge1xuICAgICAgY29tcG9uZW50U3ViamVjdHNbaW5wdXROYW1lXSA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xuICAgICAgdGhpcy4jcHJvcHNbY29tcG9uZW50TmFtZV0gPSBjb21wb25lbnRTdWJqZWN0cztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50U3ViamVjdHNbaW5wdXROYW1lXTtcbiAgfVxufVxuIl19
|
@@ -1,83 +0,0 @@
|
|
1
|
-
var _SkyDockDomAdapterService_instances, _SkyDockDomAdapterService_currentDockHeight, _SkyDockDomAdapterService_mutationSvc, _SkyDockDomAdapterService_ngUnsubscribe, _SkyDockDomAdapterService_observer, _SkyDockDomAdapterService_renderer, _SkyDockDomAdapterService_styleElement, _SkyDockDomAdapterService_adjustBodyStyles, _SkyDockDomAdapterService_destroyStyleElement;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Injectable, } from '@angular/core';
|
4
|
-
import { Subject, fromEvent as observableFromEvent } from 'rxjs';
|
5
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "../mutation/mutation-observer-service";
|
8
|
-
/**
|
9
|
-
* @internal
|
10
|
-
*/
|
11
|
-
export class SkyDockDomAdapterService {
|
12
|
-
constructor(mutationSvc, rendererFactory) {
|
13
|
-
_SkyDockDomAdapterService_instances.add(this);
|
14
|
-
_SkyDockDomAdapterService_currentDockHeight.set(this, void 0);
|
15
|
-
_SkyDockDomAdapterService_mutationSvc.set(this, void 0);
|
16
|
-
_SkyDockDomAdapterService_ngUnsubscribe.set(this, new Subject());
|
17
|
-
_SkyDockDomAdapterService_observer.set(this, void 0);
|
18
|
-
_SkyDockDomAdapterService_renderer.set(this, void 0);
|
19
|
-
_SkyDockDomAdapterService_styleElement.set(this, void 0);
|
20
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_mutationSvc, mutationSvc, "f");
|
21
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
|
22
|
-
}
|
23
|
-
ngOnDestroy() {
|
24
|
-
if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f")) {
|
25
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f").disconnect();
|
26
|
-
}
|
27
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f").next();
|
28
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f").complete();
|
29
|
-
if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f")) {
|
30
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_destroyStyleElement).call(this);
|
31
|
-
}
|
32
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_currentDockHeight, __classPrivateFieldSet(this, _SkyDockDomAdapterService_observer, __classPrivateFieldSet(this, _SkyDockDomAdapterService_styleElement, undefined, "f"), "f"), "f");
|
33
|
-
}
|
34
|
-
setSticky(elementRef) {
|
35
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").addClass(elementRef.nativeElement, 'sky-dock-sticky');
|
36
|
-
}
|
37
|
-
setZIndex(zIndex, elementRef) {
|
38
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").setStyle(elementRef.nativeElement, 'z-index', zIndex);
|
39
|
-
}
|
40
|
-
unbindDock(elementRef) {
|
41
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").addClass(elementRef.nativeElement, 'sky-dock-unbound');
|
42
|
-
}
|
43
|
-
watchDomChanges(elementRef) {
|
44
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_observer, __classPrivateFieldGet(this, _SkyDockDomAdapterService_mutationSvc, "f").create(() => {
|
45
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_adjustBodyStyles).call(this, elementRef);
|
46
|
-
}), "f");
|
47
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f").observe(elementRef.nativeElement, {
|
48
|
-
attributes: true,
|
49
|
-
childList: true,
|
50
|
-
characterData: true,
|
51
|
-
subtree: true,
|
52
|
-
});
|
53
|
-
observableFromEvent(window, 'resize')
|
54
|
-
.pipe(debounceTime(250), takeUntil(__classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f")))
|
55
|
-
.subscribe(() => __classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_adjustBodyStyles).call(this, elementRef));
|
56
|
-
}
|
57
|
-
}
|
58
|
-
_SkyDockDomAdapterService_currentDockHeight = new WeakMap(), _SkyDockDomAdapterService_mutationSvc = new WeakMap(), _SkyDockDomAdapterService_ngUnsubscribe = new WeakMap(), _SkyDockDomAdapterService_observer = new WeakMap(), _SkyDockDomAdapterService_renderer = new WeakMap(), _SkyDockDomAdapterService_styleElement = new WeakMap(), _SkyDockDomAdapterService_instances = new WeakSet(), _SkyDockDomAdapterService_adjustBodyStyles = function _SkyDockDomAdapterService_adjustBodyStyles(elementRef) {
|
59
|
-
const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;
|
60
|
-
if (dockHeight === __classPrivateFieldGet(this, _SkyDockDomAdapterService_currentDockHeight, "f")) {
|
61
|
-
return;
|
62
|
-
}
|
63
|
-
// Create a style element to avoid overwriting any existing inline body styles.
|
64
|
-
const styleElement = __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").createElement('style');
|
65
|
-
const textNode = __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").createText(`body { margin-bottom: ${dockHeight}px; }`);
|
66
|
-
// Apply a `data-` attribute to make unit testing easier.
|
67
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").setAttribute(styleElement, 'data-test-selector', 'sky-layout-dock-bottom-styles');
|
68
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").appendChild(styleElement, textNode);
|
69
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").appendChild(document.head, styleElement);
|
70
|
-
if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f")) {
|
71
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_destroyStyleElement).call(this);
|
72
|
-
}
|
73
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_currentDockHeight, dockHeight, "f");
|
74
|
-
__classPrivateFieldSet(this, _SkyDockDomAdapterService_styleElement, styleElement, "f");
|
75
|
-
}, _SkyDockDomAdapterService_destroyStyleElement = function _SkyDockDomAdapterService_destroyStyleElement() {
|
76
|
-
__classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").removeChild(document.head, __classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f"));
|
77
|
-
};
|
78
|
-
SkyDockDomAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService, deps: [{ token: i1.SkyMutationObserverService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
79
|
-
SkyDockDomAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService });
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService, decorators: [{
|
81
|
-
type: Injectable
|
82
|
-
}], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i0.RendererFactory2 }]; } });
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLFVBQVUsR0FJWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJekQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQ0UsV0FBdUMsRUFDdkMsZUFBaUM7O1FBZG5DLDhEQUF1QztRQUV2Qyx3REFBeUM7UUFFekMsa0RBQWlCLElBQUksT0FBTyxFQUFRLEVBQUM7UUFFckMscURBQXdDO1FBRXhDLHFEQUFxQjtRQUVyQix5REFBNEM7UUFNMUMsdUJBQUEsSUFBSSx5Q0FBZ0IsV0FBVyxNQUFBLENBQUM7UUFDaEMsdUJBQUEsSUFBSSxzQ0FBYSxlQUFlLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBQSxDQUFDO0lBQ25FLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksdUJBQUEsSUFBSSwwQ0FBVSxFQUFFO1lBQ2xCLHVCQUFBLElBQUksMENBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUM3QjtRQUNELHVCQUFBLElBQUksK0NBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQix1QkFBQSxJQUFJLCtDQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0IsSUFBSSx1QkFBQSxJQUFJLDhDQUFjLEVBQUU7WUFDdEIsdUJBQUEsSUFBSSwwRkFBcUIsTUFBekIsSUFBSSxDQUF1QixDQUFDO1NB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RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQgYXMgb2JzZXJ2YWJsZUZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lEb2NrRG9tQWRhcHRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAjY3VycmVudERvY2tIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjbXV0YXRpb25TdmM6IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjb2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3N0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtdXRhdGlvblN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXG4gICkge1xuICAgIHRoaXMuI211dGF0aW9uU3ZjID0gbXV0YXRpb25TdmM7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jb2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuI29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgaWYgKHRoaXMuI3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy4jZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnREb2NrSGVpZ2h0ID0gdGhpcy4jb2JzZXJ2ZXIgPSB0aGlzLiNzdHlsZUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RpY2t5KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZG9jay1zdGlja3knKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRaSW5kZXgoekluZGV4OiBudW1iZXIsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5zZXRTdHlsZShlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd6LWluZGV4JywgekluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmJpbmREb2NrKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdza3ktZG9jay11bmJvdW5kJyk7XG4gIH1cblxuICBwdWJsaWMgd2F0Y2hEb21DaGFuZ2VzKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnNlcnZlciA9IHRoaXMuI211dGF0aW9uU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICB0aGlzLiNhZGp1c3RCb2R5U3R5bGVzKGVsZW1lbnRSZWYpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyNTApLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuI2FkanVzdEJvZHlTdHlsZXMoZWxlbWVudFJlZikpO1xuICB9XG5cbiAgI2FkanVzdEJvZHlTdHlsZXMoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGNvbnN0IGRvY2tIZWlnaHQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIGlmIChkb2NrSGVpZ2h0ID09PSB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIHN0eWxlIGVsZW1lbnQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgYW55IGV4aXN0aW5nIGlubGluZSBib2R5IHN0eWxlcy5cbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLiNyZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlVGV4dChcbiAgICAgIGBib2R5IHsgbWFyZ2luLWJvdHRvbTogJHtkb2NrSGVpZ2h0fXB4OyB9YFxuICAgICk7XG5cbiAgICAvLyBBcHBseSBhIGBkYXRhLWAgYXR0cmlidXRlIHRvIG1ha2UgdW5pdCB0ZXN0aW5nIGVhc2llci5cbiAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoXG4gICAgICBzdHlsZUVsZW1lbnQsXG4gICAgICAnZGF0YS10ZXN0LXNlbGVjdG9yJyxcbiAgICAgICdza3ktbGF5b3V0LWRvY2stYm90dG9tLXN0eWxlcydcbiAgICApO1xuXG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgdGhpcy4jcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuaGVhZCwgc3R5bGVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLiNzdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50RG9ja0hlaWdodCA9IGRvY2tIZWlnaHQ7XG4gICAgdGhpcy4jc3R5bGVFbGVtZW50ID0gc3R5bGVFbGVtZW50O1xuICB9XG5cbiAgI2Rlc3Ryb3lTdHlsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuaGVhZCwgdGhpcy4jc3R5bGVFbGVtZW50KTtcbiAgfVxufVxuIl19
|
@@ -1,34 +0,0 @@
|
|
1
|
-
var _SkyDockItem_destroyed, _SkyDockItem_destroyedObs;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Subject } from 'rxjs';
|
4
|
-
/**
|
5
|
-
* Represents a single item added to the dock.
|
6
|
-
*/
|
7
|
-
export class SkyDockItem {
|
8
|
-
/**
|
9
|
-
* An event that emits when the item is removed from the dock.
|
10
|
-
*/
|
11
|
-
get destroyed() {
|
12
|
-
return __classPrivateFieldGet(this, _SkyDockItem_destroyedObs, "f");
|
13
|
-
}
|
14
|
-
/**
|
15
|
-
* @param componentInstance The item's component instance.
|
16
|
-
* @param stackOrder The assigned stack order of the docked item.
|
17
|
-
*/
|
18
|
-
constructor(componentInstance, stackOrder) {
|
19
|
-
this.componentInstance = componentInstance;
|
20
|
-
this.stackOrder = stackOrder;
|
21
|
-
_SkyDockItem_destroyed.set(this, new Subject());
|
22
|
-
_SkyDockItem_destroyedObs.set(this, void 0);
|
23
|
-
__classPrivateFieldSet(this, _SkyDockItem_destroyedObs, __classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").asObservable(), "f");
|
24
|
-
}
|
25
|
-
/**
|
26
|
-
* Removes the item from the dock.
|
27
|
-
*/
|
28
|
-
destroy() {
|
29
|
-
__classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").next();
|
30
|
-
__classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").complete();
|
31
|
-
}
|
32
|
-
}
|
33
|
-
_SkyDockItem_destroyed = new WeakMap(), _SkyDockItem_destroyedObs = new WeakMap();
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL2RvY2svZG9jay1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sdUJBQUEsSUFBSSxpQ0FBYyxDQUFDO0lBQzVCLENBQUM7SUFNRDs7O09BR0c7SUFDSCxZQUNrQixpQkFBb0IsRUFDcEIsVUFBa0I7UUFEbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFHO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFWcEMsaUNBQWEsSUFBSSxPQUFPLEVBQVEsRUFBQztRQUVqQyw0Q0FBZ0M7UUFVOUIsdUJBQUEsSUFBSSw2QkFBaUIsdUJBQUEsSUFBSSw4QkFBVyxDQUFDLFlBQVksRUFBRSxNQUFBLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLHVCQUFBLElBQUksOEJBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2Qix1QkFBQSxJQUFJLDhCQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBzaW5nbGUgaXRlbSBhZGRlZCB0byB0aGUgZG9jay5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreURvY2tJdGVtPFQ+IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgaXRlbSBpcyByZW1vdmVkIGZyb20gdGhlIGRvY2suXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlc3Ryb3llZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jZGVzdHJveWVkT2JzO1xuICB9XG5cbiAgI2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2Rlc3Ryb3llZE9iczogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAvKipcbiAgICogQHBhcmFtIGNvbXBvbmVudEluc3RhbmNlIFRoZSBpdGVtJ3MgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAcGFyYW0gc3RhY2tPcmRlciBUaGUgYXNzaWduZWQgc3RhY2sgb3JkZXIgb2YgdGhlIGRvY2tlZCBpdGVtLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudEluc3RhbmNlOiBULFxuICAgIHB1YmxpYyByZWFkb25seSBzdGFja09yZGVyOiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy4jZGVzdHJveWVkT2JzID0gdGhpcy4jZGVzdHJveWVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGl0ZW0gZnJvbSB0aGUgZG9jay5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy4jZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|