@skyux/core 5.0.0-beta.9 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bundles/skyux-core-testing.umd.js +363 -234
- package/bundles/skyux-core-testing.umd.js.map +1 -1
- package/bundles/skyux-core.umd.js +3320 -2917
- package/bundles/skyux-core.umd.js.map +1 -1
- package/documentation.json +8855 -0
- package/esm2015/modules/adapter-service/adapter.module.js +11 -8
- package/esm2015/modules/adapter-service/adapter.service.js +14 -15
- package/esm2015/modules/adapter-service/focusable-children-options.js +2 -1
- package/esm2015/modules/affix/affix-auto-fit-context.js +1 -1
- package/esm2015/modules/affix/affix-config.js +2 -1
- package/esm2015/modules/affix/affix-horizontal-alignment.js +2 -1
- package/esm2015/modules/affix/affix-offset-change.js +2 -1
- package/esm2015/modules/affix/affix-offset.js +2 -1
- package/esm2015/modules/affix/affix-placement-change.js +2 -1
- package/esm2015/modules/affix/affix-placement.js +2 -1
- package/esm2015/modules/affix/affix-utils.js +1 -1
- package/esm2015/modules/affix/affix-vertical-alignment.js +2 -1
- package/esm2015/modules/affix/affix.directive.js +36 -49
- package/esm2015/modules/affix/affix.module.js +22 -17
- package/esm2015/modules/affix/affix.service.js +12 -15
- package/esm2015/modules/affix/affixer.js +1 -1
- package/esm2015/modules/affix/dom-utils.js +1 -1
- package/esm2015/modules/dock/dock-dom-adapter.service.js +23 -15
- package/esm2015/modules/dock/dock-insert-component-config.js +2 -1
- package/esm2015/modules/dock/dock-item-config.js +2 -1
- package/esm2015/modules/dock/dock-item-reference.js +2 -1
- package/esm2015/modules/dock/dock-item.js +1 -1
- package/esm2015/modules/dock/dock-location.js +19 -0
- package/esm2015/modules/dock/dock-options.js +2 -0
- package/esm2015/modules/dock/dock.component.js +48 -33
- package/esm2015/modules/dock/dock.module.js +28 -17
- package/esm2015/modules/dock/dock.service.js +44 -16
- package/esm2015/modules/dock/sort-by-stack-order.js +1 -1
- package/esm2015/modules/dynamic-component/dynamic-component-location.js +15 -3
- package/esm2015/modules/dynamic-component/dynamic-component-options.js +2 -1
- package/esm2015/modules/dynamic-component/dynamic-component.module.js +11 -8
- package/esm2015/modules/dynamic-component/dynamic-component.service.js +24 -23
- package/esm2015/modules/format/app-format.js +11 -11
- package/esm2015/modules/id/id.directive.js +14 -16
- package/esm2015/modules/id/id.module.js +18 -15
- package/esm2015/modules/log/log.module.js +11 -8
- package/esm2015/modules/log/log.service.js +11 -11
- package/esm2015/modules/media-query/media-breakpoints.js +1 -1
- package/esm2015/modules/media-query/media-query-listener.js +2 -1
- package/esm2015/modules/media-query/media-query.module.js +11 -8
- package/esm2015/modules/media-query/media-query.service.js +16 -20
- package/esm2015/modules/mutation/mutation-observer-service.js +11 -11
- package/esm2015/modules/numeric/numeric-symbol.js +2 -1
- package/esm2015/modules/numeric/numeric.module.js +30 -21
- package/esm2015/modules/numeric/numeric.options.js +6 -1
- package/esm2015/modules/numeric/numeric.pipe.js +35 -21
- package/esm2015/modules/numeric/numeric.service.js +13 -16
- package/esm2015/modules/overlay/overlay-adapter.service.js +13 -15
- package/esm2015/modules/overlay/overlay-config.js +2 -1
- package/esm2015/modules/overlay/overlay-context.js +1 -1
- package/esm2015/modules/overlay/overlay-instance.js +1 -1
- package/esm2015/modules/overlay/overlay.component.js +41 -44
- package/esm2015/modules/overlay/overlay.module.js +22 -17
- package/esm2015/modules/overlay/overlay.service.js +18 -26
- package/esm2015/modules/percent-pipe/percent-pipe.module.js +30 -21
- package/esm2015/modules/percent-pipe/percent.pipe.js +15 -15
- package/esm2015/modules/scrollable-host/scrollable-host.service.js +83 -0
- package/esm2015/modules/shared/number-format/number-format-utility.js +4 -3
- package/esm2015/modules/shared/sky-core-resources.module.js +41 -0
- package/esm2015/modules/title/set-title-args.js +2 -1
- package/esm2015/modules/title/title.service.js +11 -15
- package/esm2015/modules/ui-config/ui-config.service.js +11 -11
- package/esm2015/modules/viewkeeper/viewkeeper-boundary-info.js +2 -1
- package/esm2015/modules/viewkeeper/viewkeeper-fixed-styles.js +2 -1
- package/esm2015/modules/viewkeeper/viewkeeper-host-options.js +9 -8
- package/esm2015/modules/viewkeeper/viewkeeper-offset.js +2 -1
- package/esm2015/modules/viewkeeper/viewkeeper-options.js +2 -1
- package/esm2015/modules/viewkeeper/viewkeeper.directive.js +47 -32
- package/esm2015/modules/viewkeeper/viewkeeper.js +16 -11
- package/esm2015/modules/viewkeeper/viewkeeper.module.js +18 -15
- package/esm2015/modules/viewkeeper/viewkeeper.service.js +13 -16
- package/esm2015/modules/window/window-ref.js +11 -11
- package/esm2015/public-api.js +60 -0
- package/esm2015/skyux-core.js +2 -12
- package/esm2015/testing/mock-media-query.service.js +9 -8
- package/esm2015/testing/mock-ui-config.service.js +9 -8
- package/esm2015/testing/public-api.js +3 -0
- package/esm2015/testing/skyux-core-testing.js +2 -2
- package/fesm2015/skyux-core-testing.js +15 -11
- package/fesm2015/skyux-core-testing.js.map +1 -1
- package/fesm2015/skyux-core.js +847 -574
- package/fesm2015/skyux-core.js.map +1 -1
- package/modules/adapter-service/adapter.module.d.ts +4 -0
- package/modules/adapter-service/adapter.service.d.ts +3 -0
- package/modules/affix/affix.directive.d.ts +3 -0
- package/modules/affix/affix.module.d.ts +6 -0
- package/modules/affix/affix.service.d.ts +3 -0
- package/modules/dock/dock-dom-adapter.service.d.ts +6 -0
- package/modules/dock/dock-location.d.ts +17 -0
- package/modules/dock/dock-options.d.ts +18 -0
- package/modules/dock/dock.component.d.ts +8 -3
- package/modules/dock/dock.module.d.ts +6 -0
- package/modules/dock/dock.service.d.ts +14 -1
- package/modules/dynamic-component/dynamic-component-location.d.ts +14 -2
- package/modules/dynamic-component/dynamic-component-options.d.ts +4 -0
- package/modules/dynamic-component/dynamic-component.module.d.ts +4 -0
- package/modules/dynamic-component/dynamic-component.service.d.ts +3 -0
- package/modules/format/app-format.d.ts +3 -0
- package/modules/id/id.directive.d.ts +3 -0
- package/modules/id/id.module.d.ts +5 -0
- package/modules/log/log.module.d.ts +4 -0
- package/modules/log/log.service.d.ts +3 -0
- package/modules/media-query/media-query.module.d.ts +4 -0
- package/modules/media-query/media-query.service.d.ts +3 -0
- package/modules/mutation/mutation-observer-service.d.ts +3 -0
- package/modules/numeric/numeric.module.d.ts +7 -0
- package/modules/numeric/numeric.options.d.ts +5 -0
- package/modules/numeric/numeric.pipe.d.ts +11 -2
- package/modules/numeric/numeric.service.d.ts +3 -0
- package/modules/overlay/overlay-adapter.service.d.ts +3 -0
- package/modules/overlay/overlay.component.d.ts +3 -0
- package/modules/overlay/overlay.module.d.ts +6 -0
- package/modules/overlay/overlay.service.d.ts +3 -0
- package/modules/percent-pipe/percent-pipe.module.d.ts +7 -0
- package/modules/percent-pipe/percent.pipe.d.ts +3 -0
- package/modules/scrollable-host/scrollable-host.service.d.ts +16 -0
- package/modules/shared/number-format/number-format-utility.d.ts +1 -1
- package/modules/shared/sky-core-resources.module.d.ts +14 -0
- package/modules/title/title.service.d.ts +3 -0
- package/modules/ui-config/ui-config.service.d.ts +3 -0
- package/modules/viewkeeper/viewkeeper-host-options.d.ts +4 -0
- package/modules/viewkeeper/viewkeeper-options.d.ts +5 -0
- package/modules/viewkeeper/viewkeeper.d.ts +1 -0
- package/modules/viewkeeper/viewkeeper.directive.d.ts +7 -1
- package/modules/viewkeeper/viewkeeper.module.d.ts +5 -0
- package/modules/viewkeeper/viewkeeper.service.d.ts +3 -0
- package/modules/window/window-ref.d.ts +3 -0
- package/package.json +8 -23
- package/{public_api.d.ts → public-api.d.ts} +6 -0
- package/skyux-core.d.ts +2 -11
- package/testing/mock-media-query.service.d.ts +3 -0
- package/testing/mock-ui-config.service.d.ts +3 -0
- package/testing/package.json +2 -5
- package/testing/{public_api.d.ts → public-api.d.ts} +0 -0
- package/testing/skyux-core-testing.d.ts +2 -1
- package/CHANGELOG.md +0 -328
- package/bundles/skyux-core-testing.umd.min.js +0 -16
- package/bundles/skyux-core-testing.umd.min.js.map +0 -1
- package/bundles/skyux-core.umd.min.js +0 -16
- package/bundles/skyux-core.umd.min.js.map +0 -1
- package/esm2015/modules/shared/core-resources.module.js +0 -17
- package/esm2015/plugin-resources/core-resources-provider.js +0 -16
- package/esm2015/public_api.js +0 -36
- package/esm2015/testing/public_api.js +0 -3
- package/esm5/modules/adapter-service/adapter.module.js +0 -16
- package/esm5/modules/adapter-service/adapter.service.js +0 -221
- package/esm5/modules/adapter-service/focusable-children-options.js +0 -1
- package/esm5/modules/affix/affix-auto-fit-context.js +0 -12
- package/esm5/modules/affix/affix-config.js +0 -1
- package/esm5/modules/affix/affix-horizontal-alignment.js +0 -1
- package/esm5/modules/affix/affix-offset-change.js +0 -1
- package/esm5/modules/affix/affix-offset.js +0 -1
- package/esm5/modules/affix/affix-placement-change.js +0 -1
- package/esm5/modules/affix/affix-placement.js +0 -1
- package/esm5/modules/affix/affix-utils.js +0 -23
- package/esm5/modules/affix/affix-vertical-alignment.js +0 -1
- package/esm5/modules/affix/affix.directive.js +0 -113
- package/esm5/modules/affix/affix.module.js +0 -24
- package/esm5/modules/affix/affix.service.js +0 -28
- package/esm5/modules/affix/affixer.js +0 -368
- package/esm5/modules/affix/dom-utils.js +0 -79
- package/esm5/modules/dock/dock-dom-adapter.service.js +0 -72
- package/esm5/modules/dock/dock-insert-component-config.js +0 -1
- package/esm5/modules/dock/dock-item-config.js +0 -1
- package/esm5/modules/dock/dock-item-reference.js +0 -1
- package/esm5/modules/dock/dock-item.js +0 -35
- package/esm5/modules/dock/dock.component.js +0 -87
- package/esm5/modules/dock/dock.module.js +0 -24
- package/esm5/modules/dock/dock.service.js +0 -69
- package/esm5/modules/dock/sort-by-stack-order.js +0 -13
- package/esm5/modules/dynamic-component/dynamic-component-location.js +0 -15
- package/esm5/modules/dynamic-component/dynamic-component-options.js +0 -1
- package/esm5/modules/dynamic-component/dynamic-component.module.js +0 -17
- package/esm5/modules/dynamic-component/dynamic-component.service.js +0 -82
- package/esm5/modules/format/app-format.js +0 -25
- package/esm5/modules/id/id.directive.js +0 -41
- package/esm5/modules/id/id.module.js +0 -20
- package/esm5/modules/log/log.module.js +0 -16
- package/esm5/modules/log/log.service.js +0 -29
- package/esm5/modules/media-query/media-breakpoints.js +0 -20
- package/esm5/modules/media-query/media-query-listener.js +0 -1
- package/esm5/modules/media-query/media-query.module.js +0 -16
- package/esm5/modules/media-query/media-query.service.js +0 -128
- package/esm5/modules/mutation/mutation-observer-service.js +0 -19
- package/esm5/modules/numeric/numeric-symbol.js +0 -1
- package/esm5/modules/numeric/numeric.module.js +0 -29
- package/esm5/modules/numeric/numeric.options.js +0 -38
- package/esm5/modules/numeric/numeric.pipe.js +0 -70
- package/esm5/modules/numeric/numeric.service.js +0 -196
- package/esm5/modules/overlay/overlay-adapter.service.js +0 -44
- package/esm5/modules/overlay/overlay-config.js +0 -1
- package/esm5/modules/overlay/overlay-context.js +0 -12
- package/esm5/modules/overlay/overlay-instance.js +0 -66
- package/esm5/modules/overlay/overlay.component.js +0 -168
- package/esm5/modules/overlay/overlay.module.js +0 -24
- package/esm5/modules/overlay/overlay.service.js +0 -128
- package/esm5/modules/percent-pipe/percent-pipe.module.js +0 -29
- package/esm5/modules/percent-pipe/percent.pipe.js +0 -49
- package/esm5/modules/shared/core-resources.module.js +0 -20
- package/esm5/modules/shared/number-format/number-format-utility.js +0 -75
- package/esm5/modules/title/set-title-args.js +0 -1
- package/esm5/modules/title/title.service.js +0 -35
- package/esm5/modules/ui-config/ui-config.service.js +0 -24
- package/esm5/modules/viewkeeper/viewkeeper-boundary-info.js +0 -1
- package/esm5/modules/viewkeeper/viewkeeper-fixed-styles.js +0 -1
- package/esm5/modules/viewkeeper/viewkeeper-host-options.js +0 -12
- package/esm5/modules/viewkeeper/viewkeeper-offset.js +0 -1
- package/esm5/modules/viewkeeper/viewkeeper-options.js +0 -1
- package/esm5/modules/viewkeeper/viewkeeper.directive.js +0 -134
- package/esm5/modules/viewkeeper/viewkeeper.js +0 -219
- package/esm5/modules/viewkeeper/viewkeeper.module.js +0 -20
- package/esm5/modules/viewkeeper/viewkeeper.service.js +0 -42
- package/esm5/modules/window/window-ref.js +0 -37
- package/esm5/plugin-resources/core-resources-provider.js +0 -17
- package/esm5/public_api.js +0 -36
- package/esm5/skyux-core.js +0 -15
- package/esm5/testing/mock-media-query.service.js +0 -47
- package/esm5/testing/mock-ui-config.service.js +0 -66
- package/esm5/testing/public_api.js +0 -3
- package/esm5/testing/skyux-core-testing.js +0 -5
- package/fesm5/skyux-core-testing.js +0 -114
- package/fesm5/skyux-core-testing.js.map +0 -1
- package/fesm5/skyux-core.js +0 -2903
- package/fesm5/skyux-core.js.map +0 -1
- package/modules/shared/core-resources.module.d.ts +0 -2
- package/plugin-resources/core-resources-provider.d.ts +0 -5
- package/skyux-core.metadata.json +0 -1
- package/src/assets/locales/resources_en_US.json +0 -18
- package/testing/skyux-core-testing.metadata.json +0 -1
@@ -1,368 +0,0 @@
|
|
1
|
-
import { __assign } from "tslib";
|
2
|
-
import { fromEvent, Subject } from 'rxjs';
|
3
|
-
import { SkyAffixAutoFitContext } from './affix-auto-fit-context';
|
4
|
-
import { getInversePlacement, getNextPlacement } from './affix-utils';
|
5
|
-
import { getElementOffset, getOverflowParents, isOffsetFullyVisibleWithinParent, isOffsetPartiallyVisibleWithinParent } from './dom-utils';
|
6
|
-
var DEFAULT_AFFIX_CONFIG = {
|
7
|
-
autoFitContext: SkyAffixAutoFitContext.OverflowParent,
|
8
|
-
enableAutoFit: false,
|
9
|
-
horizontalAlignment: 'center',
|
10
|
-
isSticky: false,
|
11
|
-
placement: 'above'
|
12
|
-
};
|
13
|
-
var SkyAffixer = /** @class */ (function () {
|
14
|
-
function SkyAffixer(affixedElement, renderer) {
|
15
|
-
this.affixedElement = affixedElement;
|
16
|
-
this.renderer = renderer;
|
17
|
-
this._offsetChange = new Subject();
|
18
|
-
this._overflowScroll = new Subject();
|
19
|
-
this._placementChange = new Subject();
|
20
|
-
}
|
21
|
-
Object.defineProperty(SkyAffixer.prototype, "offsetChange", {
|
22
|
-
/**
|
23
|
-
* Fires when the affixed element's offset changes.
|
24
|
-
*/
|
25
|
-
get: function () {
|
26
|
-
return this._offsetChange.asObservable();
|
27
|
-
},
|
28
|
-
enumerable: true,
|
29
|
-
configurable: true
|
30
|
-
});
|
31
|
-
Object.defineProperty(SkyAffixer.prototype, "overflowScroll", {
|
32
|
-
/**
|
33
|
-
* Fires when the base element's nearest overflow parent is scrolling. This is useful if you need
|
34
|
-
* to perform an additional action during the scroll event but don't want to generate another
|
35
|
-
* event listener.
|
36
|
-
*/
|
37
|
-
get: function () {
|
38
|
-
return this._overflowScroll.asObservable();
|
39
|
-
},
|
40
|
-
enumerable: true,
|
41
|
-
configurable: true
|
42
|
-
});
|
43
|
-
Object.defineProperty(SkyAffixer.prototype, "placementChange", {
|
44
|
-
/**
|
45
|
-
* Fires when the placement value changes. A `null` value indicates that a suitable
|
46
|
-
* placement could not be found.
|
47
|
-
*/
|
48
|
-
get: function () {
|
49
|
-
return this._placementChange.asObservable();
|
50
|
-
},
|
51
|
-
enumerable: true,
|
52
|
-
configurable: true
|
53
|
-
});
|
54
|
-
Object.defineProperty(SkyAffixer.prototype, "config", {
|
55
|
-
get: function () {
|
56
|
-
return this._config;
|
57
|
-
},
|
58
|
-
set: function (value) {
|
59
|
-
var merged = __assign(__assign({}, DEFAULT_AFFIX_CONFIG), value);
|
60
|
-
// Make sure none of the values are undefined.
|
61
|
-
Object.keys(merged).forEach(function (k) {
|
62
|
-
if (merged[k] === undefined) {
|
63
|
-
merged[k] = DEFAULT_AFFIX_CONFIG[k];
|
64
|
-
}
|
65
|
-
});
|
66
|
-
this._config = merged;
|
67
|
-
},
|
68
|
-
enumerable: true,
|
69
|
-
configurable: true
|
70
|
-
});
|
71
|
-
/**
|
72
|
-
* Affixes an element to a base element.
|
73
|
-
* @param baseElement The base element.
|
74
|
-
* @param config Configuration for the affix action.
|
75
|
-
*/
|
76
|
-
SkyAffixer.prototype.affixTo = function (baseElement, config) {
|
77
|
-
this.reset();
|
78
|
-
this.config = config;
|
79
|
-
this.baseElement = baseElement;
|
80
|
-
this.overflowParents = getOverflowParents(baseElement);
|
81
|
-
this.affix();
|
82
|
-
if (this.config.isSticky) {
|
83
|
-
this.addScrollListeners();
|
84
|
-
this.addResizeListener();
|
85
|
-
}
|
86
|
-
};
|
87
|
-
/**
|
88
|
-
* Re-runs the affix calculation.
|
89
|
-
*/
|
90
|
-
SkyAffixer.prototype.reaffix = function () {
|
91
|
-
// Reset current placement to preferred placement.
|
92
|
-
this.currentPlacement = this.config.placement;
|
93
|
-
this.affix();
|
94
|
-
};
|
95
|
-
/**
|
96
|
-
* Destroys the affixer.
|
97
|
-
*/
|
98
|
-
SkyAffixer.prototype.destroy = function () {
|
99
|
-
this.reset();
|
100
|
-
this._placementChange.complete();
|
101
|
-
this._offsetChange.complete();
|
102
|
-
this._overflowScroll.complete();
|
103
|
-
this._offsetChange =
|
104
|
-
this._placementChange =
|
105
|
-
this._overflowScroll = undefined;
|
106
|
-
};
|
107
|
-
SkyAffixer.prototype.affix = function () {
|
108
|
-
this.baseRect = this.baseElement.getBoundingClientRect();
|
109
|
-
this.affixedRect = this.affixedElement.getBoundingClientRect();
|
110
|
-
var offset = this.getOffset();
|
111
|
-
if (this.isNewOffset(offset)) {
|
112
|
-
this.renderer.setStyle(this.affixedElement, 'top', offset.top + "px");
|
113
|
-
this.renderer.setStyle(this.affixedElement, 'left', offset.left + "px");
|
114
|
-
this._offsetChange.next({ offset: offset });
|
115
|
-
}
|
116
|
-
};
|
117
|
-
SkyAffixer.prototype.getOffset = function () {
|
118
|
-
var parent = this.getAutoFitContextParent();
|
119
|
-
var maxAttempts = 4;
|
120
|
-
var attempts = 0;
|
121
|
-
var isAffixedElementFullyVisible = false;
|
122
|
-
var offset;
|
123
|
-
var placement = this.config.placement;
|
124
|
-
do {
|
125
|
-
offset = this.getPreferredOffset(placement);
|
126
|
-
isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(parent, offset, this.config.autoFitOverflowOffset);
|
127
|
-
if (!this.config.enableAutoFit) {
|
128
|
-
break;
|
129
|
-
}
|
130
|
-
if (!isAffixedElementFullyVisible) {
|
131
|
-
placement = (attempts % 2 === 0)
|
132
|
-
? getInversePlacement(placement)
|
133
|
-
: getNextPlacement(placement);
|
134
|
-
}
|
135
|
-
attempts++;
|
136
|
-
} while (!isAffixedElementFullyVisible && attempts < maxAttempts);
|
137
|
-
if (isAffixedElementFullyVisible) {
|
138
|
-
if (this.isBaseElementVisible()) {
|
139
|
-
this.notifyPlacementChange(placement);
|
140
|
-
}
|
141
|
-
else {
|
142
|
-
/* tslint:disable-next-line:no-null-keyword */
|
143
|
-
this.notifyPlacementChange(null);
|
144
|
-
}
|
145
|
-
return offset;
|
146
|
-
}
|
147
|
-
if (this.config.enableAutoFit) {
|
148
|
-
/* tslint:disable-next-line:no-null-keyword */
|
149
|
-
this.notifyPlacementChange(null);
|
150
|
-
}
|
151
|
-
// No suitable placement was found, so revert to preferred placement.
|
152
|
-
return this.getPreferredOffset(this.config.placement);
|
153
|
-
};
|
154
|
-
SkyAffixer.prototype.getPreferredOffset = function (placement) {
|
155
|
-
var affixedRect = this.affixedRect;
|
156
|
-
var baseRect = this.baseRect;
|
157
|
-
var horizontalAlignment = this.config.horizontalAlignment;
|
158
|
-
var verticalAlignment = this.config.verticalAlignment;
|
159
|
-
var enableAutoFit = this.config.enableAutoFit;
|
160
|
-
var top;
|
161
|
-
var left;
|
162
|
-
if (placement === 'above' || placement === 'below') {
|
163
|
-
if (placement === 'above') {
|
164
|
-
top = baseRect.top - affixedRect.height;
|
165
|
-
switch (verticalAlignment) {
|
166
|
-
case 'top':
|
167
|
-
top = top + affixedRect.height;
|
168
|
-
break;
|
169
|
-
case 'middle':
|
170
|
-
top = top + (affixedRect.height / 2);
|
171
|
-
break;
|
172
|
-
case 'bottom':
|
173
|
-
default:
|
174
|
-
break;
|
175
|
-
}
|
176
|
-
}
|
177
|
-
else {
|
178
|
-
top = baseRect.bottom;
|
179
|
-
switch (verticalAlignment) {
|
180
|
-
case 'top':
|
181
|
-
default:
|
182
|
-
break;
|
183
|
-
case 'middle':
|
184
|
-
top = top - (affixedRect.height / 2);
|
185
|
-
break;
|
186
|
-
case 'bottom':
|
187
|
-
top = top - affixedRect.height;
|
188
|
-
break;
|
189
|
-
}
|
190
|
-
}
|
191
|
-
switch (horizontalAlignment) {
|
192
|
-
case 'left':
|
193
|
-
left = baseRect.left;
|
194
|
-
break;
|
195
|
-
case 'center':
|
196
|
-
default:
|
197
|
-
left = baseRect.left + (baseRect.width / 2) - (affixedRect.width / 2);
|
198
|
-
break;
|
199
|
-
case 'right':
|
200
|
-
left = baseRect.right - affixedRect.width;
|
201
|
-
break;
|
202
|
-
}
|
203
|
-
}
|
204
|
-
else {
|
205
|
-
if (placement === 'left') {
|
206
|
-
left = baseRect.left - affixedRect.width;
|
207
|
-
}
|
208
|
-
else {
|
209
|
-
left = baseRect.right;
|
210
|
-
}
|
211
|
-
switch (verticalAlignment) {
|
212
|
-
case 'top':
|
213
|
-
top = baseRect.top;
|
214
|
-
break;
|
215
|
-
case 'middle':
|
216
|
-
default:
|
217
|
-
top = baseRect.top + (baseRect.height / 2) - (affixedRect.height / 2);
|
218
|
-
break;
|
219
|
-
case 'bottom':
|
220
|
-
top = baseRect.bottom - affixedRect.height;
|
221
|
-
break;
|
222
|
-
}
|
223
|
-
}
|
224
|
-
var offset = { left: left, top: top };
|
225
|
-
if (enableAutoFit) {
|
226
|
-
offset = this.adjustOffsetToOverflowParent(__assign({}, offset), placement);
|
227
|
-
}
|
228
|
-
offset.bottom = offset.top + affixedRect.height;
|
229
|
-
offset.right = offset.left + affixedRect.width;
|
230
|
-
return offset;
|
231
|
-
};
|
232
|
-
/**
|
233
|
-
* Slightly adjust the offset to fit within the scroll parent's boundaries if
|
234
|
-
* the affixed element would otherwise be clipped.
|
235
|
-
*/
|
236
|
-
SkyAffixer.prototype.adjustOffsetToOverflowParent = function (offset, placement) {
|
237
|
-
var parent = this.getAutoFitContextParent();
|
238
|
-
var parentOffset = getElementOffset(parent, this.config.autoFitOverflowOffset);
|
239
|
-
var affixedRect = this.affixedRect;
|
240
|
-
var baseRect = this.baseRect;
|
241
|
-
// A pixel value representing the leeway between the edge of the overflow parent and the edge
|
242
|
-
// of the base element before it dissapears from view.
|
243
|
-
// If the visible portion of the base element is less than this pixel value, the auto-fit
|
244
|
-
// functionality attempts to find another placement.
|
245
|
-
var defaultPixelTolerance = 40;
|
246
|
-
var pixelTolerance;
|
247
|
-
var originalOffsetTop = offset.top;
|
248
|
-
var originalOffsetLeft = offset.left;
|
249
|
-
/* tslint:disable-next-line:switch-default */
|
250
|
-
switch (placement) {
|
251
|
-
case 'above':
|
252
|
-
case 'below':
|
253
|
-
// Keep the affixed element within the overflow parent.
|
254
|
-
if (offset.left < parentOffset.left) {
|
255
|
-
offset.left = parentOffset.left;
|
256
|
-
}
|
257
|
-
else if (offset.left + affixedRect.width > parentOffset.right) {
|
258
|
-
offset.left = parentOffset.right - affixedRect.width;
|
259
|
-
}
|
260
|
-
// Use a smaller pixel tolerance if the base element width is less than the default.
|
261
|
-
pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);
|
262
|
-
// Make sure the affixed element never detaches from the base element.
|
263
|
-
if (offset.left + pixelTolerance > baseRect.right ||
|
264
|
-
offset.left + affixedRect.width - pixelTolerance < baseRect.left) {
|
265
|
-
offset.left = originalOffsetLeft;
|
266
|
-
}
|
267
|
-
break;
|
268
|
-
case 'left':
|
269
|
-
case 'right':
|
270
|
-
// Keep the affixed element within the overflow parent.
|
271
|
-
if (offset.top < parentOffset.top) {
|
272
|
-
offset.top = parentOffset.top;
|
273
|
-
}
|
274
|
-
else if (offset.top + affixedRect.height > parentOffset.bottom) {
|
275
|
-
offset.top = parentOffset.bottom - affixedRect.height;
|
276
|
-
}
|
277
|
-
// Use a smaller pixel tolerance if the base element height is less than the default.
|
278
|
-
pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);
|
279
|
-
// Make sure the affixed element never detaches from the base element.
|
280
|
-
if (offset.top + pixelTolerance > baseRect.bottom ||
|
281
|
-
offset.top + affixedRect.height - pixelTolerance < baseRect.top) {
|
282
|
-
offset.top = originalOffsetTop;
|
283
|
-
}
|
284
|
-
break;
|
285
|
-
}
|
286
|
-
return offset;
|
287
|
-
};
|
288
|
-
SkyAffixer.prototype.getImmediateOverflowParent = function () {
|
289
|
-
return this.overflowParents[this.overflowParents.length - 1];
|
290
|
-
};
|
291
|
-
SkyAffixer.prototype.getAutoFitContextParent = function () {
|
292
|
-
var bodyElement = this.overflowParents[0];
|
293
|
-
return (this.config.autoFitContext === SkyAffixAutoFitContext.OverflowParent)
|
294
|
-
? this.getImmediateOverflowParent()
|
295
|
-
: bodyElement;
|
296
|
-
};
|
297
|
-
SkyAffixer.prototype.notifyPlacementChange = function (placement) {
|
298
|
-
if (this.currentPlacement !== placement) {
|
299
|
-
this.currentPlacement = placement;
|
300
|
-
this._placementChange.next({
|
301
|
-
placement: placement
|
302
|
-
});
|
303
|
-
}
|
304
|
-
};
|
305
|
-
SkyAffixer.prototype.reset = function () {
|
306
|
-
this.removeScrollListeners();
|
307
|
-
this.removeResizeListener();
|
308
|
-
this._config =
|
309
|
-
this.affixedRect =
|
310
|
-
this.baseElement =
|
311
|
-
this.baseRect =
|
312
|
-
this.currentPlacement =
|
313
|
-
this.currentOffset =
|
314
|
-
this.overflowParents = undefined;
|
315
|
-
};
|
316
|
-
SkyAffixer.prototype.isNewOffset = function (offset) {
|
317
|
-
if (this.currentOffset === undefined) {
|
318
|
-
this.currentOffset = offset;
|
319
|
-
return true;
|
320
|
-
}
|
321
|
-
if (this.currentOffset.top === offset.top &&
|
322
|
-
this.currentOffset.left === offset.left) {
|
323
|
-
return false;
|
324
|
-
}
|
325
|
-
this.currentOffset = offset;
|
326
|
-
return true;
|
327
|
-
};
|
328
|
-
SkyAffixer.prototype.isBaseElementVisible = function () {
|
329
|
-
return isOffsetPartiallyVisibleWithinParent(this.getImmediateOverflowParent(), {
|
330
|
-
top: this.baseRect.top,
|
331
|
-
left: this.baseRect.left,
|
332
|
-
right: this.baseRect.right,
|
333
|
-
bottom: this.baseRect.bottom
|
334
|
-
}, this.config.autoFitOverflowOffset);
|
335
|
-
};
|
336
|
-
SkyAffixer.prototype.addScrollListeners = function () {
|
337
|
-
var _this = this;
|
338
|
-
this.scrollListeners = this.overflowParents.map(function (parentElement) {
|
339
|
-
var overflow = (parentElement === document.body) ? 'window' : parentElement;
|
340
|
-
return _this.renderer.listen(overflow, 'scroll', function () {
|
341
|
-
_this.affix();
|
342
|
-
_this._overflowScroll.next();
|
343
|
-
});
|
344
|
-
});
|
345
|
-
};
|
346
|
-
SkyAffixer.prototype.addResizeListener = function () {
|
347
|
-
var _this = this;
|
348
|
-
this.resizeListener = fromEvent(window, 'resize')
|
349
|
-
.subscribe(function () { return _this.affix(); });
|
350
|
-
};
|
351
|
-
SkyAffixer.prototype.removeResizeListener = function () {
|
352
|
-
if (this.resizeListener) {
|
353
|
-
this.resizeListener.unsubscribe();
|
354
|
-
this.resizeListener = undefined;
|
355
|
-
}
|
356
|
-
};
|
357
|
-
SkyAffixer.prototype.removeScrollListeners = function () {
|
358
|
-
if (this.scrollListeners) {
|
359
|
-
// Remove renderer-generated listeners by calling the listener itself.
|
360
|
-
// https://github.com/angular/angular/issues/9368#issuecomment-227199778
|
361
|
-
this.scrollListeners.forEach(function (listener) { return listener(); });
|
362
|
-
this.scrollListeners = undefined;
|
363
|
-
}
|
364
|
-
};
|
365
|
-
return SkyAffixer;
|
366
|
-
}());
|
367
|
-
export { SkyAffixer };
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZmaXhlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9jb3JlLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZmZpeC9hZmZpeGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFJQSxPQUFPLEVBQ0wsU0FBUyxFQUVULE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQXNCbEMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLG9DQUFvQyxFQUNyQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixJQUFNLG9CQUFvQixHQUFtQjtJQUMzQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsY0FBYztJQUNyRCxhQUFhLEVBQUUsS0FBSztJQUNwQixtQkFBbUIsRUFBRSxRQUFRO0lBQzdCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLE9BQU87Q0FDbkIsQ0FBQztBQUVGO0lBbUVFLG9CQUNVLGNBQTJCLEVBQzNCLFFBQW1CO1FBRG5CLG1CQUFjLEdBQWQsY0FBYyxDQUFhO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFSckIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBd0IsQ0FBQztRQUVwRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdEMscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUM7SUFLOUQsQ0FBQztJQWpFTCxzQkFBVyxvQ0FBWTtRQUh2Qjs7V0FFRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNDLENBQUM7OztPQUFBO0lBT0Qsc0JBQVcsc0NBQWM7UUFMekI7Ozs7V0FJRzthQUNIO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVks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aUJBQUM7QUFBRCxDQUFDLEFBaGNELElBZ2NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBmcm9tRXZlbnQsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhBdXRvRml0Q29udGV4dFxufSBmcm9tICcuL2FmZml4LWF1dG8tZml0LWNvbnRleHQnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeE9mZnNldENoYW5nZVxufSBmcm9tICcuL2FmZml4LW9mZnNldC1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeE9mZnNldFxufSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4Q29uZmlnXG59IGZyb20gJy4vYWZmaXgtY29uZmlnJztcblxuaW1wb3J0IHtcbiAgU2t5QWZmaXhQbGFjZW1lbnRcbn0gZnJvbSAnLi9hZmZpeC1wbGFjZW1lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeFBsYWNlbWVudENoYW5nZVxufSBmcm9tICcuL2FmZml4LXBsYWNlbWVudC1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBnZXRJbnZlcnNlUGxhY2VtZW50LFxuICBnZXROZXh0UGxhY2VtZW50XG59IGZyb20gJy4vYWZmaXgtdXRpbHMnO1xuXG5pbXBvcnQge1xuICBnZXRFbGVtZW50T2Zmc2V0LFxuICBnZXRPdmVyZmxvd1BhcmVudHMsXG4gIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50LFxuICBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnRcbn0gZnJvbSAnLi9kb20tdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX0FGRklYX0NPTkZJRzogU2t5QWZmaXhDb25maWcgPSB7XG4gIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0Lk92ZXJmbG93UGFyZW50LFxuICBlbmFibGVBdXRvRml0OiBmYWxzZSxcbiAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2NlbnRlcicsXG4gIGlzU3RpY2t5OiBmYWxzZSxcbiAgcGxhY2VtZW50OiAnYWJvdmUnXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5QWZmaXhlciB7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFmZml4ZWQgZWxlbWVudCdzIG9mZnNldCBjaGFuZ2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBvZmZzZXRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeE9mZnNldENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLl9vZmZzZXRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYmFzZSBlbGVtZW50J3MgbmVhcmVzdCBvdmVyZmxvdyBwYXJlbnQgaXMgc2Nyb2xsaW5nLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgbmVlZFxuICAgKiB0byBwZXJmb3JtIGFuIGFkZGl0aW9uYWwgYWN0aW9uIGR1cmluZyB0aGUgc2Nyb2xsIGV2ZW50IGJ1dCBkb24ndCB3YW50IHRvIGdlbmVyYXRlIGFub3RoZXJcbiAgICogZXZlbnQgbGlzdGVuZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXJmbG93U2Nyb2xsKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9vdmVyZmxvd1Njcm9sbC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBwbGFjZW1lbnQgdmFsdWUgY2hhbmdlcy4gQSBgbnVsbGAgdmFsdWUgaW5kaWNhdGVzIHRoYXQgYSBzdWl0YWJsZVxuICAgKiBwbGFjZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLlxuICAgKi9cbiAgcHVibGljIGdldCBwbGFjZW1lbnRDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lBZmZpeFBsYWNlbWVudENoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZW1lbnRDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjb25maWcoKTogU2t5QWZmaXhDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9jb25maWc7XG4gIH1cblxuICBwcml2YXRlIHNldCBjb25maWcodmFsdWU6IFNreUFmZml4Q29uZmlnKSB7XG4gICAgY29uc3QgbWVyZ2VkID0gey4uLkRFRkFVTFRfQUZGSVhfQ09ORklHLCAuLi52YWx1ZX07XG5cbiAgICAvLyBNYWtlIHN1cmUgbm9uZSBvZiB0aGUgdmFsdWVzIGFyZSB1bmRlZmluZWQuXG4gICAgT2JqZWN0LmtleXMobWVyZ2VkKS5mb3JFYWNoKChrOiBrZXlvZiBTa3lBZmZpeENvbmZpZykgPT4ge1xuICAgICAgaWYgKG1lcmdlZFtrXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIChtZXJnZWQgYXMgYW55KVtrXSA9IERFRkFVTFRfQUZGSVhfQ09ORklHW2tdO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fY29uZmlnID0gbWVyZ2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZmZpeGVkUmVjdDogQ2xpZW50UmVjdDtcblxuICBwcml2YXRlIGJhc2VFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIGJhc2VSZWN0OiBDbGllbnRSZWN0O1xuXG4gIHByaXZhdGUgY3VycmVudE9mZnNldDogU2t5QWZmaXhPZmZzZXQ7XG5cbiAgcHJpdmF0ZSBjdXJyZW50UGxhY2VtZW50OiBTa3lBZmZpeFBsYWNlbWVudDtcblxuICBwcml2YXRlIG92ZXJmbG93UGFyZW50czogSFRNTEVsZW1lbnRbXTtcblxuICBwcml2YXRlIHJlc2l6ZUxpc3RlbmVyOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzY3JvbGxMaXN0ZW5lcnM6IEZ1bmN0aW9uW107XG5cbiAgcHJpdmF0ZSBfY29uZmlnOiBTa3lBZmZpeENvbmZpZztcblxuICBwcml2YXRlIF9vZmZzZXRDaGFuZ2UgPSBuZXcgU3ViamVjdDxTa3lBZmZpeE9mZnNldENoYW5nZT4oKTtcblxuICBwcml2YXRlIF9vdmVyZmxvd1Njcm9sbCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfcGxhY2VtZW50Q2hhbmdlID0gbmV3IFN1YmplY3Q8U2t5QWZmaXhQbGFjZW1lbnRDaGFuZ2U+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeGVkRWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFmZml4ZXMgYW4gZWxlbWVudCB0byBhIGJhc2UgZWxlbWVudC5cbiAgICogQHBhcmFtIGJhc2VFbGVtZW50IFRoZSBiYXNlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGFmZml4IGFjdGlvbi5cbiAgICovXG4gIHB1YmxpYyBhZmZpeFRvKGJhc2VFbGVtZW50OiBIVE1MRWxlbWVudCwgY29uZmlnPzogU2t5QWZmaXhDb25maWcpOiB2b2lkIHtcblxuICAgIHRoaXMucmVzZXQoKTtcblxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuYmFzZUVsZW1lbnQgPSBiYXNlRWxlbWVudDtcbiAgICB0aGlzLm92ZXJmbG93UGFyZW50cyA9IGdldE92ZXJmbG93UGFyZW50cyhiYXNlRWxlbWVudCk7XG5cbiAgICB0aGlzLmFmZml4KCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcuaXNTdGlja3kpIHtcbiAgICAgIHRoaXMuYWRkU2Nyb2xsTGlzdGVuZXJzKCk7XG4gICAgICB0aGlzLmFkZFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLXJ1bnMgdGhlIGFmZml4IGNhbGN1bGF0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWZmaXgoKTogdm9pZCB7XG4gICAgLy8gUmVzZXQgY3VycmVudCBwbGFjZW1lbnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICB0aGlzLmN1cnJlbnRQbGFjZW1lbnQgPSB0aGlzLmNvbmZpZy5wbGFjZW1lbnQ7XG4gICAgdGhpcy5hZmZpeCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBhZmZpeGVyLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMuX3BsYWNlbWVudENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX29mZnNldENoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX292ZXJmbG93U2Nyb2xsLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLl9vZmZzZXRDaGFuZ2UgPVxuICAgICAgdGhpcy5fcGxhY2VtZW50Q2hhbmdlID1cbiAgICAgIHRoaXMuX292ZXJmbG93U2Nyb2xsID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhZmZpeCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VSZWN0ID0gdGhpcy5iYXNlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLmFmZml4ZWRSZWN0ID0gdGhpcy5hZmZpeGVkRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0T2Zmc2V0KCk7XG5cbiAgICBpZiAodGhpcy5pc05ld09mZnNldChvZmZzZXQpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYWZmaXhlZEVsZW1lbnQsICd0b3AnLCBgJHtvZmZzZXQudG9wfXB4YCk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuYWZmaXhlZEVsZW1lbnQsICdsZWZ0JywgYCR7b2Zmc2V0LmxlZnR9cHhgKTtcbiAgICAgIHRoaXMuX29mZnNldENoYW5nZS5uZXh0KHsgb2Zmc2V0IH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0KCk6IFNreUFmZml4T2Zmc2V0IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG5cbiAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDQ7XG4gICAgbGV0IGF0dGVtcHRzID0gMDtcblxuICAgIGxldCBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gZmFsc2U7XG4gICAgbGV0IG9mZnNldDogU2t5QWZmaXhPZmZzZXQ7XG4gICAgbGV0IHBsYWNlbWVudCA9IHRoaXMuY29uZmlnLnBsYWNlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIG9mZnNldCA9IHRoaXMuZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudCk7XG4gICAgICBpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlID0gaXNPZmZzZXRGdWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gICAgICAgIHBhcmVudCxcbiAgICAgICAgb2Zmc2V0LFxuICAgICAgICB0aGlzLmNvbmZpZy5hdXRvRml0T3ZlcmZsb3dPZmZzZXRcbiAgICAgICk7XG5cbiAgICAgIGlmICghdGhpcy5jb25maWcuZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICAgIHBsYWNlbWVudCA9IChhdHRlbXB0cyAlIDIgPT09IDApXG4gICAgICAgICAgPyBnZXRJbnZlcnNlUGxhY2VtZW50KHBsYWNlbWVudClcbiAgICAgICAgICA6IGdldE5leHRQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIH1cblxuICAgICAgYXR0ZW1wdHMrKztcbiAgICB9IHdoaWxlICghaXNBZmZpeGVkRWxlbWVudEZ1bGx5VmlzaWJsZSAmJiBhdHRlbXB0cyA8IG1heEF0dGVtcHRzKTtcblxuICAgIGlmIChpc0FmZml4ZWRFbGVtZW50RnVsbHlWaXNpYmxlKSB7XG4gICAgICBpZiAodGhpcy5pc0Jhc2VFbGVtZW50VmlzaWJsZSgpKSB7XG4gICAgICAgIHRoaXMubm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbnVsbC1rZXl3b3JkICovXG4gICAgICAgIHRoaXMubm90aWZ5UGxhY2VtZW50Q2hhbmdlKG51bGwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2Zmc2V0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5lbmFibGVBdXRvRml0KSB7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbnVsbC1rZXl3b3JkICovXG4gICAgICB0aGlzLm5vdGlmeVBsYWNlbWVudENoYW5nZShudWxsKTtcbiAgICB9XG5cbiAgICAvLyBObyBzdWl0YWJsZSBwbGFjZW1lbnQgd2FzIGZvdW5kLCBzbyByZXZlcnQgdG8gcHJlZmVycmVkIHBsYWNlbWVudC5cbiAgICByZXR1cm4gdGhpcy5nZXRQcmVmZXJyZWRPZmZzZXQodGhpcy5jb25maWcucGxhY2VtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlZmVycmVkT2Zmc2V0KHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQpOiBTa3lBZmZpeE9mZnNldCB7XG4gICAgY29uc3QgYWZmaXhlZFJlY3QgPSB0aGlzLmFmZml4ZWRSZWN0O1xuICAgIGNvbnN0IGJhc2VSZWN0ID0gdGhpcy5iYXNlUmVjdDtcblxuICAgIGNvbnN0IGhvcml6b250YWxBbGlnbm1lbnQgPSB0aGlzLmNvbmZpZy5ob3Jpem9udGFsQWxpZ25tZW50O1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ25tZW50ID0gdGhpcy5jb25maWcudmVydGljYWxBbGlnbm1lbnQ7XG4gICAgY29uc3QgZW5hYmxlQXV0b0ZpdCA9IHRoaXMuY29uZmlnLmVuYWJsZUF1dG9GaXQ7XG5cbiAgICBsZXQgdG9wOiBudW1iZXI7XG4gICAgbGV0IGxlZnQ6IG51bWJlcjtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdhYm92ZScgfHwgcGxhY2VtZW50ID09PSAnYmVsb3cnKSB7XG4gICAgICBpZiAocGxhY2VtZW50ID09PSAnYWJvdmUnKSB7XG4gICAgICAgIHRvcCA9IGJhc2VSZWN0LnRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcblxuICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCArIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgICAgICB0b3AgPSB0b3AgKyAoYWZmaXhlZFJlY3QuaGVpZ2h0IC8gMik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tO1xuXG4gICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbm1lbnQpIHtcbiAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtaWRkbGUnOlxuICAgICAgICAgICAgdG9wID0gdG9wIC0gKGFmZml4ZWRSZWN0LmhlaWdodCAvIDIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgIHRvcCA9IHRvcCAtIGFmZml4ZWRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoaG9yaXpvbnRhbEFsaWdubWVudCkge1xuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGxlZnQgPSBiYXNlUmVjdC5sZWZ0ICsgKGJhc2VSZWN0LndpZHRoIC8gMikgLSAoYWZmaXhlZFJlY3Qud2lkdGggLyAyKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0IC0gYWZmaXhlZFJlY3Qud2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgICBsZWZ0ID0gYmFzZVJlY3QubGVmdCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVmdCA9IGJhc2VSZWN0LnJpZ2h0O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ21pZGRsZSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QudG9wICsgKGJhc2VSZWN0LmhlaWdodCAvIDIpIC0gKGFmZml4ZWRSZWN0LmhlaWdodCAvIDIpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgdG9wID0gYmFzZVJlY3QuYm90dG9tIC0gYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvZmZzZXQ6IFNreUFmZml4T2Zmc2V0ID0geyBsZWZ0LCB0b3AgfTtcbiAgICBpZiAoZW5hYmxlQXV0b0ZpdCkge1xuICAgICAgb2Zmc2V0ID0gdGhpcy5hZGp1c3RPZmZzZXRUb092ZXJmbG93UGFyZW50KHsuLi5vZmZzZXR9LCBwbGFjZW1lbnQpO1xuICAgIH1cblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgYWZmaXhlZFJlY3QuaGVpZ2h0O1xuICAgIG9mZnNldC5yaWdodCA9IG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGg7XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNsaWdodGx5IGFkanVzdCB0aGUgb2Zmc2V0IHRvIGZpdCB3aXRoaW4gdGhlIHNjcm9sbCBwYXJlbnQncyBib3VuZGFyaWVzIGlmXG4gICAqIHRoZSBhZmZpeGVkIGVsZW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlIGNsaXBwZWQuXG4gICAqL1xuICBwcml2YXRlIGFkanVzdE9mZnNldFRvT3ZlcmZsb3dQYXJlbnQoXG4gICAgb2Zmc2V0OiBTa3lBZmZpeE9mZnNldCxcbiAgICBwbGFjZW1lbnQ6IFNreUFmZml4UGxhY2VtZW50XG4gICk6IFNreUFmZml4T2Zmc2V0IHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldEF1dG9GaXRDb250ZXh0UGFyZW50KCk7XG4gICAgY29uc3QgcGFyZW50T2Zmc2V0ID0gZ2V0RWxlbWVudE9mZnNldChwYXJlbnQsIHRoaXMuY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldCk7XG5cbiAgICBjb25zdCBhZmZpeGVkUmVjdCA9IHRoaXMuYWZmaXhlZFJlY3Q7XG4gICAgY29uc3QgYmFzZVJlY3QgPSB0aGlzLmJhc2VSZWN0O1xuXG4gICAgLy8gQSBwaXhlbCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGxlZXdheSBiZXR3ZWVuIHRoZSBlZGdlIG9mIHRoZSBvdmVyZmxvdyBwYXJlbnQgYW5kIHRoZSBlZGdlXG4gICAgLy8gb2YgdGhlIGJhc2UgZWxlbWVudCBiZWZvcmUgaXQgZGlzc2FwZWFycyBmcm9tIHZpZXcuXG4gICAgLy8gSWYgdGhlIHZpc2libGUgcG9ydGlvbiBvZiB0aGUgYmFzZSBlbGVtZW50IGlzIGxlc3MgdGhhbiB0aGlzIHBpeGVsIHZhbHVlLCB0aGUgYXV0by1maXRcbiAgICAvLyBmdW5jdGlvbmFsaXR5IGF0dGVtcHRzIHRvIGZpbmQgYW5vdGhlciBwbGFjZW1lbnQuXG4gICAgY29uc3QgZGVmYXVsdFBpeGVsVG9sZXJhbmNlID0gNDA7XG4gICAgbGV0IHBpeGVsVG9sZXJhbmNlOiBudW1iZXI7XG5cbiAgICBjb25zdCBvcmlnaW5hbE9mZnNldFRvcCA9IG9mZnNldC50b3A7XG4gICAgY29uc3Qgb3JpZ2luYWxPZmZzZXRMZWZ0ID0gb2Zmc2V0LmxlZnQ7XG5cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSAnYWJvdmUnOlxuICAgICAgY2FzZSAnYmVsb3cnOlxuXG4gICAgICAgIC8vIEtlZXAgdGhlIGFmZml4ZWQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJmbG93IHBhcmVudC5cbiAgICAgICAgaWYgKG9mZnNldC5sZWZ0IDwgcGFyZW50T2Zmc2V0LmxlZnQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5sZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC5sZWZ0ICsgYWZmaXhlZFJlY3Qud2lkdGggPiBwYXJlbnRPZmZzZXQucmlnaHQpIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IHBhcmVudE9mZnNldC5yaWdodCAtIGFmZml4ZWRSZWN0LndpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIGEgc21hbGxlciBwaXhlbCB0b2xlcmFuY2UgaWYgdGhlIGJhc2UgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oXG4gICAgICAgICAgZGVmYXVsdFBpeGVsVG9sZXJhbmNlLFxuICAgICAgICAgIGJhc2VSZWN0LndpZHRoXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBhZmZpeGVkIGVsZW1lbnQgbmV2ZXIgZGV0YWNoZXMgZnJvbSB0aGUgYmFzZSBlbGVtZW50LlxuICAgICAgICBpZiAoXG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LnJpZ2h0IHx8XG4gICAgICAgICAgb2Zmc2V0LmxlZnQgKyBhZmZpeGVkUmVjdC53aWR0aCAtIHBpeGVsVG9sZXJhbmNlIDwgYmFzZVJlY3QubGVmdFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQubGVmdCA9IG9yaWdpbmFsT2Zmc2V0TGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcblxuICAgICAgICAvLyBLZWVwIHRoZSBhZmZpeGVkIGVsZW1lbnQgd2l0aGluIHRoZSBvdmVyZmxvdyBwYXJlbnQuXG4gICAgICAgIGlmIChvZmZzZXQudG9wIDwgcGFyZW50T2Zmc2V0LnRvcCkge1xuICAgICAgICAgIG9mZnNldC50b3AgPSBwYXJlbnRPZmZzZXQudG9wO1xuICAgICAgICB9IGVsc2UgaWYgKG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgPiBwYXJlbnRPZmZzZXQuYm90dG9tKSB7XG4gICAgICAgICAgb2Zmc2V0LnRvcCA9IHBhcmVudE9mZnNldC5ib3R0b20gLSBhZmZpeGVkUmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSBzbWFsbGVyIHBpeGVsIHRvbGVyYW5jZSBpZiB0aGUgYmFzZSBlbGVtZW50IGhlaWdodCBpcyBsZXNzIHRoYW4gdGhlIGRlZmF1bHQuXG4gICAgICAgIHBpeGVsVG9sZXJhbmNlID0gTWF0aC5taW4oXG4gICAgICAgICAgZGVmYXVsdFBpeGVsVG9sZXJhbmNlLFxuICAgICAgICAgIGJhc2VSZWN0LmhlaWdodFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgYWZmaXhlZCBlbGVtZW50IG5ldmVyIGRldGFjaGVzIGZyb20gdGhlIGJhc2UgZWxlbWVudC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG9mZnNldC50b3AgKyBwaXhlbFRvbGVyYW5jZSA+IGJhc2VSZWN0LmJvdHRvbSB8fFxuICAgICAgICAgIG9mZnNldC50b3AgKyBhZmZpeGVkUmVjdC5oZWlnaHQgLSBwaXhlbFRvbGVyYW5jZSA8IGJhc2VSZWN0LnRvcFxuICAgICAgICApIHtcbiAgICAgICAgICBvZmZzZXQudG9wID0gb3JpZ2luYWxPZmZzZXRUb3A7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbW1lZGlhdGVPdmVyZmxvd1BhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmZsb3dQYXJlbnRzW3RoaXMub3ZlcmZsb3dQYXJlbnRzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdXRvRml0Q29udGV4dFBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSB0aGlzLm92ZXJmbG93UGFyZW50c1swXTtcblxuICAgIHJldHVybiAodGhpcy5jb25maWcuYXV0b0ZpdENvbnRleHQgPT09IFNreUFmZml4QXV0b0ZpdENvbnRleHQuT3ZlcmZsb3dQYXJlbnQpXG4gICAgICA/IHRoaXMuZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKVxuICAgICAgOiBib2R5RWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5UGxhY2VtZW50Q2hhbmdlKHBsYWNlbWVudDogU2t5QWZmaXhQbGFjZW1lbnQgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICB0aGlzLl9wbGFjZW1lbnRDaGFuZ2UubmV4dCh7XG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVNjcm9sbExpc3RlbmVycygpO1xuICAgIHRoaXMucmVtb3ZlUmVzaXplTGlzdGVuZXIoKTtcblxuICAgIHRoaXMuX2NvbmZpZyA9XG4gICAgICB0aGlzLmFmZml4ZWRSZWN0ID1cbiAgICAgIHRoaXMuYmFzZUVsZW1lbnQgPVxuICAgICAgdGhpcy5iYXNlUmVjdCA9XG4gICAgICB0aGlzLmN1cnJlbnRQbGFjZW1lbnQgPVxuICAgICAgdGhpcy5jdXJyZW50T2Zmc2V0ID1cbiAgICAgIHRoaXMub3ZlcmZsb3dQYXJlbnRzID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05ld09mZnNldChvZmZzZXQ6IFNreUFmZml4T2Zmc2V0KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY3VycmVudE9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmN1cnJlbnRPZmZzZXQudG9wID09PSBvZmZzZXQudG9wICYmXG4gICAgICB0aGlzLmN1cnJlbnRPZmZzZXQubGVmdCA9PT0gb2Zmc2V0LmxlZnRcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNCYXNlRWxlbWVudFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzT2Zmc2V0UGFydGlhbGx5VmlzaWJsZVdpdGhpblBhcmVudChcbiAgICAgIHRoaXMuZ2V0SW1tZWRpYXRlT3ZlcmZsb3dQYXJlbnQoKSxcbiAgICAgIHtcbiAgICAgICAgdG9wOiB0aGlzLmJhc2VSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogdGhpcy5iYXNlUmVjdC5sZWZ0LFxuICAgICAgICByaWdodDogdGhpcy5iYXNlUmVjdC5yaWdodCxcbiAgICAgICAgYm90dG9tOiB0aGlzLmJhc2VSZWN0LmJvdHRvbVxuICAgICAgfSxcbiAgICAgIHRoaXMuY29uZmlnLmF1dG9GaXRPdmVyZmxvd09mZnNldFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFNjcm9sbExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbExpc3RlbmVycyA9IHRoaXMub3ZlcmZsb3dQYXJlbnRzLm1hcCgocGFyZW50RWxlbWVudCkgPT4ge1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSAocGFyZW50RWxlbWVudCA9PT0gZG9jdW1lbnQuYm9keSkgPyAnd2luZG93JyA6IHBhcmVudEVsZW1lbnQ7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJlci5saXN0ZW4ob3ZlcmZsb3csICdzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWZmaXgoKTtcbiAgICAgICAgdGhpcy5fb3ZlcmZsb3dTY3JvbGwubmV4dCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJlc2l6ZUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZmZpeCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVzaXplTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTY3JvbGxMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsTGlzdGVuZXJzKSB7XG4gICAgICAvLyBSZW1vdmUgcmVuZGVyZXItZ2VuZXJhdGVkIGxpc3RlbmVycyBieSBjYWxsaW5nIHRoZSBsaXN0ZW5lciBpdHNlbGYuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy85MzY4I2lzc3VlY29tbWVudC0yMjcxOTk3NzhcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4gbGlzdGVuZXIoKSk7XG4gICAgICB0aGlzLnNjcm9sbExpc3RlbmVycyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxufVxuIl19
|
@@ -1,79 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Returns the offset values of a given element.
|
3
|
-
* @param element The HTML element.
|
4
|
-
* @param bufferOffset An optional offset to add/subtract to the element's actual offset.
|
5
|
-
*/
|
6
|
-
export function getElementOffset(element, bufferOffset) {
|
7
|
-
if (bufferOffset === void 0) { bufferOffset = {}; }
|
8
|
-
var bufferOffsetBottom = bufferOffset.bottom || 0;
|
9
|
-
var bufferOffsetLeft = bufferOffset.left || 0;
|
10
|
-
var bufferOffsetRight = bufferOffset.right || 0;
|
11
|
-
var bufferOffsetTop = bufferOffset.top || 0;
|
12
|
-
var top;
|
13
|
-
var left;
|
14
|
-
var right;
|
15
|
-
var bottom;
|
16
|
-
if (element === document.body) {
|
17
|
-
left = 0;
|
18
|
-
top = 0;
|
19
|
-
right = document.documentElement.clientWidth;
|
20
|
-
bottom = document.documentElement.clientHeight;
|
21
|
-
}
|
22
|
-
else {
|
23
|
-
var clientRect = element.getBoundingClientRect();
|
24
|
-
left = clientRect.left;
|
25
|
-
top = clientRect.top;
|
26
|
-
right = clientRect.right;
|
27
|
-
bottom = clientRect.bottom;
|
28
|
-
}
|
29
|
-
bottom -= bufferOffsetBottom;
|
30
|
-
left += bufferOffsetLeft;
|
31
|
-
right -= bufferOffsetRight;
|
32
|
-
top += bufferOffsetTop;
|
33
|
-
return {
|
34
|
-
bottom: bottom,
|
35
|
-
left: left,
|
36
|
-
right: right,
|
37
|
-
top: top
|
38
|
-
};
|
39
|
-
}
|
40
|
-
export function getOverflowParents(child) {
|
41
|
-
var bodyElement = window.document.body;
|
42
|
-
var results = [bodyElement];
|
43
|
-
var parentElement = child.parentNode;
|
44
|
-
while (parentElement !== undefined &&
|
45
|
-
parentElement !== bodyElement &&
|
46
|
-
parentElement instanceof HTMLElement) {
|
47
|
-
var overflowY = window
|
48
|
-
.getComputedStyle(parentElement, undefined)
|
49
|
-
.overflowY
|
50
|
-
.toLowerCase();
|
51
|
-
if (overflowY === 'auto' ||
|
52
|
-
overflowY === 'hidden' ||
|
53
|
-
overflowY === 'scroll') {
|
54
|
-
results.push(parentElement);
|
55
|
-
}
|
56
|
-
parentElement = parentElement.parentNode;
|
57
|
-
}
|
58
|
-
return results;
|
59
|
-
}
|
60
|
-
/**
|
61
|
-
* Confirms offset is fully visible within a parent element.
|
62
|
-
* @param parent
|
63
|
-
* @param offset
|
64
|
-
*/
|
65
|
-
export function isOffsetFullyVisibleWithinParent(parent, offset, bufferOffset) {
|
66
|
-
var parentOffset = getElementOffset(parent, bufferOffset);
|
67
|
-
return !(parentOffset.top > offset.top ||
|
68
|
-
parentOffset.right < offset.right ||
|
69
|
-
parentOffset.bottom < offset.bottom ||
|
70
|
-
parentOffset.left > offset.left);
|
71
|
-
}
|
72
|
-
export function isOffsetPartiallyVisibleWithinParent(parent, offset, bufferOffset) {
|
73
|
-
var parentOffset = getElementOffset(parent, bufferOffset);
|
74
|
-
return !(parentOffset.top >= offset.bottom ||
|
75
|
-
parentOffset.right <= offset.left ||
|
76
|
-
parentOffset.bottom <= offset.top ||
|
77
|
-
parentOffset.left >= offset.right);
|
78
|
-
}
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2NvcmUvIiwic291cmNlcyI6WyJtb2R1bGVzL2FmZml4L2RvbS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixPQUFvQixFQUNwQixZQUFpQztJQUFqQyw2QkFBQSxFQUFBLGlCQUFpQztJQUdqQyxJQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ3BELElBQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDaEQsSUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNsRCxJQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUU5QyxJQUFJLEdBQVcsQ0FBQztJQUNoQixJQUFJLElBQVksQ0FBQztJQUNqQixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLE1BQWMsQ0FBQztJQUVuQixJQUFJLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1FBQzdCLElBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztLQUNoRDtTQUFNO1FBQ0wsSUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkQsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDdkIsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDNUI7SUFFRCxNQUFNLElBQUksa0JBQWtCLENBQUM7SUFDN0IsSUFBSSxJQUFJLGdCQUFnQixDQUFDO0lBQ3pCLEtBQUssSUFBSSxpQkFBaUIsQ0FBQztJQUMzQixHQUFHLElBQUksZUFBZSxDQUFDO0lBRXZCLE9BQU87UUFDTCxNQUFNLFFBQUE7UUFDTixJQUFJLE1BQUE7UUFDSixLQUFLLE9BQUE7UUFDTCxHQUFHLEtBQUE7S0FDSixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFrQjtJQUNuRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUN6QyxJQUFNLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlCLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFFckMsT0FDRSxhQUFhLEtBQUssU0FBUztRQUMzQixhQUFhLEtBQUssV0FBVztRQUM3QixhQUFhLFlBQVksV0FBVyxFQUNwQztRQUNBLElBQU0sU0FBUyxHQUFHLE1BQU07YUFDckIsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQzthQUMxQyxTQUFTO2FBQ1QsV0FBVyxFQUFFLENBQUM7UUFFakIsSUFDRSxTQUFTLEtBQUssTUFBTTtZQUNwQixTQUFTLEtBQUssUUFBUTtZQUN0QixTQUFTLEtBQUssUUFBUSxFQUN0QjtZQUNBLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0I7UUFFRCxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztLQUMxQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxNQUFtQixFQUNuQixNQUFzQixFQUN0QixZQUE2QjtJQUU3QixJQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFNUQsT0FBTyxDQUFDLENBQ04sWUFBWSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRztRQUM3QixZQUFZLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLO1FBQ2pDLFlBQVksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU07UUFDbkMsWUFBWSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNoQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQ0FBb0MsQ0FDbEQsTUFBbUIsRUFDbkIsTUFBc0IsRUFDdEIsWUFBNkI7SUFFN0IsSUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRTVELE9BQU8sQ0FBQyxDQUNOLFlBQVksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU07UUFDakMsWUFBWSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsSUFBSTtRQUNqQyxZQUFZLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHO1FBQ2pDLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FDbEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTa3lBZmZpeE9mZnNldFxufSBmcm9tICcuL2FmZml4LW9mZnNldCc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb2Zmc2V0IHZhbHVlcyBvZiBhIGdpdmVuIGVsZW1lbnQuXG4gKiBAcGFyYW0gZWxlbWVudCBUaGUgSFRNTCBlbGVtZW50LlxuICogQHBhcmFtIGJ1ZmZlck9mZnNldCBBbiBvcHRpb25hbCBvZmZzZXQgdG8gYWRkL3N1YnRyYWN0IHRvIHRoZSBlbGVtZW50J3MgYWN0dWFsIG9mZnNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRPZmZzZXQoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBidWZmZXJPZmZzZXQ6IFNreUFmZml4T2Zmc2V0ID0ge31cbik6IFNreUFmZml4T2Zmc2V0IHtcblxuICBjb25zdCBidWZmZXJPZmZzZXRCb3R0b20gPSBidWZmZXJPZmZzZXQuYm90dG9tIHx8IDA7XG4gIGNvbnN0IGJ1ZmZlck9mZnNldExlZnQgPSBidWZmZXJPZmZzZXQubGVmdCB8fCAwO1xuICBjb25zdCBidWZmZXJPZmZzZXRSaWdodCA9IGJ1ZmZlck9mZnNldC5yaWdodCB8fCAwO1xuICBjb25zdCBidWZmZXJPZmZzZXRUb3AgPSBidWZmZXJPZmZzZXQudG9wIHx8IDA7XG5cbiAgbGV0IHRvcDogbnVtYmVyO1xuICBsZXQgbGVmdDogbnVtYmVyO1xuICBsZXQgcmlnaHQ6IG51bWJlcjtcbiAgbGV0IGJvdHRvbTogbnVtYmVyO1xuXG4gIGlmIChlbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgbGVmdCA9IDA7XG4gICAgdG9wID0gMDtcbiAgICByaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBib3R0b20gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGxlZnQgPSBjbGllbnRSZWN0LmxlZnQ7XG4gICAgdG9wID0gY2xpZW50UmVjdC50b3A7XG4gICAgcmlnaHQgPSBjbGllbnRSZWN0LnJpZ2h0O1xuICAgIGJvdHRvbSA9IGNsaWVudFJlY3QuYm90dG9tO1xuICB9XG5cbiAgYm90dG9tIC09IGJ1ZmZlck9mZnNldEJvdHRvbTtcbiAgbGVmdCArPSBidWZmZXJPZmZzZXRMZWZ0O1xuICByaWdodCAtPSBidWZmZXJPZmZzZXRSaWdodDtcbiAgdG9wICs9IGJ1ZmZlck9mZnNldFRvcDtcblxuICByZXR1cm4ge1xuICAgIGJvdHRvbSxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIHRvcFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3ZlcmZsb3dQYXJlbnRzKGNoaWxkOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50W10ge1xuICBjb25zdCBib2R5RWxlbWVudCA9IHdpbmRvdy5kb2N1bWVudC5ib2R5O1xuICBjb25zdCByZXN1bHRzID0gW2JvZHlFbGVtZW50XTtcblxuICBsZXQgcGFyZW50RWxlbWVudCA9IGNoaWxkLnBhcmVudE5vZGU7XG5cbiAgd2hpbGUgKFxuICAgIHBhcmVudEVsZW1lbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgIHBhcmVudEVsZW1lbnQgIT09IGJvZHlFbGVtZW50ICYmXG4gICAgcGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG4gICkge1xuICAgIGNvbnN0IG92ZXJmbG93WSA9IHdpbmRvd1xuICAgICAgLmdldENvbXB1dGVkU3R5bGUocGFyZW50RWxlbWVudCwgdW5kZWZpbmVkKVxuICAgICAgLm92ZXJmbG93WVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoXG4gICAgICBvdmVyZmxvd1kgPT09ICdhdXRvJyB8fFxuICAgICAgb3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fFxuICAgICAgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJ1xuICAgICkge1xuICAgICAgcmVzdWx0cy5wdXNoKHBhcmVudEVsZW1lbnQpO1xuICAgIH1cblxuICAgIHBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LnBhcmVudE5vZGU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuLyoqXG4gKiBDb25maXJtcyBvZmZzZXQgaXMgZnVsbHkgdmlzaWJsZSB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudC5cbiAqIEBwYXJhbSBwYXJlbnRcbiAqIEBwYXJhbSBvZmZzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2Zmc2V0RnVsbHlWaXNpYmxlV2l0aGluUGFyZW50KFxuICBwYXJlbnQ6IEhUTUxFbGVtZW50LFxuICBvZmZzZXQ6IFNreUFmZml4T2Zmc2V0LFxuICBidWZmZXJPZmZzZXQ/OiBTa3lBZmZpeE9mZnNldFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhcmVudE9mZnNldCA9IGdldEVsZW1lbnRPZmZzZXQocGFyZW50LCBidWZmZXJPZmZzZXQpO1xuXG4gIHJldHVybiAhKFxuICAgIHBhcmVudE9mZnNldC50b3AgPiBvZmZzZXQudG9wIHx8XG4gICAgcGFyZW50T2Zmc2V0LnJpZ2h0IDwgb2Zmc2V0LnJpZ2h0IHx8XG4gICAgcGFyZW50T2Zmc2V0LmJvdHRvbSA8IG9mZnNldC5ib3R0b20gfHxcbiAgICBwYXJlbnRPZmZzZXQubGVmdCA+IG9mZnNldC5sZWZ0XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc09mZnNldFBhcnRpYWxseVZpc2libGVXaXRoaW5QYXJlbnQoXG4gIHBhcmVudDogSFRNTEVsZW1lbnQsXG4gIG9mZnNldDogU2t5QWZmaXhPZmZzZXQsXG4gIGJ1ZmZlck9mZnNldD86IFNreUFmZml4T2Zmc2V0XG4pOiBib29sZWFuIHtcbiAgY29uc3QgcGFyZW50T2Zmc2V0ID0gZ2V0RWxlbWVudE9mZnNldChwYXJlbnQsIGJ1ZmZlck9mZnNldCk7XG5cbiAgcmV0dXJuICEoXG4gICAgcGFyZW50T2Zmc2V0LnRvcCA+PSBvZmZzZXQuYm90dG9tIHx8XG4gICAgcGFyZW50T2Zmc2V0LnJpZ2h0IDw9IG9mZnNldC5sZWZ0IHx8XG4gICAgcGFyZW50T2Zmc2V0LmJvdHRvbSA8PSBvZmZzZXQudG9wIHx8XG4gICAgcGFyZW50T2Zmc2V0LmxlZnQgPj0gb2Zmc2V0LnJpZ2h0XG4gICk7XG59XG4iXX0=
|
@@ -1,72 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { ElementRef, Injectable, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';
|
3
|
-
import { MutationObserverService } from '../mutation/mutation-observer-service';
|
4
|
-
import { fromEvent as observableFromEvent, Subject } from 'rxjs';
|
5
|
-
import { debounceTime, takeUntil } from 'rxjs/operators';
|
6
|
-
/**
|
7
|
-
* @internal
|
8
|
-
*/
|
9
|
-
var SkyDockDomAdapterService = /** @class */ (function () {
|
10
|
-
function SkyDockDomAdapterService(mutationService, rendererFactory) {
|
11
|
-
this.mutationService = mutationService;
|
12
|
-
this.ngUnsubscribe = new Subject();
|
13
|
-
this.renderer = rendererFactory.createRenderer(undefined, undefined);
|
14
|
-
}
|
15
|
-
SkyDockDomAdapterService.prototype.ngOnDestroy = function () {
|
16
|
-
this.observer.disconnect();
|
17
|
-
this.ngUnsubscribe.next();
|
18
|
-
if (this.styleElement) {
|
19
|
-
this.destroyStyleElement();
|
20
|
-
}
|
21
|
-
this.currentDockHeight =
|
22
|
-
this.ngUnsubscribe =
|
23
|
-
this.observer =
|
24
|
-
this.styleElement = undefined;
|
25
|
-
};
|
26
|
-
SkyDockDomAdapterService.prototype.watchDomChanges = function (elementRef) {
|
27
|
-
var _this = this;
|
28
|
-
this.observer = this.mutationService.create(function () {
|
29
|
-
_this.adjustBodyStyles(elementRef);
|
30
|
-
});
|
31
|
-
this.observer.observe(elementRef.nativeElement, {
|
32
|
-
attributes: true,
|
33
|
-
childList: true,
|
34
|
-
characterData: true,
|
35
|
-
subtree: true
|
36
|
-
});
|
37
|
-
observableFromEvent(window, 'resize')
|
38
|
-
.pipe(debounceTime(250), takeUntil(this.ngUnsubscribe))
|
39
|
-
.subscribe(function () { return _this.adjustBodyStyles(elementRef); });
|
40
|
-
};
|
41
|
-
SkyDockDomAdapterService.prototype.adjustBodyStyles = function (elementRef) {
|
42
|
-
var dockHeight = elementRef.nativeElement.getBoundingClientRect().height;
|
43
|
-
if (dockHeight === this.currentDockHeight) {
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
// Create a style element to avoid overwriting any existing inline body styles.
|
47
|
-
var styleElement = this.renderer.createElement('style');
|
48
|
-
var textNode = this.renderer.createText("body { margin-bottom: " + dockHeight + "px; }");
|
49
|
-
// Apply a `data-` attribute to make unit testing easier.
|
50
|
-
this.renderer.setAttribute(styleElement, 'data-test-selector', 'sky-layout-dock-bottom-styles');
|
51
|
-
this.renderer.appendChild(styleElement, textNode);
|
52
|
-
this.renderer.appendChild(document.head, styleElement);
|
53
|
-
if (this.styleElement) {
|
54
|
-
this.destroyStyleElement();
|
55
|
-
}
|
56
|
-
this.currentDockHeight = dockHeight;
|
57
|
-
this.styleElement = styleElement;
|
58
|
-
};
|
59
|
-
SkyDockDomAdapterService.prototype.destroyStyleElement = function () {
|
60
|
-
this.renderer.removeChild(document.head, this.styleElement);
|
61
|
-
};
|
62
|
-
SkyDockDomAdapterService.ctorParameters = function () { return [
|
63
|
-
{ type: MutationObserverService },
|
64
|
-
{ type: RendererFactory2 }
|
65
|
-
]; };
|
66
|
-
SkyDockDomAdapterService = __decorate([
|
67
|
-
Injectable()
|
68
|
-
], SkyDockDomAdapterService);
|
69
|
-
return SkyDockDomAdapterService;
|
70
|
-
}());
|
71
|
-
export { SkyDockDomAdapterService };
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2NvcmUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RvY2svZG9jay1kb20tYWRhcHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3hCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsT0FBTyxFQUNMLFNBQVMsSUFBSSxtQkFBbUIsRUFDaEMsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qjs7R0FFRztBQUVIO0lBWUUsa0NBQ1UsZUFBd0MsRUFDaEQsZUFBaUM7UUFEekIsb0JBQWUsR0FBZixlQUFlLENBQXlCO1FBVDFDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVkxQyxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSw4Q0FBVyxHQUFsQjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLElBQUksQ0FBQyxhQUFhO2dCQUNsQixJQUFJLENBQUMsUUFBUTtvQkFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sa0RBQWUsR0FBdEIsVUFBdUIsVUFBc0I7UUFBN0MsaUJBa0JDO1FBakJDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDMUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUM5QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsbUJBQW1CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUNsQyxJQUFJLENBQ0gsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUM5QjthQUNBLFNBQVMsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFqQyxDQUFpQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLG1EQUFnQixHQUF4QixVQUF5QixVQUFzQjtRQUM3QyxJQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzNFLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxPQUFPO1NBQ1I7UUFFRCwrRUFBK0U7UUFDL0UsSUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsMkJBQXlCLFVBQVUsVUFBTyxDQUFDLENBQUM7UUFFdEYseURBQXlEO1FBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUN4QixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLCtCQUErQixDQUNoQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFdkQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRU8sc0RBQW1CLEdBQTNCO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7Z0JBdEUwQix1QkFBdUI7Z0JBQy9CLGdCQUFnQjs7SUFkeEIsd0JBQXdCO1FBRHBDLFVBQVUsRUFBRTtPQUNBLHdCQUF3QixDQXFGcEM7SUFBRCwrQkFBQztDQUFBLEFBckZELElBcUZDO1NBckZZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBNdXRhdGlvbk9ic2VydmVyU2VydmljZVxufSBmcm9tICcuLi9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreURvY2tEb21BZGFwdGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBjdXJyZW50RG9ja0hlaWdodDogbnVtYmVyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgcHJpdmF0ZSBzdHlsZUVsZW1lbnQ6IEhUTUxTdHlsZUVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtdXRhdGlvblNlcnZpY2U6IE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuc3R5bGVFbGVtZW50KSB7XG4gICAgICB0aGlzLmRlc3Ryb3lTdHlsZUVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnREb2NrSGVpZ2h0ID1cbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUgPVxuICAgIHRoaXMub2JzZXJ2ZXIgPVxuICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHdhdGNoRG9tQ2hhbmdlcyhlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlciA9IHRoaXMubXV0YXRpb25TZXJ2aWNlLmNyZWF0ZSgoKSA9PiB7XG4gICAgICB0aGlzLmFkanVzdEJvZHlTdHlsZXMoZWxlbWVudFJlZik7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWVcbiAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZGp1c3RCb2R5U3R5bGVzKGVsZW1lbnRSZWYpKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRqdXN0Qm9keVN0eWxlcyhlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgZG9ja0hlaWdodCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgaWYgKGRvY2tIZWlnaHQgPT09IHRoaXMuY3VycmVudERvY2tIZWlnaHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFueSBleGlzdGluZyBpbmxpbmUgYm9keSBzdHlsZXMuXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KGBib2R5IHsgbWFyZ2luLWJvdHRvbTogJHtkb2NrSGVpZ2h0fXB4OyB9YCk7XG5cbiAgICAvLyBBcHBseSBhIGBkYXRhLWAgYXR0cmlidXRlIHRvIG1ha2UgdW5pdCB0ZXN0aW5nIGVhc2llci5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgIHN0eWxlRWxlbWVudCxcbiAgICAgICdkYXRhLXRlc3Qtc2VsZWN0b3InLFxuICAgICAgJ3NreS1sYXlvdXQtZG9jay1ib3R0b20tc3R5bGVzJ1xuICAgICk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCwgdGV4dE5vZGUpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuaGVhZCwgc3R5bGVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy5kZXN0cm95U3R5bGVFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50RG9ja0hlaWdodCA9IGRvY2tIZWlnaHQ7XG4gICAgdGhpcy5zdHlsZUVsZW1lbnQgPSBzdHlsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lTdHlsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gIH1cblxufVxuIl19
|
@@ -1 +0,0 @@
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pbnNlcnQtY29tcG9uZW50LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9jb3JlLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kb2NrL2RvY2staW5zZXJ0LWNvbXBvbmVudC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YXRpY1Byb3ZpZGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lEb2NrSXRlbUNvbmZpZ1xufSBmcm9tICcuL2RvY2staXRlbS1jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNreURvY2tJbnNlcnRDb21wb25lbnRDb25maWcgZXh0ZW5kcyBTa3lEb2NrSXRlbUNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBwcm92aWRlcnMgdG8gaW5qZWN0IGludG8gdGhlIGl0ZW0ncyBjb21wb25lbnQuXG4gICAqL1xuICBwcm92aWRlcnM/OiBTdGF0aWNQcm92aWRlcltdO1xuXG59XG4iXX0=
|
@@ -1 +0,0 @@
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pdGVtLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9jb3JlLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kb2NrL2RvY2staXRlbS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiB0byBiZSB1c2VkIGJ5IHRoZSBkb2NraW5nIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lEb2NrSXRlbUNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayBvcmRlciBvZiB0aGUgaXRlbS4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgaGlnaGVyXG4gICAqIHRoZSBpdGVtIHdpbGwgYmUgcGxhY2VkIGluIHRoZSBkb2NrLiBCeSBkZWZhdWx0LCBuZXcgaXRlbXMgd2lsbCBiZSBwbGFjZWQgYXRcbiAgICogdGhlIHRvcCBvZiB0aGUgc3RhY2suXG4gICAqL1xuICBzdGFja09yZGVyPzogbnVtYmVyO1xuXG59XG4iXX0=
|
@@ -1 +0,0 @@
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pdGVtLXJlZmVyZW5jZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9jb3JlLyIsInNvdXJjZXMiOlsibW9kdWxlcy9kb2NrL2RvY2staXRlbS1yZWZlcmVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZG9jayBpdGVtJ3MgY29tcG9uZW50IHJlZmVyZW5jZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNreURvY2tJdGVtUmVmZXJlbmNlPFQ+IHtcblxuICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPjtcblxuICBzdGFja09yZGVyOiBudW1iZXI7XG5cbn1cbiJdfQ==
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import { Subject } from 'rxjs';
|
2
|
-
/**
|
3
|
-
* Represents a single item added to the dock.
|
4
|
-
*/
|
5
|
-
var SkyDockItem = /** @class */ (function () {
|
6
|
-
/**
|
7
|
-
* @param componentInstance The item's component instance.
|
8
|
-
* @param stackOrder The assigned stack order of the docked item.
|
9
|
-
*/
|
10
|
-
function SkyDockItem(componentInstance, stackOrder) {
|
11
|
-
this.componentInstance = componentInstance;
|
12
|
-
this.stackOrder = stackOrder;
|
13
|
-
this._destroyed = new Subject();
|
14
|
-
}
|
15
|
-
Object.defineProperty(SkyDockItem.prototype, "destroyed", {
|
16
|
-
/**
|
17
|
-
* An event that emits when the item is removed from the dock.
|
18
|
-
*/
|
19
|
-
get: function () {
|
20
|
-
return this._destroyed.asObservable();
|
21
|
-
},
|
22
|
-
enumerable: true,
|
23
|
-
configurable: true
|
24
|
-
});
|
25
|
-
/**
|
26
|
-
* Removes the item from the dock.
|
27
|
-
*/
|
28
|
-
SkyDockItem.prototype.destroy = function () {
|
29
|
-
this._destroyed.next();
|
30
|
-
this._destroyed.complete();
|
31
|
-
};
|
32
|
-
return SkyDockItem;
|
33
|
-
}());
|
34
|
-
export { SkyDockItem };
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jay1pdGVtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2NvcmUvIiwic291cmNlcyI6WyJtb2R1bGVzL2RvY2svZG9jay1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZDs7R0FFRztBQUNIO0lBV0U7OztPQUdHO0lBQ0gscUJBQ2tCLGlCQUFvQixFQUNwQixVQUFrQjtRQURsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQUc7UUFDcEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVI1QixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVNyQyxDQUFDO0lBYkwsc0JBQVcsa0NBQVM7UUFIcEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxDQUFDOzs7T0FBQTtJQWFEOztPQUVHO0lBQ0ksNkJBQU8sR0FBZDtRQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUgsa0JBQUM7QUFBRCxDQUFDLEFBNUJELElBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGl0ZW0gYWRkZWQgdG8gdGhlIGRvY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lEb2NrSXRlbTxUPiB7XG5cbiAgLyoqXG4gICAqIEFuIGV2ZW50IHRoYXQgZW1pdHMgd2hlbiB0aGUgaXRlbSBpcyByZW1vdmVkIGZyb20gdGhlIGRvY2suXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlc3Ryb3llZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogQHBhcmFtIGNvbXBvbmVudEluc3RhbmNlIFRoZSBpdGVtJ3MgY29tcG9uZW50IGluc3RhbmNlLlxuICAgKiBAcGFyYW0gc3RhY2tPcmRlciBUaGUgYXNzaWduZWQgc3RhY2sgb3JkZXIgb2YgdGhlIGRvY2tlZCBpdGVtLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbXBvbmVudEluc3RhbmNlOiBULFxuICAgIHB1YmxpYyByZWFkb25seSBzdGFja09yZGVyOiBudW1iZXJcbiAgKSB7IH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgaXRlbSBmcm9tIHRoZSBkb2NrLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iXX0=
|