@skyux/core 6.16.0 → 7.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/documentation.json +1049 -899
- package/esm2020/lib/modules/adapter-service/adapter.module.mjs +4 -4
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +24 -25
- package/esm2020/lib/modules/affix/affix-offset.mjs +1 -1
- package/esm2020/lib/modules/affix/affix.directive.mjs +41 -26
- package/esm2020/lib/modules/affix/affix.module.mjs +5 -5
- package/esm2020/lib/modules/affix/affix.service.mjs +3 -3
- package/esm2020/lib/modules/affix/affixer.mjs +266 -260
- package/esm2020/lib/modules/affix/dom-utils.mjs +7 -7
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +51 -47
- package/esm2020/lib/modules/dock/dock-item.mjs +10 -5
- package/esm2020/lib/modules/dock/dock.component.mjs +58 -34
- package/esm2020/lib/modules/dock/dock.module.mjs +5 -5
- package/esm2020/lib/modules/dock/dock.service.mjs +43 -39
- package/esm2020/lib/modules/dynamic-component/dynamic-component.module.mjs +4 -4
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +40 -25
- package/esm2020/lib/modules/format/app-format.mjs +3 -3
- package/esm2020/lib/modules/id/id.directive.mjs +3 -3
- package/esm2020/lib/modules/id/id.module.mjs +4 -4
- package/esm2020/lib/modules/id/id.service.mjs +3 -3
- package/esm2020/lib/modules/log/log.module.mjs +4 -4
- package/esm2020/lib/modules/log/log.service.mjs +41 -41
- package/esm2020/lib/modules/media-query/media-query.module.mjs +4 -4
- package/esm2020/lib/modules/media-query/media-query.service.mjs +53 -50
- package/esm2020/lib/modules/mutation/mutation-observer-service.mjs +6 -4
- package/esm2020/lib/modules/numeric/numeric.module.mjs +5 -5
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +29 -22
- package/esm2020/lib/modules/numeric/numeric.service.mjs +87 -102
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +26 -20
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +18 -9
- package/esm2020/lib/modules/overlay/overlay.component.mjs +82 -58
- package/esm2020/lib/modules/overlay/overlay.module.mjs +5 -5
- package/esm2020/lib/modules/overlay/overlay.service.mjs +58 -52
- package/esm2020/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +35 -24
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +41 -49
- package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +3 -3
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +69 -70
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +4 -4
- package/esm2020/lib/modules/title/title.service.mjs +11 -7
- package/esm2020/lib/modules/trim/trim.directive.mjs +13 -14
- package/esm2020/lib/modules/trim/trim.module.mjs +4 -4
- package/esm2020/lib/modules/ui-config/ui-config.service.mjs +3 -3
- package/esm2020/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +1 -1
- package/esm2020/lib/modules/viewkeeper/viewkeeper-host-options.mjs +3 -3
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +78 -63
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +166 -156
- package/esm2020/lib/modules/viewkeeper/viewkeeper.module.mjs +4 -4
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +10 -6
- package/esm2020/lib/modules/window/window-ref.mjs +3 -3
- package/esm2020/testing/core-testing.module.mjs +8 -5
- package/esm2020/testing/mock-media-query.service.mjs +7 -4
- package/esm2020/testing/mock-ui-config.service.mjs +7 -4
- package/esm2020/testing/overlay/overlay-harness-filters.mjs +1 -1
- package/esm2020/testing/overlay/overlay-harness.mjs +2 -1
- package/esm2020/testing/shared/component-harness.mjs +4 -1
- package/esm2020/testing/shared/harness-filters.mjs +1 -1
- package/fesm2015/skyux-core-testing.mjs +23 -10
- package/fesm2015/skyux-core-testing.mjs.map +1 -1
- package/fesm2015/skyux-core.mjs +1416 -1291
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core-testing.mjs +23 -10
- package/fesm2020/skyux-core-testing.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +1418 -1290
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/lib/modules/adapter-service/adapter.service.d.ts +3 -5
- package/lib/modules/affix/affix-offset.d.ts +1 -1
- package/lib/modules/affix/affix.directive.d.ts +13 -14
- package/lib/modules/affix/affixer.d.ts +2 -34
- package/lib/modules/affix/dom-utils.d.ts +3 -3
- package/lib/modules/dock/dock-dom-adapter.service.d.ts +2 -9
- package/lib/modules/dock/dock-item.d.ts +1 -1
- package/lib/modules/dock/dock.component.d.ts +3 -11
- package/lib/modules/dock/dock.service.d.ts +2 -5
- package/lib/modules/dynamic-component/dynamic-component.service.d.ts +2 -7
- package/lib/modules/id/id.directive.d.ts +1 -1
- package/lib/modules/log/log.service.d.ts +2 -6
- package/lib/modules/media-query/media-query.service.d.ts +1 -8
- package/lib/modules/numeric/numeric.pipe.d.ts +3 -9
- package/lib/modules/numeric/numeric.service.d.ts +3 -36
- package/lib/modules/overlay/overlay-adapter.service.d.ts +1 -3
- package/lib/modules/overlay/overlay-instance.d.ts +1 -2
- package/lib/modules/overlay/overlay.component.d.ts +2 -15
- package/lib/modules/overlay/overlay.service.d.ts +1 -7
- package/lib/modules/percent-pipe/percent.pipe.d.ts +3 -10
- package/lib/modules/resize-observer/resize-observer-media-query.service.d.ts +2 -7
- package/lib/modules/scrollable-host/scrollable-host.service.d.ts +2 -11
- package/lib/modules/title/title.service.d.ts +2 -2
- package/lib/modules/trim/trim.directive.d.ts +1 -3
- package/lib/modules/viewkeeper/viewkeeper-boundary-info.d.ts +1 -1
- package/lib/modules/viewkeeper/viewkeeper.d.ts +2 -24
- package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +5 -17
- package/lib/modules/viewkeeper/viewkeeper.service.d.ts +1 -1
- package/package.json +10 -10
- package/testing/core-testing.module.d.ts +3 -0
- package/testing/{skyux-core-testing.d.ts → index.d.ts} +0 -0
- package/testing/mock-media-query.service.d.ts +3 -0
- package/testing/mock-ui-config.service.d.ts +3 -0
- package/testing/overlay/overlay-harness-filters.d.ts +1 -0
- package/testing/overlay/overlay-harness.d.ts +1 -0
- package/testing/shared/component-harness.d.ts +3 -0
- package/testing/shared/harness-filters.d.ts +1 -0
- package/skyux-core.d.ts +0 -5
- package/testing/package.json +0 -10
@@ -1,3 +1,5 @@
|
|
1
|
+
var _SkyViewkeeper_instances, _SkyViewkeeper_boundaryEl, _SkyViewkeeper_el, _SkyViewkeeper_id, _SkyViewkeeper_setWidth, _SkyViewkeeper_verticalOffset, _SkyViewkeeper_verticalOffsetEl, _SkyViewkeeper_viewportMarginTop, _SkyViewkeeper_currentElFixedLeft, _SkyViewkeeper_currentElFixedTop, _SkyViewkeeper_currentElFixedWidth, _SkyViewkeeper_isDestroyed, _SkyViewkeeper_scrollableHost, _SkyViewkeeper_syncElPositionHandler, _SkyViewkeeper_getSpacerId, _SkyViewkeeper_unfixEl, _SkyViewkeeper_calculateVerticalOffset, _SkyViewkeeper_shouldFixEl, _SkyViewkeeper_getFixedStyles, _SkyViewkeeper_needsUpdating, _SkyViewkeeper_fixEl, _SkyViewkeeper_getBoundaryInfo;
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
1
3
|
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
2
4
|
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
3
5
|
let styleEl;
|
@@ -64,188 +66,196 @@ function createCustomEvent(name) {
|
|
64
66
|
}
|
65
67
|
export class SkyViewkeeper {
|
66
68
|
constructor(options) {
|
69
|
+
_SkyViewkeeper_instances.add(this);
|
70
|
+
_SkyViewkeeper_boundaryEl.set(this, void 0);
|
71
|
+
_SkyViewkeeper_el.set(this, void 0);
|
72
|
+
_SkyViewkeeper_id.set(this, void 0);
|
73
|
+
_SkyViewkeeper_setWidth.set(this, void 0);
|
74
|
+
_SkyViewkeeper_verticalOffset.set(this, void 0);
|
75
|
+
_SkyViewkeeper_verticalOffsetEl.set(this, void 0);
|
76
|
+
_SkyViewkeeper_viewportMarginTop.set(this, 0);
|
77
|
+
_SkyViewkeeper_currentElFixedLeft.set(this, void 0);
|
78
|
+
_SkyViewkeeper_currentElFixedTop.set(this, void 0);
|
79
|
+
_SkyViewkeeper_currentElFixedWidth.set(this, void 0);
|
80
|
+
_SkyViewkeeper_isDestroyed.set(this, false);
|
81
|
+
_SkyViewkeeper_scrollableHost.set(this, void 0);
|
82
|
+
_SkyViewkeeper_syncElPositionHandler.set(this, void 0);
|
67
83
|
options = options || /* istanbul ignore next */ {};
|
68
|
-
this
|
69
|
-
this.
|
70
|
-
this
|
71
|
-
|
72
|
-
this.scrollableHost = options.scrollableHost;
|
73
|
-
this.verticalOffset = options.verticalOffset || 0;
|
74
|
-
this.verticalOffsetEl = options.verticalOffsetEl;
|
75
|
-
this.viewportMarginTop = options.viewportMarginTop || 0;
|
76
|
-
this.syncElPositionHandler = () => this.syncElPosition();
|
77
|
-
if (this.verticalOffsetEl) {
|
78
|
-
this.verticalOffsetEl.addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.syncElPositionHandler);
|
84
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_el, options.el, "f");
|
85
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, options.boundaryEl, "f");
|
86
|
+
if (!__classPrivateFieldGet(this, _SkyViewkeeper_el, "f")) {
|
87
|
+
throw new Error('[SkyViewkeeper] The option `el` is required.');
|
79
88
|
}
|
80
|
-
|
81
|
-
|
82
|
-
window.addEventListener('orientationchange', this.syncElPositionHandler);
|
83
|
-
ensureStyleEl();
|
84
|
-
this.syncElPosition();
|
85
|
-
}
|
86
|
-
set viewportMarginTop(margin) {
|
87
|
-
this._viewportMarginTop = margin;
|
88
|
-
}
|
89
|
-
get viewportMarginTop() {
|
90
|
-
if (this.scrollableHost) {
|
91
|
-
return 0;
|
89
|
+
if (!__classPrivateFieldGet(this, _SkyViewkeeper_boundaryEl, "f")) {
|
90
|
+
throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');
|
92
91
|
}
|
93
|
-
|
94
|
-
|
92
|
+
const el = __classPrivateFieldGet(this, _SkyViewkeeper_el, "f");
|
93
|
+
const boundaryEl = __classPrivateFieldGet(this, _SkyViewkeeper_boundaryEl, "f");
|
94
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_setWidth, !!options.setWidth, "f");
|
95
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_id, nextId(), "f");
|
96
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_scrollableHost, options.scrollableHost, "f");
|
97
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_verticalOffset, options.verticalOffset || 0, "f");
|
98
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_verticalOffsetEl, options.verticalOffsetEl, "f");
|
99
|
+
// Only set viewport margin if the scrollable host is undefined.
|
100
|
+
if (!__classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")) {
|
101
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_viewportMarginTop, options.viewportMarginTop ?? 0, "f");
|
95
102
|
}
|
103
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_syncElPositionHandler, () => this.syncElPosition(el, boundaryEl), "f");
|
104
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
|
105
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
106
|
+
}
|
107
|
+
window.addEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
|
108
|
+
window.addEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
109
|
+
window.addEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
110
|
+
ensureStyleEl();
|
111
|
+
this.syncElPosition(el, boundaryEl);
|
96
112
|
}
|
97
|
-
syncElPosition() {
|
98
|
-
const verticalOffset = this.
|
113
|
+
syncElPosition(el, boundaryEl) {
|
114
|
+
const verticalOffset = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_calculateVerticalOffset).call(this);
|
99
115
|
// When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.
|
100
|
-
if (
|
116
|
+
if (el.offsetWidth === 0 && el.offsetHeight === 0) {
|
101
117
|
return;
|
102
118
|
}
|
103
|
-
const boundaryInfo = this.
|
104
|
-
const fixedStyles = this.
|
105
|
-
const doFixEl = this.
|
106
|
-
if (this.
|
119
|
+
const boundaryInfo = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getBoundaryInfo).call(this, el, boundaryEl);
|
120
|
+
const fixedStyles = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getFixedStyles).call(this, boundaryInfo, verticalOffset);
|
121
|
+
const doFixEl = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_shouldFixEl).call(this, el, boundaryInfo, verticalOffset);
|
122
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_needsUpdating).call(this, doFixEl, fixedStyles)) {
|
107
123
|
if (doFixEl) {
|
108
|
-
this.
|
124
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_fixEl).call(this, el, boundaryInfo, fixedStyles);
|
109
125
|
}
|
110
126
|
else {
|
111
|
-
this.
|
127
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_unfixEl).call(this, el);
|
112
128
|
}
|
113
129
|
}
|
114
130
|
const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
|
115
|
-
|
131
|
+
el.dispatchEvent(evt);
|
116
132
|
}
|
117
133
|
destroy() {
|
118
|
-
if (!this
|
119
|
-
window.removeEventListener('scroll', this
|
120
|
-
window.removeEventListener('resize', this
|
121
|
-
window.removeEventListener('orientationchange', this
|
122
|
-
this
|
123
|
-
|
124
|
-
|
134
|
+
if (!__classPrivateFieldGet(this, _SkyViewkeeper_isDestroyed, "f")) {
|
135
|
+
window.removeEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
|
136
|
+
window.removeEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
137
|
+
window.removeEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
138
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_el, "f")) {
|
139
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_unfixEl).call(this, __classPrivateFieldGet(this, _SkyViewkeeper_el, "f"));
|
140
|
+
}
|
141
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
|
142
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
125
143
|
}
|
126
|
-
this
|
127
|
-
this
|
144
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_el, __classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, __classPrivateFieldSet(this, _SkyViewkeeper_verticalOffsetEl, undefined, "f"), "f"), "f");
|
145
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_isDestroyed, true, "f");
|
128
146
|
}
|
129
147
|
}
|
130
|
-
|
131
|
-
|
148
|
+
}
|
149
|
+
_SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _SkyViewkeeper_id = new WeakMap(), _SkyViewkeeper_setWidth = new WeakMap(), _SkyViewkeeper_verticalOffset = new WeakMap(), _SkyViewkeeper_verticalOffsetEl = new WeakMap(), _SkyViewkeeper_viewportMarginTop = new WeakMap(), _SkyViewkeeper_currentElFixedLeft = new WeakMap(), _SkyViewkeeper_currentElFixedTop = new WeakMap(), _SkyViewkeeper_currentElFixedWidth = new WeakMap(), _SkyViewkeeper_isDestroyed = new WeakMap(), _SkyViewkeeper_scrollableHost = new WeakMap(), _SkyViewkeeper_syncElPositionHandler = new WeakMap(), _SkyViewkeeper_instances = new WeakSet(), _SkyViewkeeper_getSpacerId = function _SkyViewkeeper_getSpacerId() {
|
150
|
+
return __classPrivateFieldGet(this, _SkyViewkeeper_id, "f") + '-spacer';
|
151
|
+
}, _SkyViewkeeper_unfixEl = function _SkyViewkeeper_unfixEl(el) {
|
152
|
+
const spacerEl = document.getElementById(__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this));
|
153
|
+
/*istanbul ignore else*/
|
154
|
+
if (spacerEl?.parentElement) {
|
155
|
+
spacerEl.parentElement.removeChild(spacerEl);
|
132
156
|
}
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
this.el.classList.remove(CLS_VIEWKEEPER_FIXED);
|
139
|
-
this.currentElFixedLeft =
|
140
|
-
this.currentElFixedTop =
|
141
|
-
this.currentElFixedWidth =
|
142
|
-
undefined;
|
143
|
-
let width;
|
144
|
-
if (this.setWidth) {
|
145
|
-
width = 'auto';
|
146
|
-
}
|
147
|
-
setElPosition(this.el, '', '', width, '');
|
157
|
+
el.classList.remove(CLS_VIEWKEEPER_FIXED);
|
158
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, undefined, "f"), "f"), "f");
|
159
|
+
let width = '';
|
160
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
161
|
+
width = 'auto';
|
148
162
|
}
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
else if (this.scrollableHost) {
|
157
|
-
offset += this.scrollableHost.getBoundingClientRect().top;
|
158
|
-
}
|
159
|
-
return offset;
|
163
|
+
setElPosition(el, '', '', width, '');
|
164
|
+
}, _SkyViewkeeper_calculateVerticalOffset = function _SkyViewkeeper_calculateVerticalOffset() {
|
165
|
+
let offset = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffset, "f");
|
166
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
|
167
|
+
const verticalOffsetElTopStyle = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").style.top;
|
168
|
+
const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;
|
169
|
+
offset += __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").offsetHeight + verticalOffsetElTop;
|
160
170
|
}
|
161
|
-
|
162
|
-
|
163
|
-
if (boundaryInfo.spacerEl) {
|
164
|
-
anchorTop = getOffset(boundaryInfo.spacerEl, this.scrollableHost).top;
|
165
|
-
}
|
166
|
-
else {
|
167
|
-
anchorTop = getOffset(this.el, this.scrollableHost).top;
|
168
|
-
}
|
169
|
-
const doFixEl = boundaryInfo.scrollTop + verticalOffset + this.viewportMarginTop >
|
170
|
-
anchorTop;
|
171
|
-
return doFixEl;
|
171
|
+
else if (__classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")) {
|
172
|
+
offset += __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").getBoundingClientRect().top;
|
172
173
|
}
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
const elFixedTop = Math.min(boundaryInfo.boundaryBottom -
|
179
|
-
boundaryInfo.elHeight -
|
180
|
-
boundaryInfo.scrollTop, verticalOffset);
|
181
|
-
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
182
|
-
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
183
|
-
return {
|
184
|
-
elFixedLeft,
|
185
|
-
elFixedTop,
|
186
|
-
elFixedWidth,
|
187
|
-
};
|
174
|
+
return offset;
|
175
|
+
}, _SkyViewkeeper_shouldFixEl = function _SkyViewkeeper_shouldFixEl(el, boundaryInfo, verticalOffset) {
|
176
|
+
let anchorTop;
|
177
|
+
if (boundaryInfo.spacerEl) {
|
178
|
+
anchorTop = getOffset(boundaryInfo.spacerEl, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")).top;
|
188
179
|
}
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
180
|
+
else {
|
181
|
+
anchorTop = getOffset(el, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")).top;
|
182
|
+
}
|
183
|
+
const doFixEl = boundaryInfo.scrollTop + verticalOffset + __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f") >
|
184
|
+
anchorTop;
|
185
|
+
return doFixEl;
|
186
|
+
}, _SkyViewkeeper_getFixedStyles = function _SkyViewkeeper_getFixedStyles(boundaryInfo, verticalOffset) {
|
187
|
+
// If the element needs to be fixed, this will calculate its position. The position
|
188
|
+
// will be 0 (fully visible) unless the user is scrolling the boundary out of view.
|
189
|
+
// In that case, the element should begin to scroll out of view with the
|
190
|
+
// rest of the boundary by setting its top position to a negative value.
|
191
|
+
const elFixedTop = Math.min(boundaryInfo.boundaryBottom -
|
192
|
+
boundaryInfo.elHeight -
|
193
|
+
boundaryInfo.scrollTop, verticalOffset);
|
194
|
+
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
195
|
+
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
196
|
+
return {
|
197
|
+
elFixedLeft,
|
198
|
+
elFixedTop,
|
199
|
+
elFixedWidth,
|
200
|
+
};
|
201
|
+
}, _SkyViewkeeper_needsUpdating = function _SkyViewkeeper_needsUpdating(doFixEl, fixedStyles) {
|
202
|
+
if ((doFixEl &&
|
203
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") === fixedStyles.elFixedLeft &&
|
204
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedTop, "f") === fixedStyles.elFixedTop &&
|
205
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedWidth, "f") === fixedStyles.elFixedWidth) ||
|
206
|
+
(!doFixEl &&
|
207
|
+
!(__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== undefined &&
|
208
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== null))) {
|
209
|
+
// The element is either currently fixed and its position and width do not need
|
210
|
+
// to change, or the element is not currently fixed and does not need to be fixed.
|
211
|
+
// No changes are needed.
|
212
|
+
return false;
|
203
213
|
}
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
214
|
+
return true;
|
215
|
+
}, _SkyViewkeeper_fixEl = function _SkyViewkeeper_fixEl(el, boundaryInfo, fixedStyles) {
|
216
|
+
/* istanbul ignore else */
|
217
|
+
/* sanity check */
|
218
|
+
if (!boundaryInfo.spacerEl) {
|
219
|
+
const spacerHeight = boundaryInfo.elHeight;
|
220
|
+
const spacerEl = document.createElement('div');
|
221
|
+
spacerEl.id = boundaryInfo.spacerId;
|
222
|
+
spacerEl.style.height = px(spacerHeight);
|
223
|
+
/*istanbul ignore else*/
|
224
|
+
if (el.parentNode) {
|
213
225
|
el.parentNode.insertBefore(spacerEl, el.nextSibling);
|
214
226
|
}
|
215
|
-
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
216
|
-
this.currentElFixedTop = fixedStyles.elFixedTop;
|
217
|
-
this.currentElFixedLeft = fixedStyles.elFixedLeft;
|
218
|
-
this.currentElFixedWidth = fixedStyles.elFixedWidth;
|
219
|
-
let width;
|
220
|
-
if (this.setWidth) {
|
221
|
-
width = fixedStyles.elFixedWidth;
|
222
|
-
}
|
223
|
-
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, this.viewportMarginTop);
|
224
227
|
}
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
const scrollLeft = this.scrollableHost
|
233
|
-
? this.scrollableHost.scrollLeft
|
234
|
-
: document.documentElement.scrollLeft;
|
235
|
-
const scrollTop = this.scrollableHost
|
236
|
-
? this.scrollableHost.scrollTop
|
237
|
-
: document.documentElement.scrollTop;
|
238
|
-
const elHeight = getHeightWithMargin(this.el);
|
239
|
-
return {
|
240
|
-
boundaryBottom,
|
241
|
-
boundaryOffset,
|
242
|
-
boundaryEl,
|
243
|
-
elHeight,
|
244
|
-
scrollLeft,
|
245
|
-
scrollTop,
|
246
|
-
spacerId,
|
247
|
-
spacerEl,
|
248
|
-
};
|
228
|
+
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
229
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, fixedStyles.elFixedTop, "f");
|
230
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, fixedStyles.elFixedLeft, "f");
|
231
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, fixedStyles.elFixedWidth, "f");
|
232
|
+
let width = 0;
|
233
|
+
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
234
|
+
width = fixedStyles.elFixedWidth;
|
249
235
|
}
|
250
|
-
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDO0FBRXhELElBQUksT0FBeUIsQ0FBQztBQUM5QixJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxhQUFhO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0dBQ3JDLG9CQUFvQjs7Ozs7OztxQkFPRixvQkFBb0I7Ozs7Q0FJeEMsQ0FBQyxDQUFDO1FBRUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNwQztBQUNILENBQUM7QUFFRCxTQUFTLE1BQU07SUFDYixXQUFXLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQ2hCLEVBQWUsRUFDZixjQUE0QjtJQUU1QixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUUxRSxPQUFPO1FBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEdB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dmlld2tlZXBlci1ib3VuZGFyeS1pbmZvJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB9IGZyb20gJy4vdmlld2tlZXBlci1maXhlZC1zdHlsZXMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9mZnNldCB9IGZyb20gJy4vdmlld2tlZXBlci1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkJztcbmNvbnN0IEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMgPSAnYWZ0ZXJWaWV3a2VlcGVyU3luYyc7XG5cbmxldCBzdHlsZUVsOiBIVE1MU3R5bGVFbGVtZW50O1xubGV0IG5leHRJZEluZGV4OiBudW1iZXI7XG5cbmZ1bmN0aW9uIGVuc3VyZVN0eWxlRWwoKTogdm9pZCB7XG4gIGlmICghc3R5bGVFbCkge1xuICAgIHN0eWxlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxuLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3BhY2l0eTogMC45NTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNreS10aGVtZS1tb2Rlcm4gLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA4cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIG9wYWNpdHk6IGluaXRpYWw7XG59XG5gKTtcblxuICAgIHN0eWxlRWwuYXBwZW5kQ2hpbGQoY3NzKTtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dElkKCk6IHN0cmluZyB7XG4gIG5leHRJZEluZGV4ID0gKG5leHRJZEluZGV4IHx8IDApICsgMTtcblxuICByZXR1cm4gJ3ZpZXdrZWVwZXItJyArIG5leHRJZEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgc2Nyb2xsYWJsZUhvc3Q/OiBIVE1MRWxlbWVudFxuKTogU2t5Vmlld2tlZXBlck9mZnNldCB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50ID0gc2Nyb2xsYWJsZUhvc3QgPyBzY3JvbGxhYmxlSG9zdCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgIGxlZnQ6IHJlY3QubGVmdCArIHBhcmVudC5zY3JvbGxMZWZ0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBweCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHB4VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHB4VmFsdWUgPSB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gcHhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0RWxQb3NpdGlvbihcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBsZWZ0OiBudW1iZXIgfCBzdHJpbmcsXG4gIHRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nLFxuICBtYXJnaW5Ub3A6IG51bWJlciB8IHN0cmluZ1xuKTogdm9pZCB7XG4gIGVsLnN0eWxlLnRvcCA9IHB4KHRvcCk7XG4gIGVsLnN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgZWwuc3R5bGUubWFyZ2luVG9wID0gcHgobWFyZ2luVG9wKTtcblxuICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgLyogc2FuaXR5IGNoZWNrICovXG4gIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgIGVsLnN0eWxlLndpZHRoID0gcHgod2lkdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEhlaWdodFdpdGhNYXJnaW4oZWw6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuXG4gIHJldHVybiAoXG4gICAgZWwub2Zmc2V0SGVpZ2h0ICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpblRvcCwgMTApICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSwgMTApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUV2ZW50KG5hbWU6IGFueSk6IEN1c3RvbUV2ZW50PGFueT4ge1xuICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcblxuICBldnQuaW5pdEN1c3RvbUV2ZW50KG5hbWUsIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkKTtcblxuICByZXR1cm4gZXZ0O1xufVxuXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlciB7XG4gIHByaXZhdGUgc2V0V2lkdGg6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgZWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgYm91bmRhcnlFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSB2ZXJ0aWNhbE9mZnNldDogbnVtYmVyO1xuXG4gIHByaXZhdGUgdmVydGljYWxPZmZzZXRFbDogSFRNTEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBzZXQgdmlld3BvcnRNYXJnaW5Ub3AobWFyZ2luOiBudW1iZXIpIHtcbiAgICB0aGlzLl92aWV3cG9ydE1hcmdpblRvcCA9IG1hcmdpbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHZpZXdwb3J0TWFyZ2luVG9wKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmlld3BvcnRNYXJnaW5Ub3A7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0Rlc3Ryb3llZDogYm9vbGVhbjtcblxuICBwcml2YXRlIGN1cnJlbnRFbEZpeGVkVG9wOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBjdXJyZW50RWxGaXhlZExlZnQ6IG51bWJlcjtcblxuICBwcml2YXRlIGN1cnJlbnRFbEZpeGVkV2lkdGg6IG51bWJlcjtcblxuICBwcml2YXRlIHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHN5bmNFbFBvc2l0aW9uSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF92aWV3cG9ydE1hcmdpblRvcDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307XG5cbiAgICB0aGlzLnNldFdpZHRoID0gb3B0aW9ucy5zZXRXaWR0aDtcbiAgICB0aGlzLmlkID0gbmV4dElkKCk7XG4gICAgdGhpcy5lbCA9IG9wdGlvbnMuZWw7XG4gICAgdGhpcy5ib3VuZGFyeUVsID0gb3B0aW9ucy5ib3VuZGFyeUVsO1xuICAgIHRoaXMuc2Nyb2xsYWJsZUhvc3QgPSBvcHRpb25zLnNjcm9sbGFibGVIb3N0O1xuICAgIHRoaXMudmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy52ZXJ0aWNhbE9mZnNldEVsID0gb3B0aW9ucy52ZXJ0aWNhbE9mZnNldEVsO1xuICAgIHRoaXMudmlld3BvcnRNYXJnaW5Ub3AgPSBvcHRpb25zLnZpZXdwb3J0TWFyZ2luVG9wIHx8IDA7XG5cbiAgICB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlciA9ICgpID0+IHRoaXMuc3luY0VsUG9zaXRpb24oKTtcblxuICAgIGlmICh0aGlzLnZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgIHRoaXMudmVydGljYWxPZmZzZXRFbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuXG4gICAgZW5zdXJlU3R5bGVFbCgpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbigpO1xuICB9XG5cbiAgcHVibGljIHN5bmNFbFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy5jYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlLCBpdHMgc2l6ZSBjYW4ndCBiZSBjYWxjdWxhdGVkLCBzbyBkb24ndCBhdHRlbXB0IHN5bmNpbmcgcG9zaXRpb24gaW4gdGhpcyBjYXNlLlxuICAgIGlmICh0aGlzLmVsLm9mZnNldFdpZHRoID09PSAwICYmIHRoaXMuZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRhcnlJbmZvID0gdGhpcy5nZXRCb3VuZGFyeUluZm8oKTtcbiAgICBjb25zdCBmaXhlZFN0eWxlcyA9IHRoaXMuZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy5zaG91bGRGaXhFbChib3VuZGFyeUluZm8sIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLm5lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLmZpeEVsKGJvdW5kYXJ5SW5mbywgZml4ZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51bmZpeEVsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZ0ID0gY3JlYXRlQ3VzdG9tRXZlbnQoRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyk7XG5cbiAgICB0aGlzLmVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnN5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudW5maXhFbCgpO1xuXG4gICAgICBpZiAodGhpcy52ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICAgIHRoaXMudmVydGljYWxPZmZzZXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbCA9IHRoaXMuYm91bmRhcnlFbCA9IHRoaXMudmVydGljYWxPZmZzZXRFbCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy5pc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlkICsgJy1zcGFjZXInO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmZpeEVsKCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5nZXRTcGFjZXJJZCgpKTtcblxuICAgIGlmIChzcGFjZXJFbCkge1xuICAgICAgc3BhY2VyRWwucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChzcGFjZXJFbCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRUb3AgPVxuICAgICAgdGhpcy5jdXJyZW50RWxGaXhlZFdpZHRoID1cbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHdpZHRoOiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy5zZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbih0aGlzLmVsLCAnJywgJycsIHdpZHRoLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVZlcnRpY2FsT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMudmVydGljYWxPZmZzZXQ7XG5cbiAgICBpZiAodGhpcy52ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUgPSB0aGlzLnZlcnRpY2FsT2Zmc2V0RWwuc3R5bGUudG9wO1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcCA9IHBhcnNlSW50KHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSwgMTApIHx8IDA7XG5cbiAgICAgIG9mZnNldCArPSB0aGlzLnZlcnRpY2FsT2Zmc2V0RWwub2Zmc2V0SGVpZ2h0ICsgdmVydGljYWxPZmZzZXRFbFRvcDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIG9mZnNldCArPSB0aGlzLnNjcm9sbGFibGVIb3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRGaXhFbChcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBib29sZWFuIHtcbiAgICBsZXQgYW5jaG9yVG9wOiBudW1iZXI7XG5cbiAgICBpZiAoYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoYm91bmRhcnlJbmZvLnNwYWNlckVsLCB0aGlzLnNjcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldCh0aGlzLmVsLCB0aGlzLnNjcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfVxuXG4gICAgY29uc3QgZG9GaXhFbCA9XG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wICsgdmVydGljYWxPZmZzZXQgKyB0aGlzLnZpZXdwb3J0TWFyZ2luVG9wID5cbiAgICAgIGFuY2hvclRvcDtcblxuICAgIHJldHVybiBkb0ZpeEVsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXhlZFN0eWxlcyhcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGZpeGVkLCB0aGlzIHdpbGwgY2FsY3VsYXRlIGl0cyBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvblxuICAgIC8vIHdpbGwgYmUgMCAoZnVsbHkgdmlzaWJsZSkgdW5sZXNzIHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0aGUgYm91bmRhcnkgb3V0IG9mIHZpZXcuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGQgYmVnaW4gdG8gc2Nyb2xsIG91dCBvZiB2aWV3IHdpdGggdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgYm91bmRhcnkgYnkgc2V0dGluZyBpdHMgdG9wIHBvc2l0aW9uIHRvIGEgbmVnYXRpdmUgdmFsdWUuXG4gICAgY29uc3QgZWxGaXhlZFRvcCA9IE1hdGgubWluKFxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5Qm90dG9tIC1cbiAgICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCxcbiAgICAgIHZlcnRpY2FsT2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGVsRml4ZWRXaWR0aCA9IGJvdW5kYXJ5SW5mby5ib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IGVsRml4ZWRMZWZ0ID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeU9mZnNldC5sZWZ0IC0gYm91bmRhcnlJbmZvLnNjcm9sbExlZnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxGaXhlZExlZnQsXG4gICAgICBlbEZpeGVkVG9wLFxuICAgICAgZWxGaXhlZFdpZHRoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5lZWRzVXBkYXRpbmcoXG4gICAgZG9GaXhFbDogYm9vbGVhbixcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIChkb0ZpeEVsICYmXG4gICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdCAmJlxuICAgICAgICB0aGlzLmN1cnJlbnRFbEZpeGVkVG9wID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wICYmXG4gICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRXaWR0aCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoKSB8fFxuICAgICAgKCFkb0ZpeEVsICYmXG4gICAgICAgICEoXG4gICAgICAgICAgdGhpcy5jdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ICE9PSBudWxsXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBlaXRoZXIgY3VycmVudGx5IGZpeGVkIGFuZCBpdHMgcG9zaXRpb24gYW5kIHdpZHRoIGRvIG5vdCBuZWVkXG4gICAgICAvLyB0byBjaGFuZ2UsIG9yIHRoZSBlbGVtZW50IGlzIG5vdCBjdXJyZW50bHkgZml4ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgZml4ZWQuXG4gICAgICAvLyBObyBjaGFuZ2VzIGFyZSBuZWVkZWQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGZpeEVsKFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy5lbDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgaWYgKCFib3VuZGFyeUluZm8uc3BhY2VyRWwpIHtcbiAgICAgIGNvbnN0IHNwYWNlckhlaWdodCA9IGJvdW5kYXJ5SW5mby5lbEhlaWdodDtcblxuICAgICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHNwYWNlckVsLmlkID0gYm91bmRhcnlJbmZvLnNwYWNlcklkO1xuICAgICAgc3BhY2VyRWwuc3R5bGUuaGVpZ2h0ID0gcHgoc3BhY2VySGVpZ2h0KTtcblxuICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuY3VycmVudEVsRml4ZWRUb3AgPSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wO1xuICAgIHRoaXMuY3VycmVudEVsRml4ZWRMZWZ0ID0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQ7XG4gICAgdGhpcy5jdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoOiBudW1iZXI7XG5cbiAgICBpZiAodGhpcy5zZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLnZpZXdwb3J0TWFyZ2luVG9wXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Qm91bmRhcnlJbmZvKCk6IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8ge1xuICAgIGNvbnN0IHNwYWNlcklkID0gdGhpcy5nZXRTcGFjZXJJZCgpO1xuXG4gICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFjZXJJZCk7XG5cbiAgICBjb25zdCBib3VuZGFyeUVsID0gdGhpcy5ib3VuZGFyeUVsO1xuXG4gICAgY29uc3QgYm91bmRhcnlPZmZzZXQgPSBnZXRPZmZzZXQoYm91bmRhcnlFbCwgdGhpcy5zY3JvbGxhYmxlSG9zdCk7XG4gICAgY29uc3QgYm91bmRhcnlUb3AgPSBib3VuZGFyeU9mZnNldC50b3A7XG4gICAgY29uc3QgYm91bmRhcnlCb3R0b20gPVxuICAgICAgYm91bmRhcnlUb3AgKyBib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLnNjcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsTGVmdFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLnNjcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsVG9wXG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBlbEhlaWdodCA9IGdldEhlaWdodFdpdGhNYXJnaW4odGhpcy5lbCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm91bmRhcnlCb3R0b20sXG4gICAgICBib3VuZGFyeU9mZnNldCxcbiAgICAgIGJvdW5kYXJ5RWwsXG4gICAgICBlbEhlaWdodCxcbiAgICAgIHNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzcGFjZXJJZCxcbiAgICAgIHNwYWNlckVsLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
236
|
+
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"));
|
237
|
+
}, _SkyViewkeeper_getBoundaryInfo = function _SkyViewkeeper_getBoundaryInfo(el, boundaryEl) {
|
238
|
+
const spacerId = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this);
|
239
|
+
const spacerEl = document.getElementById(spacerId);
|
240
|
+
const boundaryOffset = getOffset(boundaryEl, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f"));
|
241
|
+
const boundaryTop = boundaryOffset.top;
|
242
|
+
const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;
|
243
|
+
const scrollLeft = __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")
|
244
|
+
? __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").scrollLeft
|
245
|
+
: document.documentElement.scrollLeft;
|
246
|
+
const scrollTop = __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")
|
247
|
+
? __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").scrollTop
|
248
|
+
: document.documentElement.scrollTop;
|
249
|
+
const elHeight = getHeightWithMargin(el);
|
250
|
+
return {
|
251
|
+
boundaryBottom,
|
252
|
+
boundaryOffset,
|
253
|
+
boundaryEl,
|
254
|
+
elHeight,
|
255
|
+
scrollLeft,
|
256
|
+
scrollTop,
|
257
|
+
spacerId,
|
258
|
+
spacerEl,
|
259
|
+
};
|
260
|
+
};
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBQ3BELE1BQU0seUJBQXlCLEdBQUcscUJBQXFCLENBQUM7QUFFeEQsSUFBSSxPQUF5QixDQUFDO0FBQzlCLElBQUksV0FBbUIsQ0FBQztBQUV4QixTQUFTLGFBQWE7SUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7R0FDckMsb0JBQW9COzs7Ozs7O3FCQU9GLG9CQUFvQjs7OztDQUl4QyxDQUFDLENBQUM7UUFFQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTTtJQUNiLFdBQVcsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsT0FBTyxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FDaEIsRUFBZSxFQUNmLGNBQTRCO0lBRTVCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRTFFLE9BQU87UUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcs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Q0FBZ0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDdkMsTUFBTSxjQUFjLEdBQ2xCLFdBQVcsR0FBRyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFFMUQsTUFBTSxVQUFVLEdBQUcsdUJBQUEsSUFBSSxxQ0FBZ0I7UUFDckMsQ0FBQyxDQUFDLHVCQUFBLElBQUkscUNBQWdCLENBQUMsVUFBVTtRQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQUcsdUJBQUEsSUFBSSxxQ0FBZ0I7UUFDcEMsQ0FBQyxDQUFDLHVCQUFBLElBQUkscUNBQWdCLENBQUMsU0FBUztRQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFFdkMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFekMsT0FBTztRQUNMLGNBQWM7UUFDZCxjQUFjO1FBQ2QsVUFBVTtRQUNWLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULFFBQVE7UUFDUixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIH0gZnJvbSAnLi92aWV3a2VlcGVyLWJvdW5kYXJ5LWluZm8nO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzIH0gZnJvbSAnLi92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1vcHRpb25zJztcblxuY29uc3QgQ0xTX1ZJRVdLRUVQRVJfRklYRUQgPSAnc2t5LXZpZXdrZWVwZXItZml4ZWQnO1xuY29uc3QgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyA9ICdhZnRlclZpZXdrZWVwZXJTeW5jJztcblxubGV0IHN0eWxlRWw6IEhUTUxTdHlsZUVsZW1lbnQ7XG5sZXQgbmV4dElkSW5kZXg6IG51bWJlcjtcblxuZnVuY3Rpb24gZW5zdXJlU3R5bGVFbCgpOiB2b2lkIHtcbiAgaWYgKCFzdHlsZUVsKSB7XG4gICAgc3R5bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgXG4uJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk5O1xuICBvcGFjaXR5OiAwLjk1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc2t5LXRoZW1lLW1vZGVybiAuJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBib3gtc2hhZG93OiAwcHggMXB4IDhweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgb3BhY2l0eTogaW5pdGlhbDtcbn1cbmApO1xuXG4gICAgc3R5bGVFbC5hcHBlbmRDaGlsZChjc3MpO1xuXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0SWQoKTogc3RyaW5nIHtcbiAgbmV4dElkSW5kZXggPSAobmV4dElkSW5kZXggfHwgMCkgKyAxO1xuXG4gIHJldHVybiAndmlld2tlZXBlci0nICsgbmV4dElkSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGdldE9mZnNldChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50XG4pOiBTa3lWaWV3a2VlcGVyT2Zmc2V0IHtcbiAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwYXJlbnQgPSBzY3JvbGxhYmxlSG9zdCA/IHNjcm9sbGFibGVIb3N0IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCArIHBhcmVudC5zY3JvbGxUb3AsXG4gICAgbGVmdDogcmVjdC5sZWZ0ICsgcGFyZW50LnNjcm9sbExlZnQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHB4KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHhWYWx1ZSA9IHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcHhWYWx1ZSA9IHZhbHVlICsgJ3B4JztcbiAgfVxuXG4gIHJldHVybiBweFZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXRFbFBvc2l0aW9uKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIGxlZnQ6IG51bWJlciB8IHN0cmluZyxcbiAgdG9wOiBudW1iZXIgfCBzdHJpbmcsXG4gIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcsXG4gIG1hcmdpblRvcDogbnVtYmVyIHwgc3RyaW5nXG4pOiB2b2lkIHtcbiAgZWwuc3R5bGUudG9wID0gcHgodG9wKTtcbiAgZWwuc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICBlbC5zdHlsZS5tYXJnaW5Ub3AgPSBweChtYXJnaW5Ub3ApO1xuXG4gIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgaWYgKHdpZHRoICE9PSBudWxsKSB7XG4gICAgZWwuc3R5bGUud2lkdGggPSBweCh3aWR0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SGVpZ2h0V2l0aE1hcmdpbihlbDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG5cbiAgcmV0dXJuIChcbiAgICBlbC5vZmZzZXRIZWlnaHQgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luVG9wLCAxMCkgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLCAxMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRXZlbnQobmFtZTogYW55KTogQ3VzdG9tRXZlbnQ8YW55PiB7XG4gIGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuXG4gIGV2dC5pbml0Q3VzdG9tRXZlbnQobmFtZSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpO1xuXG4gIHJldHVybiBldnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVyIHtcbiAgI2JvdW5kYXJ5RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNlbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2lkOiBzdHJpbmc7XG5cbiAgI3NldFdpZHRoOiBib29sZWFuO1xuXG4gICN2ZXJ0aWNhbE9mZnNldDogbnVtYmVyO1xuXG4gICN2ZXJ0aWNhbE9mZnNldEVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjdmlld3BvcnRNYXJnaW5Ub3AgPSAwO1xuXG4gICNjdXJyZW50RWxGaXhlZExlZnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICNzY3JvbGxhYmxlSG9zdDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3N5bmNFbFBvc2l0aW9uSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa3lWaWV3a2VlcGVyT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHt9O1xuXG4gICAgdGhpcy4jZWwgPSBvcHRpb25zLmVsO1xuICAgIHRoaXMuI2JvdW5kYXJ5RWwgPSBvcHRpb25zLmJvdW5kYXJ5RWw7XG5cbiAgICBpZiAoIXRoaXMuI2VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBlbGAgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNib3VuZGFyeUVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBib3VuZGFyeUVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuI2VsO1xuICAgIGNvbnN0IGJvdW5kYXJ5RWwgPSB0aGlzLiNib3VuZGFyeUVsO1xuXG4gICAgdGhpcy4jc2V0V2lkdGggPSAhIW9wdGlvbnMuc2V0V2lkdGg7XG4gICAgdGhpcy4jaWQgPSBuZXh0SWQoKTtcbiAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdCA9IG9wdGlvbnMuc2Nyb2xsYWJsZUhvc3Q7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXRFbDtcblxuICAgIC8vIE9ubHkgc2V0IHZpZXdwb3J0IG1hcmdpbiBpZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIHVuZGVmaW5lZC5cbiAgICBpZiAoIXRoaXMuI3Njcm9sbGFibGVIb3N0KSB7XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Ub3AgPz8gMDtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKSA9PiB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuXG4gICAgZW5zdXJlU3R5bGVFbCgpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG4gIH1cblxuICBwdWJsaWMgc3luY0VsUG9zaXRpb24oZWw6IEhUTUxFbGVtZW50LCBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy4jY2FsY3VsYXRlVmVydGljYWxPZmZzZXQoKTtcblxuICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgdmlzaWJsZSwgaXRzIHNpemUgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc28gZG9uJ3QgYXR0ZW1wdCBzeW5jaW5nIHBvc2l0aW9uIGluIHRoaXMgY2FzZS5cbiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgJiYgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRhcnlJbmZvID0gdGhpcy4jZ2V0Qm91bmRhcnlJbmZvKGVsLCBib3VuZGFyeUVsKTtcbiAgICBjb25zdCBmaXhlZFN0eWxlcyA9IHRoaXMuI2dldEZpeGVkU3R5bGVzKGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZG9GaXhFbCA9IHRoaXMuI3Nob3VsZEZpeEVsKGVsLCBib3VuZGFyeUluZm8sIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLiNuZWVkc1VwZGF0aW5nKGRvRml4RWwsIGZpeGVkU3R5bGVzKSkge1xuICAgICAgaWYgKGRvRml4RWwpIHtcbiAgICAgICAgdGhpcy4jZml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgZml4ZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jdW5maXhFbChlbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZ0ID0gY3JlYXRlQ3VzdG9tRXZlbnQoRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyk7XG5cbiAgICBlbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2lzRGVzdHJveWVkKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuI2VsKSB7XG4gICAgICAgIHRoaXMuI3VuZml4RWwodGhpcy4jZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyxcbiAgICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jZWwgPSB0aGlzLiNib3VuZGFyeUVsID0gdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy4jaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZCArICctc3BhY2VyJztcbiAgfVxuXG4gICN1bmZpeEVsKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy4jZ2V0U3BhY2VySWQoKSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAoc3BhY2VyRWw/LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHNwYWNlckVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3BhY2VyRWwpO1xuICAgIH1cblxuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRUQpO1xuXG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPVxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgd2lkdGggPSAnJztcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihlbCwgJycsICcnLCB3aWR0aCwgJycpO1xuICB9XG5cbiAgI2NhbGN1bGF0ZVZlcnRpY2FsT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwuc3R5bGUudG9wO1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcCA9IHBhcnNlSW50KHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSwgMTApIHx8IDA7XG5cbiAgICAgIG9mZnNldCArPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLm9mZnNldEhlaWdodCArIHZlcnRpY2FsT2Zmc2V0RWxUb3A7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNzY3JvbGxhYmxlSG9zdCkge1xuICAgICAgb2Zmc2V0ICs9IHRoaXMuI3Njcm9sbGFibGVIb3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI3Nob3VsZEZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBib29sZWFuIHtcbiAgICBsZXQgYW5jaG9yVG9wOiBudW1iZXI7XG5cbiAgICBpZiAoYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoYm91bmRhcnlJbmZvLnNwYWNlckVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCkudG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoZWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfVxuXG4gICAgY29uc3QgZG9GaXhFbCA9XG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wICsgdmVydGljYWxPZmZzZXQgKyB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA+XG4gICAgICBhbmNob3JUb3A7XG5cbiAgICByZXR1cm4gZG9GaXhFbDtcbiAgfVxuXG4gICNnZXRGaXhlZFN0eWxlcyhcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGZpeGVkLCB0aGlzIHdpbGwgY2FsY3VsYXRlIGl0cyBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvblxuICAgIC8vIHdpbGwgYmUgMCAoZnVsbHkgdmlzaWJsZSkgdW5sZXNzIHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0aGUgYm91bmRhcnkgb3V0IG9mIHZpZXcuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGQgYmVnaW4gdG8gc2Nyb2xsIG91dCBvZiB2aWV3IHdpdGggdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgYm91bmRhcnkgYnkgc2V0dGluZyBpdHMgdG9wIHBvc2l0aW9uIHRvIGEgbmVnYXRpdmUgdmFsdWUuXG4gICAgY29uc3QgZWxGaXhlZFRvcCA9IE1hdGgubWluKFxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5Qm90dG9tIC1cbiAgICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCxcbiAgICAgIHZlcnRpY2FsT2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGVsRml4ZWRXaWR0aCA9IGJvdW5kYXJ5SW5mby5ib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IGVsRml4ZWRMZWZ0ID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeU9mZnNldC5sZWZ0IC0gYm91bmRhcnlJbmZvLnNjcm9sbExlZnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxGaXhlZExlZnQsXG4gICAgICBlbEZpeGVkVG9wLFxuICAgICAgZWxGaXhlZFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAjbmVlZHNVcGRhdGluZyhcbiAgICBkb0ZpeEVsOiBib29sZWFuLFxuICAgIGZpeGVkU3R5bGVzOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXNcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgKGRvRml4RWwgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFRvcCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGgpIHx8XG4gICAgICAoIWRvRml4RWwgJiZcbiAgICAgICAgIShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gbnVsbFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgZWl0aGVyIGN1cnJlbnRseSBmaXhlZCBhbmQgaXRzIHBvc2l0aW9uIGFuZCB3aWR0aCBkbyBub3QgbmVlZFxuICAgICAgLy8gdG8gY2hhbmdlLCBvciB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IGZpeGVkIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZpeGVkLlxuICAgICAgLy8gTm8gY2hhbmdlcyBhcmUgbmVlZGVkLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2ZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgZml4ZWRTdHlsZXM6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlc1xuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcFxuICAgICk7XG4gIH1cblxuICAjZ2V0Qm91bmRhcnlJbmZvKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUVsOiBIVE1MRWxlbWVudFxuICApOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIHtcbiAgICBjb25zdCBzcGFjZXJJZCA9IHRoaXMuI2dldFNwYWNlcklkKCk7XG5cbiAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYWNlcklkKTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5T2Zmc2V0ID0gZ2V0T2Zmc2V0KGJvdW5kYXJ5RWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KTtcbiAgICBjb25zdCBib3VuZGFyeVRvcCA9IGJvdW5kYXJ5T2Zmc2V0LnRvcDtcbiAgICBjb25zdCBib3VuZGFyeUJvdHRvbSA9XG4gICAgICBib3VuZGFyeVRvcCArIGJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbExlZnRcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy4jc2Nyb2xsYWJsZUhvc3RcbiAgICAgID8gdGhpcy4jc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsVG9wXG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBlbEhlaWdodCA9IGdldEhlaWdodFdpdGhNYXJnaW4oZWwpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJvdW5kYXJ5Qm90dG9tLFxuICAgICAgYm91bmRhcnlPZmZzZXQsXG4gICAgICBib3VuZGFyeUVsLFxuICAgICAgZWxIZWlnaHQsXG4gICAgICBzY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wLFxuICAgICAgc3BhY2VySWQsXG4gICAgICBzcGFjZXJFbCxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
@@ -3,10 +3,10 @@ import { SkyViewkeeperDirective } from './viewkeeper.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
export class SkyViewkeeperModule {
|
5
5
|
}
|
6
|
-
SkyViewkeeperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
7
|
-
SkyViewkeeperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
8
|
-
SkyViewkeeperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
6
|
+
SkyViewkeeperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
7
|
+
SkyViewkeeperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] });
|
8
|
+
SkyViewkeeperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperModule });
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperModule, decorators: [{
|
10
10
|
type: NgModule,
|
11
11
|
args: [{
|
12
12
|
declarations: [SkyViewkeeperDirective],
|
@@ -1,3 +1,5 @@
|
|
1
|
+
var _SkyViewkeeperService_hostOptions;
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
1
3
|
import { Injectable, Optional } from '@angular/core';
|
2
4
|
import { SkyViewkeeper } from './viewkeeper';
|
3
5
|
import { SkyViewkeeperHostOptions } from './viewkeeper-host-options';
|
@@ -8,14 +10,15 @@ import * as i1 from "./viewkeeper-host-options";
|
|
8
10
|
*/
|
9
11
|
export class SkyViewkeeperService {
|
10
12
|
constructor(hostOptions) {
|
11
|
-
this
|
13
|
+
_SkyViewkeeperService_hostOptions.set(this, void 0);
|
14
|
+
__classPrivateFieldSet(this, _SkyViewkeeperService_hostOptions, hostOptions, "f");
|
12
15
|
}
|
13
16
|
/**
|
14
17
|
*
|
15
18
|
* @param options Creates a viewkeeper instance, applying host options where applicable.
|
16
19
|
*/
|
17
20
|
create(options) {
|
18
|
-
options = Object.assign({}, this
|
21
|
+
options = Object.assign({}, __classPrivateFieldGet(this, _SkyViewkeeperService_hostOptions, "f") || {}, options);
|
19
22
|
return new SkyViewkeeper(options);
|
20
23
|
}
|
21
24
|
/**
|
@@ -26,9 +29,10 @@ export class SkyViewkeeperService {
|
|
26
29
|
vk.destroy();
|
27
30
|
}
|
28
31
|
}
|
29
|
-
|
30
|
-
SkyViewkeeperService.ɵ
|
31
|
-
i0.ɵɵ
|
32
|
+
_SkyViewkeeperService_hostOptions = new WeakMap();
|
33
|
+
SkyViewkeeperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: i1.SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
34
|
+
SkyViewkeeperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' });
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyViewkeeperService, decorators: [{
|
32
36
|
type: Injectable,
|
33
37
|
args: [{
|
34
38
|
providedIn: 'root',
|
@@ -36,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
36
40
|
}], ctorParameters: function () { return [{ type: i1.SkyViewkeeperHostOptions, decorators: [{
|
37
41
|
type: Optional
|
38
42
|
}] }]; } });
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBR3JFOztHQUVHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUF3QixXQUFzQztRQUY5RCxvREFBbUQ7UUFHakQsdUJBQUEsSUFBSSxxQ0FBZ0IsV0FBVyxNQUFBLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxPQUE2QjtRQUN6QyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsdUJBQUEsSUFBSSx5Q0FBYSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5RCxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsRUFBaUI7UUFDOUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQzs7O2lIQXZCVSxvQkFBb0I7cUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUljLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyIH0gZnJvbSAnLi92aWV3a2VlcGVyJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJIb3N0T3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1ob3N0LW9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbi8qKlxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgdmlld2tlZXBlciBpbnN0YW5jZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVyU2VydmljZSB7XG4gICNob3N0T3B0aW9uczogU2t5Vmlld2tlZXBlckhvc3RPcHRpb25zIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIGhvc3RPcHRpb25zPzogU2t5Vmlld2tlZXBlckhvc3RPcHRpb25zKSB7XG4gICAgdGhpcy4jaG9zdE9wdGlvbnMgPSBob3N0T3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBDcmVhdGVzIGEgdmlld2tlZXBlciBpbnN0YW5jZSwgYXBwbHlpbmcgaG9zdCBvcHRpb25zIHdoZXJlIGFwcGxpY2FibGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKTogU2t5Vmlld2tlZXBlciB7XG4gICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuI2hvc3RPcHRpb25zIHx8IHt9LCBvcHRpb25zKTtcblxuICAgIHJldHVybiBuZXcgU2t5Vmlld2tlZXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhIHZpZXdrZWVwZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB2ayBWaWV3a2VlcGVyIGluc3RhbmNlIHRvIGRlc3Ryb3kuXG4gICAqL1xuICBwdWJsaWMgZGVzdHJveSh2azogU2t5Vmlld2tlZXBlcik6IHZvaWQge1xuICAgIHZrLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
@@ -19,9 +19,9 @@ export class SkyAppWindowRef {
|
|
19
19
|
return getWindow();
|
20
20
|
}
|
21
21
|
}
|
22
|
-
SkyAppWindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
23
|
-
SkyAppWindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
22
|
+
SkyAppWindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
23
|
+
SkyAppWindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' });
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyAppWindowRef, decorators: [{
|
25
25
|
type: Injectable,
|
26
26
|
args: [{
|
27
27
|
providedIn: 'root',
|
@@ -3,18 +3,21 @@ import { SkyMediaQueryService, SkyUIConfigService } from '@skyux/core';
|
|
3
3
|
import { MockSkyMediaQueryService } from './mock-media-query.service';
|
4
4
|
import { MockSkyUIConfigService } from './mock-ui-config.service';
|
5
5
|
import * as i0 from "@angular/core";
|
6
|
+
/**
|
7
|
+
* @internal
|
8
|
+
*/
|
6
9
|
export class SkyCoreTestingModule {
|
7
10
|
}
|
8
|
-
SkyCoreTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
9
|
-
SkyCoreTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "
|
10
|
-
SkyCoreTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
11
|
+
SkyCoreTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyCoreTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
12
|
+
SkyCoreTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: SkyCoreTestingModule });
|
13
|
+
SkyCoreTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyCoreTestingModule, providers: [
|
11
14
|
{ provide: SkyMediaQueryService, useClass: MockSkyMediaQueryService },
|
12
15
|
{
|
13
16
|
provide: SkyUIConfigService,
|
14
17
|
useClass: MockSkyUIConfigService,
|
15
18
|
},
|
16
19
|
] });
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyCoreTestingModule, decorators: [{
|
18
21
|
type: NgModule,
|
19
22
|
args: [{
|
20
23
|
providers: [
|
@@ -26,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
|
|
26
29
|
],
|
27
30
|
}]
|
28
31
|
}] });
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3Rlc3Rpbmcvc3JjL2NvcmUtdGVzdGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRWxFOztHQUVHO0FBVUgsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsYUFScEI7UUFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7UUFDckU7WUFDRSxPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLFFBQVEsRUFBRSxzQkFBc0I7U0FDakM7S0FDRjsyRkFFVSxvQkFBb0I7a0JBVGhDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLHNCQUFzQjt5QkFDakM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFRdWVyeVNlcnZpY2UsIFNreVVJQ29uZmlnU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgTW9ja1NreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9tb2NrLW1lZGlhLXF1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ja1NreVVJQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9jay11aS1jb25maWcuc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UsIHVzZUNsYXNzOiBNb2NrU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTa3lVSUNvbmZpZ1NlcnZpY2UsXG4gICAgICB1c2VDbGFzczogTW9ja1NreVVJQ29uZmlnU2VydmljZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3JlVGVzdGluZ01vZHVsZSB7fVxuIl19
|