@skyux/core 7.0.0 → 7.1.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 +1 -1
- package/esm2020/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +1 -1
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +23 -8
- package/fesm2015/skyux-core.mjs +23 -7
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +22 -7
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/lib/modules/viewkeeper/viewkeeper-fixed-styles.d.ts +5 -0
- package/package.json +2 -2
package/documentation.json
CHANGED
@@ -9806,7 +9806,7 @@
|
|
9806
9806
|
{
|
9807
9807
|
"fileName": "media-query-demo.component.ts",
|
9808
9808
|
"filePath": "/projects/core/documentation/code-examples/media-query/basic/media-query-demo.component.ts",
|
9809
|
-
"rawContents": "import { Component, OnDestroy } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-media-query-demo',\n templateUrl: './media-query-demo.component.html',\n})\nexport class MediaQueryDemoComponent implements OnDestroy {\n public currentBreakpoint: string;\n\n private querySubscription: Subscription;\n\n constructor(private mediaQueries: SkyMediaQueryService) {\n this.querySubscription = this.mediaQueries.subscribe(\n (newBreakpoint: SkyMediaBreakpoints) => {\n switch (newBreakpoint) {\n case SkyMediaBreakpoints.xs:\n this.currentBreakpoint = 'xs';\n break;\n case SkyMediaBreakpoints.sm:\n this.currentBreakpoint = 'sm';\n break;\n case SkyMediaBreakpoints.md:\n this.currentBreakpoint = 'md';\n break;\n case SkyMediaBreakpoints.lg:\n this.currentBreakpoint = 'lg';\n break;\n default:\n this.currentBreakpoint = 'unknown';\n }\n }\n );\n }\n\n public ngOnDestroy(): void {\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n }\n }\n}\n"
|
9809
|
+
"rawContents": "import { Component, OnDestroy } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryService } from '@skyux/core';\n\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-media-query-demo',\n templateUrl: './media-query-demo.component.html',\n})\nexport class MediaQueryDemoComponent implements OnDestroy {\n public currentBreakpoint: string | undefined;\n\n private querySubscription: Subscription;\n\n constructor(private mediaQueries: SkyMediaQueryService) {\n this.querySubscription = this.mediaQueries.subscribe(\n (newBreakpoint: SkyMediaBreakpoints) => {\n switch (newBreakpoint) {\n case SkyMediaBreakpoints.xs:\n this.currentBreakpoint = 'xs';\n break;\n case SkyMediaBreakpoints.sm:\n this.currentBreakpoint = 'sm';\n break;\n case SkyMediaBreakpoints.md:\n this.currentBreakpoint = 'md';\n break;\n case SkyMediaBreakpoints.lg:\n this.currentBreakpoint = 'lg';\n break;\n default:\n this.currentBreakpoint = 'unknown';\n }\n }\n );\n }\n\n public ngOnDestroy(): void {\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n }\n }\n}\n"
|
9810
9810
|
},
|
9811
9811
|
{
|
9812
9812
|
"fileName": "media-query-demo.module.ts",
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1maXhlZC1zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICBlbEZpeGVkTGVmdDogbnVtYmVyO1xuXG4gIGVsRml4ZWRUb3A6IG51bWJlcjtcblxuICBlbEZpeGVkV2lkdGg6IG51bWJlcjtcblxuICBlbENsaXBMZWZ0OiBudW1iZXI7XG5cbiAgZWxDbGlwVG9wOiBudW1iZXI7XG59XG4iXX0=
|
@@ -1,4 +1,4 @@
|
|
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;
|
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_currentElClipLeft, _SkyViewkeeper_currentElClipTop, _SkyViewkeeper_isDestroyed, _SkyViewkeeper_scrollableHost, _SkyViewkeeper_syncElPositionHandler, _SkyViewkeeper_intersectionObserver, _SkyViewkeeper_getSpacerId, _SkyViewkeeper_unfixEl, _SkyViewkeeper_calculateVerticalOffset, _SkyViewkeeper_shouldFixEl, _SkyViewkeeper_getFixedStyles, _SkyViewkeeper_needsUpdating, _SkyViewkeeper_fixEl, _SkyViewkeeper_getBoundaryInfo;
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
3
|
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
4
4
|
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
@@ -43,10 +43,12 @@ function px(value) {
|
|
43
43
|
}
|
44
44
|
return pxValue;
|
45
45
|
}
|
46
|
-
function setElPosition(el, left, top, width, marginTop) {
|
46
|
+
function setElPosition(el, left, top, width, marginTop, clipTop, clipLeft) {
|
47
47
|
el.style.top = px(top);
|
48
48
|
el.style.left = px(left);
|
49
49
|
el.style.marginTop = px(marginTop);
|
50
|
+
el.style.clipPath =
|
51
|
+
clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';
|
50
52
|
/*istanbul ignore else*/
|
51
53
|
/* sanity check */
|
52
54
|
if (width !== null) {
|
@@ -77,9 +79,12 @@ export class SkyViewkeeper {
|
|
77
79
|
_SkyViewkeeper_currentElFixedLeft.set(this, void 0);
|
78
80
|
_SkyViewkeeper_currentElFixedTop.set(this, void 0);
|
79
81
|
_SkyViewkeeper_currentElFixedWidth.set(this, void 0);
|
82
|
+
_SkyViewkeeper_currentElClipLeft.set(this, void 0);
|
83
|
+
_SkyViewkeeper_currentElClipTop.set(this, void 0);
|
80
84
|
_SkyViewkeeper_isDestroyed.set(this, false);
|
81
85
|
_SkyViewkeeper_scrollableHost.set(this, void 0);
|
82
86
|
_SkyViewkeeper_syncElPositionHandler.set(this, void 0);
|
87
|
+
_SkyViewkeeper_intersectionObserver.set(this, void 0);
|
83
88
|
options = options || /* istanbul ignore next */ {};
|
84
89
|
__classPrivateFieldSet(this, _SkyViewkeeper_el, options.el, "f");
|
85
90
|
__classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, options.boundaryEl, "f");
|
@@ -132,6 +137,7 @@ export class SkyViewkeeper {
|
|
132
137
|
}
|
133
138
|
destroy() {
|
134
139
|
if (!__classPrivateFieldGet(this, _SkyViewkeeper_isDestroyed, "f")) {
|
140
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_intersectionObserver, "f")?.disconnect();
|
135
141
|
window.removeEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
|
136
142
|
window.removeEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
137
143
|
window.removeEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
@@ -146,7 +152,7 @@ export class SkyViewkeeper {
|
|
146
152
|
}
|
147
153
|
}
|
148
154
|
}
|
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() {
|
155
|
+
_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_currentElClipLeft = new WeakMap(), _SkyViewkeeper_currentElClipTop = new WeakMap(), _SkyViewkeeper_isDestroyed = new WeakMap(), _SkyViewkeeper_scrollableHost = new WeakMap(), _SkyViewkeeper_syncElPositionHandler = new WeakMap(), _SkyViewkeeper_intersectionObserver = new WeakMap(), _SkyViewkeeper_instances = new WeakSet(), _SkyViewkeeper_getSpacerId = function _SkyViewkeeper_getSpacerId() {
|
150
156
|
return __classPrivateFieldGet(this, _SkyViewkeeper_id, "f") + '-spacer';
|
151
157
|
}, _SkyViewkeeper_unfixEl = function _SkyViewkeeper_unfixEl(el) {
|
152
158
|
const spacerEl = document.getElementById(__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this));
|
@@ -160,7 +166,7 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
160
166
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
161
167
|
width = 'auto';
|
162
168
|
}
|
163
|
-
setElPosition(el, '', '', width, '');
|
169
|
+
setElPosition(el, '', '', width, '', 0, 0);
|
164
170
|
}, _SkyViewkeeper_calculateVerticalOffset = function _SkyViewkeeper_calculateVerticalOffset() {
|
165
171
|
let offset = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffset, "f");
|
166
172
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
|
@@ -188,20 +194,27 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
188
194
|
// will be 0 (fully visible) unless the user is scrolling the boundary out of view.
|
189
195
|
// In that case, the element should begin to scroll out of view with the
|
190
196
|
// rest of the boundary by setting its top position to a negative value.
|
191
|
-
const
|
197
|
+
const elTop = boundaryInfo.boundaryBottom -
|
192
198
|
boundaryInfo.elHeight -
|
193
|
-
boundaryInfo.scrollTop
|
199
|
+
boundaryInfo.scrollTop;
|
200
|
+
const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;
|
201
|
+
const elFixedTop = Math.min(elTop, verticalOffset);
|
194
202
|
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
195
203
|
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
204
|
+
const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;
|
196
205
|
return {
|
197
206
|
elFixedLeft,
|
198
207
|
elFixedTop,
|
199
208
|
elFixedWidth,
|
209
|
+
elClipLeft,
|
210
|
+
elClipTop,
|
200
211
|
};
|
201
212
|
}, _SkyViewkeeper_needsUpdating = function _SkyViewkeeper_needsUpdating(doFixEl, fixedStyles) {
|
202
213
|
if ((doFixEl &&
|
203
214
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") === fixedStyles.elFixedLeft &&
|
204
215
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedTop, "f") === fixedStyles.elFixedTop &&
|
216
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElClipLeft, "f") === fixedStyles.elClipLeft &&
|
217
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElClipTop, "f") === fixedStyles.elClipTop &&
|
205
218
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedWidth, "f") === fixedStyles.elFixedWidth) ||
|
206
219
|
(!doFixEl &&
|
207
220
|
!(__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== undefined &&
|
@@ -228,12 +241,14 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
228
241
|
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
229
242
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, fixedStyles.elFixedTop, "f");
|
230
243
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, fixedStyles.elFixedLeft, "f");
|
244
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElClipTop, fixedStyles.elClipTop, "f");
|
245
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElClipLeft, fixedStyles.elClipLeft, "f");
|
231
246
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, fixedStyles.elFixedWidth, "f");
|
232
247
|
let width = 0;
|
233
248
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
234
249
|
width = fixedStyles.elFixedWidth;
|
235
250
|
}
|
236
|
-
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"));
|
251
|
+
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"), fixedStyles.elClipTop, fixedStyles.elClipLeft);
|
237
252
|
}, _SkyViewkeeper_getBoundaryInfo = function _SkyViewkeeper_getBoundaryInfo(el, boundaryEl) {
|
238
253
|
const spacerId = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this);
|
239
254
|
const spacerEl = document.getElementById(spacerId);
|
@@ -258,4 +273,4 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
258
273
|
spacerEl,
|
259
274
|
};
|
260
275
|
};
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBQ3BELE1BQU0seUJBQXlCLEdBQUcscUJBQXFCLENBQUM7QUFFeEQsSUFBSSxPQUF5QixDQUFDO0FBQzlCLElBQUksV0FBbUIsQ0FBQztBQUV4QixTQUFTLGFBQWE7SUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7R0FDckMsb0JBQW9COzs7Ozs7O3FCQU9GLG9CQUFvQjs7OztDQUl4QyxDQUFDLENBQUM7UUFFQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTTtJQUNiLFdBQVcsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsT0FBTyxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FDaEIsRUFBZSxFQUNmLGNBQTRCO0lBRTVCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRTFFLE9BQU87UUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcs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Q0FBZ0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDdkMsTUFBTSxjQUFjLEdBQ2xCLFdBQVcsR0FBRyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFFMUQsTUFBTSxVQUFVLEdBQUcsdUJBQUEsSUFBSSxxQ0FBZ0I7UUFDckMsQ0FBQyxDQUFDLHVCQUFBLElBQUkscUNBQWdCLENBQUMsVUFBVTtRQUNqQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFDeEMsTUFBTSxTQUFTLEdBQUcsdUJBQUEsSUFBSSxxQ0FBZ0I7UUFDcEMsQ0FBQyxDQUFDLHVCQUFBLElBQUkscUNBQWdCLENBQUMsU0FBUztRQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7SUFFdkMsTUFBTSxRQUFRLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFekMsT0FBTztRQUNMLGNBQWM7UUFDZCxjQUFjO1FBQ2QsVUFBVTtRQUNWLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULFFBQVE7UUFDUixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIH0gZnJvbSAnLi92aWV3a2VlcGVyLWJvdW5kYXJ5LWluZm8nO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzIH0gZnJvbSAnLi92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1vcHRpb25zJztcblxuY29uc3QgQ0xTX1ZJRVdLRUVQRVJfRklYRUQgPSAnc2t5LXZpZXdrZWVwZXItZml4ZWQnO1xuY29uc3QgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyA9ICdhZnRlclZpZXdrZWVwZXJTeW5jJztcblxubGV0IHN0eWxlRWw6IEhUTUxTdHlsZUVsZW1lbnQ7XG5sZXQgbmV4dElkSW5kZXg6IG51bWJlcjtcblxuZnVuY3Rpb24gZW5zdXJlU3R5bGVFbCgpOiB2b2lkIHtcbiAgaWYgKCFzdHlsZUVsKSB7XG4gICAgc3R5bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgXG4uJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk5O1xuICBvcGFjaXR5OiAwLjk1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc2t5LXRoZW1lLW1vZGVybiAuJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBib3gtc2hhZG93OiAwcHggMXB4IDhweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgb3BhY2l0eTogaW5pdGlhbDtcbn1cbmApO1xuXG4gICAgc3R5bGVFbC5hcHBlbmRDaGlsZChjc3MpO1xuXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0SWQoKTogc3RyaW5nIHtcbiAgbmV4dElkSW5kZXggPSAobmV4dElkSW5kZXggfHwgMCkgKyAxO1xuXG4gIHJldHVybiAndmlld2tlZXBlci0nICsgbmV4dElkSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGdldE9mZnNldChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50XG4pOiBTa3lWaWV3a2VlcGVyT2Zmc2V0IHtcbiAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBwYXJlbnQgPSBzY3JvbGxhYmxlSG9zdCA/IHNjcm9sbGFibGVIb3N0IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIHJldHVybiB7XG4gICAgdG9wOiByZWN0LnRvcCArIHBhcmVudC5zY3JvbGxUb3AsXG4gICAgbGVmdDogcmVjdC5sZWZ0ICsgcGFyZW50LnNjcm9sbExlZnQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHB4KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHhWYWx1ZSA9IHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcHhWYWx1ZSA9IHZhbHVlICsgJ3B4JztcbiAgfVxuXG4gIHJldHVybiBweFZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXRFbFBvc2l0aW9uKFxuICBlbDogSFRNTEVsZW1lbnQsXG4gIGxlZnQ6IG51bWJlciB8IHN0cmluZyxcbiAgdG9wOiBudW1iZXIgfCBzdHJpbmcsXG4gIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcsXG4gIG1hcmdpblRvcDogbnVtYmVyIHwgc3RyaW5nXG4pOiB2b2lkIHtcbiAgZWwuc3R5bGUudG9wID0gcHgodG9wKTtcbiAgZWwuc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICBlbC5zdHlsZS5tYXJnaW5Ub3AgPSBweChtYXJnaW5Ub3ApO1xuXG4gIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgaWYgKHdpZHRoICE9PSBudWxsKSB7XG4gICAgZWwuc3R5bGUud2lkdGggPSBweCh3aWR0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SGVpZ2h0V2l0aE1hcmdpbihlbDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG5cbiAgcmV0dXJuIChcbiAgICBlbC5vZmZzZXRIZWlnaHQgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luVG9wLCAxMCkgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLCAxMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRXZlbnQobmFtZTogYW55KTogQ3VzdG9tRXZlbnQ8YW55PiB7XG4gIGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuXG4gIGV2dC5pbml0Q3VzdG9tRXZlbnQobmFtZSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpO1xuXG4gIHJldHVybiBldnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVyIHtcbiAgI2JvdW5kYXJ5RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNlbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2lkOiBzdHJpbmc7XG5cbiAgI3NldFdpZHRoOiBib29sZWFuO1xuXG4gICN2ZXJ0aWNhbE9mZnNldDogbnVtYmVyO1xuXG4gICN2ZXJ0aWNhbE9mZnNldEVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjdmlld3BvcnRNYXJnaW5Ub3AgPSAwO1xuXG4gICNjdXJyZW50RWxGaXhlZExlZnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICNzY3JvbGxhYmxlSG9zdDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3N5bmNFbFBvc2l0aW9uSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa3lWaWV3a2VlcGVyT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHt9O1xuXG4gICAgdGhpcy4jZWwgPSBvcHRpb25zLmVsO1xuICAgIHRoaXMuI2JvdW5kYXJ5RWwgPSBvcHRpb25zLmJvdW5kYXJ5RWw7XG5cbiAgICBpZiAoIXRoaXMuI2VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBlbGAgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNib3VuZGFyeUVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBib3VuZGFyeUVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuI2VsO1xuICAgIGNvbnN0IGJvdW5kYXJ5RWwgPSB0aGlzLiNib3VuZGFyeUVsO1xuXG4gICAgdGhpcy4jc2V0V2lkdGggPSAhIW9wdGlvbnMuc2V0V2lkdGg7XG4gICAgdGhpcy4jaWQgPSBuZXh0SWQoKTtcbiAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdCA9IG9wdGlvbnMuc2Nyb2xsYWJsZUhvc3Q7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXRFbDtcblxuICAgIC8vIE9ubHkgc2V0IHZpZXdwb3J0IG1hcmdpbiBpZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIHVuZGVmaW5lZC5cbiAgICBpZiAoIXRoaXMuI3Njcm9sbGFibGVIb3N0KSB7XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Ub3AgPz8gMDtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKSA9PiB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuXG4gICAgZW5zdXJlU3R5bGVFbCgpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG4gIH1cblxuICBwdWJsaWMgc3luY0VsUG9zaXRpb24oZWw6IEhUTUxFbGVtZW50LCBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy4jY2FsY3VsYXRlVmVydGljYWxPZmZzZXQoKTtcblxuICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgdmlzaWJsZSwgaXRzIHNpemUgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc28gZG9uJ3QgYXR0ZW1wdCBzeW5jaW5nIHBvc2l0aW9uIGluIHRoaXMgY2FzZS5cbiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgJiYgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRhcnlJbmZvID0gdGhpcy4jZ2V0Qm91bmRhcnlJbmZvKGVsLCBib3VuZGFyeUVsKTtcbiAgICBjb25zdCBmaXhlZFN0eWxlcyA9IHRoaXMuI2dldEZpeGVkU3R5bGVzKGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZG9GaXhFbCA9IHRoaXMuI3Nob3VsZEZpeEVsKGVsLCBib3VuZGFyeUluZm8sIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLiNuZWVkc1VwZGF0aW5nKGRvRml4RWwsIGZpeGVkU3R5bGVzKSkge1xuICAgICAgaWYgKGRvRml4RWwpIHtcbiAgICAgICAgdGhpcy4jZml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgZml4ZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jdW5maXhFbChlbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZ0ID0gY3JlYXRlQ3VzdG9tRXZlbnQoRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyk7XG5cbiAgICBlbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2lzRGVzdHJveWVkKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuI2VsKSB7XG4gICAgICAgIHRoaXMuI3VuZml4RWwodGhpcy4jZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyxcbiAgICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jZWwgPSB0aGlzLiNib3VuZGFyeUVsID0gdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy4jaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZCArICctc3BhY2VyJztcbiAgfVxuXG4gICN1bmZpeEVsKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy4jZ2V0U3BhY2VySWQoKSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAoc3BhY2VyRWw/LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHNwYWNlckVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3BhY2VyRWwpO1xuICAgIH1cblxuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRUQpO1xuXG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPVxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgd2lkdGggPSAnJztcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihlbCwgJycsICcnLCB3aWR0aCwgJycpO1xuICB9XG5cbiAgI2NhbGN1bGF0ZVZlcnRpY2FsT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwuc3R5bGUudG9wO1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcCA9IHBhcnNlSW50KHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSwgMTApIHx8IDA7XG5cbiAgICAgIG9mZnNldCArPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLm9mZnNldEhlaWdodCArIHZlcnRpY2FsT2Zmc2V0RWxUb3A7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNzY3JvbGxhYmxlSG9zdCkge1xuICAgICAgb2Zmc2V0ICs9IHRoaXMuI3Njcm9sbGFibGVIb3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI3Nob3VsZEZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBib29sZWFuIHtcbiAgICBsZXQgYW5jaG9yVG9wOiBudW1iZXI7XG5cbiAgICBpZiAoYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoYm91bmRhcnlJbmZvLnNwYWNlckVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCkudG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoZWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfVxuXG4gICAgY29uc3QgZG9GaXhFbCA9XG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wICsgdmVydGljYWxPZmZzZXQgKyB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA+XG4gICAgICBhbmNob3JUb3A7XG5cbiAgICByZXR1cm4gZG9GaXhFbDtcbiAgfVxuXG4gICNnZXRGaXhlZFN0eWxlcyhcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlclxuICApOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGZpeGVkLCB0aGlzIHdpbGwgY2FsY3VsYXRlIGl0cyBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvblxuICAgIC8vIHdpbGwgYmUgMCAoZnVsbHkgdmlzaWJsZSkgdW5sZXNzIHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0aGUgYm91bmRhcnkgb3V0IG9mIHZpZXcuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGQgYmVnaW4gdG8gc2Nyb2xsIG91dCBvZiB2aWV3IHdpdGggdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgYm91bmRhcnkgYnkgc2V0dGluZyBpdHMgdG9wIHBvc2l0aW9uIHRvIGEgbmVnYXRpdmUgdmFsdWUuXG4gICAgY29uc3QgZWxGaXhlZFRvcCA9IE1hdGgubWluKFxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5Qm90dG9tIC1cbiAgICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCxcbiAgICAgIHZlcnRpY2FsT2Zmc2V0XG4gICAgKTtcblxuICAgIGNvbnN0IGVsRml4ZWRXaWR0aCA9IGJvdW5kYXJ5SW5mby5ib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IGVsRml4ZWRMZWZ0ID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeU9mZnNldC5sZWZ0IC0gYm91bmRhcnlJbmZvLnNjcm9sbExlZnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxGaXhlZExlZnQsXG4gICAgICBlbEZpeGVkVG9wLFxuICAgICAgZWxGaXhlZFdpZHRoLFxuICAgIH07XG4gIH1cblxuICAjbmVlZHNVcGRhdGluZyhcbiAgICBkb0ZpeEVsOiBib29sZWFuLFxuICAgIGZpeGVkU3R5bGVzOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXNcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKFxuICAgICAgKGRvRml4RWwgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFRvcCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGgpIHx8XG4gICAgICAoIWRvRml4RWwgJiZcbiAgICAgICAgIShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gbnVsbFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgZWl0aGVyIGN1cnJlbnRseSBmaXhlZCBhbmQgaXRzIHBvc2l0aW9uIGFuZCB3aWR0aCBkbyBub3QgbmVlZFxuICAgICAgLy8gdG8gY2hhbmdlLCBvciB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IGZpeGVkIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZpeGVkLlxuICAgICAgLy8gTm8gY2hhbmdlcyBhcmUgbmVlZGVkLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2ZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgZml4ZWRTdHlsZXM6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlc1xuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcFxuICAgICk7XG4gIH1cblxuICAjZ2V0Qm91bmRhcnlJbmZvKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUVsOiBIVE1MRWxlbWVudFxuICApOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIHtcbiAgICBjb25zdCBzcGFjZXJJZCA9IHRoaXMuI2dldFNwYWNlcklkKCk7XG5cbiAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYWNlcklkKTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5T2Zmc2V0ID0gZ2V0T2Zmc2V0KGJvdW5kYXJ5RWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KTtcbiAgICBjb25zdCBib3VuZGFyeVRvcCA9IGJvdW5kYXJ5T2Zmc2V0LnRvcDtcbiAgICBjb25zdCBib3VuZGFyeUJvdHRvbSA9XG4gICAgICBib3VuZGFyeVRvcCArIGJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbExlZnRcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy4jc2Nyb2xsYWJsZUhvc3RcbiAgICAgID8gdGhpcy4jc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsVG9wXG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBlbEhlaWdodCA9IGdldEhlaWdodFdpdGhNYXJnaW4oZWwpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJvdW5kYXJ5Qm90dG9tLFxuICAgICAgYm91bmRhcnlPZmZzZXQsXG4gICAgICBib3VuZGFyeUVsLFxuICAgICAgZWxIZWlnaHQsXG4gICAgICBzY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wLFxuICAgICAgc3BhY2VySWQsXG4gICAgICBzcGFjZXJFbCxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
276
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBQ3BELE1BQU0seUJBQXlCLEdBQUcscUJBQXFCLENBQUM7QUFFeEQsSUFBSSxPQUF5QixDQUFDO0FBQzlCLElBQUksV0FBbUIsQ0FBQztBQUV4QixTQUFTLGFBQWE7SUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNaLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7R0FDckMsb0JBQW9COzs7Ozs7O3FCQU9GLG9CQUFvQjs7OztDQUl4QyxDQUFDLENBQUM7UUFFQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQ3BDO0FBQ0gsQ0FBQztBQUVELFNBQVMsTUFBTTtJQUNiLFdBQVcsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsT0FBTyxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FDaEIsRUFBZSxFQUNmLGNBQTRCO0lBRTVCLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRTFFLE9BQU87UUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcs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Q3JDLENBQUMsQ0FBQyx1QkFBQSxJQUFJLHFDQUFnQixDQUFDLFVBQVU7UUFDakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLHVCQUFBLElBQUkscUNBQWdCO1FBQ3BDLENBQUMsQ0FBQyx1QkFBQSxJQUFJLHFDQUFnQixDQUFDLFNBQVM7UUFDaEMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0lBRXZDLE1BQU0sUUFBUSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXpDLE9BQU87UUFDTCxjQUFjO1FBQ2QsY0FBYztRQUNkLFVBQVU7UUFDVixRQUFRO1FBQ1IsVUFBVTtRQUNWLFNBQVM7UUFDVCxRQUFRO1FBQ1IsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB9IGZyb20gJy4vdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB9IGZyb20gJy4vdmlld2tlZXBlci1maXhlZC1zdHlsZXMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9mZnNldCB9IGZyb20gJy4vdmlld2tlZXBlci1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkJztcbmNvbnN0IEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMgPSAnYWZ0ZXJWaWV3a2VlcGVyU3luYyc7XG5cbmxldCBzdHlsZUVsOiBIVE1MU3R5bGVFbGVtZW50O1xubGV0IG5leHRJZEluZGV4OiBudW1iZXI7XG5cbmZ1bmN0aW9uIGVuc3VyZVN0eWxlRWwoKTogdm9pZCB7XG4gIGlmICghc3R5bGVFbCkge1xuICAgIHN0eWxlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxuLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3BhY2l0eTogMC45NTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNreS10aGVtZS1tb2Rlcm4gLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA4cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIG9wYWNpdHk6IGluaXRpYWw7XG59XG5gKTtcblxuICAgIHN0eWxlRWwuYXBwZW5kQ2hpbGQoY3NzKTtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dElkKCk6IHN0cmluZyB7XG4gIG5leHRJZEluZGV4ID0gKG5leHRJZEluZGV4IHx8IDApICsgMTtcblxuICByZXR1cm4gJ3ZpZXdrZWVwZXItJyArIG5leHRJZEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgc2Nyb2xsYWJsZUhvc3Q/OiBIVE1MRWxlbWVudFxuKTogU2t5Vmlld2tlZXBlck9mZnNldCB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50ID0gc2Nyb2xsYWJsZUhvc3QgPyBzY3JvbGxhYmxlSG9zdCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgIGxlZnQ6IHJlY3QubGVmdCArIHBhcmVudC5zY3JvbGxMZWZ0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBweCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHB4VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHB4VmFsdWUgPSB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gcHhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0RWxQb3NpdGlvbihcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBsZWZ0OiBudW1iZXIgfCBzdHJpbmcsXG4gIHRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nLFxuICBtYXJnaW5Ub3A6IG51bWJlciB8IHN0cmluZyxcbiAgY2xpcFRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICBjbGlwTGVmdDogbnVtYmVyIHwgc3RyaW5nXG4pOiB2b2lkIHtcbiAgZWwuc3R5bGUudG9wID0gcHgodG9wKTtcbiAgZWwuc3R5bGUubGVmdCA9IHB4KGxlZnQpO1xuICBlbC5zdHlsZS5tYXJnaW5Ub3AgPSBweChtYXJnaW5Ub3ApO1xuICBlbC5zdHlsZS5jbGlwUGF0aCA9XG4gICAgY2xpcFRvcCB8fCBjbGlwTGVmdCA/IGBpbnNldCgke3B4KGNsaXBUb3ApfSAwIDAgJHtweChjbGlwTGVmdCl9KWAgOiAnbm9uZSc7XG5cbiAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gIC8qIHNhbml0eSBjaGVjayAqL1xuICBpZiAod2lkdGggIT09IG51bGwpIHtcbiAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHdpZHRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICByZXR1cm4gKFxuICAgIGVsLm9mZnNldEhlaWdodCArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsIDEwKSArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sIDEwKVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDdXN0b21FdmVudChuYW1lOiBhbnkpOiBDdXN0b21FdmVudDxhbnk+IHtcbiAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG5cbiAgZXZ0LmluaXRDdXN0b21FdmVudChuYW1lLCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCk7XG5cbiAgcmV0dXJuIGV2dDtcbn1cblxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXIge1xuICAjYm91bmRhcnlFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2VsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjaWQ6IHN0cmluZztcblxuICAjc2V0V2lkdGg6IGJvb2xlYW47XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0OiBudW1iZXI7XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydE1hcmdpblRvcCA9IDA7XG5cbiAgI2N1cnJlbnRFbEZpeGVkTGVmdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBMZWZ0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjaXNEZXN0cm95ZWQgPSBmYWxzZTtcblxuICAjc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNzeW5jRWxQb3NpdGlvbkhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgI2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa3lWaWV3a2VlcGVyT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHt9O1xuXG4gICAgdGhpcy4jZWwgPSBvcHRpb25zLmVsO1xuICAgIHRoaXMuI2JvdW5kYXJ5RWwgPSBvcHRpb25zLmJvdW5kYXJ5RWw7XG5cbiAgICBpZiAoIXRoaXMuI2VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBlbGAgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNib3VuZGFyeUVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBib3VuZGFyeUVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuI2VsO1xuICAgIGNvbnN0IGJvdW5kYXJ5RWwgPSB0aGlzLiNib3VuZGFyeUVsO1xuXG4gICAgdGhpcy4jc2V0V2lkdGggPSAhIW9wdGlvbnMuc2V0V2lkdGg7XG4gICAgdGhpcy4jaWQgPSBuZXh0SWQoKTtcbiAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdCA9IG9wdGlvbnMuc2Nyb2xsYWJsZUhvc3Q7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXRFbDtcblxuICAgIC8vIE9ubHkgc2V0IHZpZXdwb3J0IG1hcmdpbiBpZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIHVuZGVmaW5lZC5cbiAgICBpZiAoIXRoaXMuI3Njcm9sbGFibGVIb3N0KSB7XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Ub3AgPz8gMDtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKSA9PiB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyKTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb3JpZW50YXRpb25jaGFuZ2UnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuXG4gICAgZW5zdXJlU3R5bGVFbCgpO1xuXG4gICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG4gIH1cblxuICBwdWJsaWMgc3luY0VsUG9zaXRpb24oZWw6IEhUTUxFbGVtZW50LCBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gdGhpcy4jY2FsY3VsYXRlVmVydGljYWxPZmZzZXQoKTtcblxuICAgIC8vIFdoZW4gdGhlIGVsZW1lbnQgaXNuJ3QgdmlzaWJsZSwgaXRzIHNpemUgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc28gZG9uJ3QgYXR0ZW1wdCBzeW5jaW5nIHBvc2l0aW9uIGluIHRoaXMgY2FzZS5cbiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgJiYgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYm91bmRhcnlJbmZvID0gdGhpcy4jZ2V0Qm91bmRhcnlJbmZvKGVsLCBib3VuZGFyeUVsKTtcbiAgICBjb25zdCBmaXhlZFN0eWxlcyA9IHRoaXMuI2dldEZpeGVkU3R5bGVzKGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZG9GaXhFbCA9IHRoaXMuI3Nob3VsZEZpeEVsKGVsLCBib3VuZGFyeUluZm8sIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGlmICh0aGlzLiNuZWVkc1VwZGF0aW5nKGRvRml4RWwsIGZpeGVkU3R5bGVzKSkge1xuICAgICAgaWYgKGRvRml4RWwpIHtcbiAgICAgICAgdGhpcy4jZml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgZml4ZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jdW5maXhFbChlbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZXZ0ID0gY3JlYXRlQ3VzdG9tRXZlbnQoRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyk7XG5cbiAgICBlbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuI2lzRGVzdHJveWVkKSB7XG4gICAgICB0aGlzLiNpbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlciwgdHJ1ZSk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAnb3JpZW50YXRpb25jaGFuZ2UnLFxuICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXJcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLiNlbCkge1xuICAgICAgICB0aGlzLiN1bmZpeEVsKHRoaXMuI2VsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgICAgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2VsID0gdGhpcy4jYm91bmRhcnlFbCA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuI2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAjZ2V0U3BhY2VySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jaWQgKyAnLXNwYWNlcic7XG4gIH1cblxuICAjdW5maXhFbChlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuI2dldFNwYWNlcklkKCkpO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHNwYWNlckVsPy5wYXJlbnRFbGVtZW50KSB7XG4gICAgICBzcGFjZXJFbC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHNwYWNlckVsKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCA9XG4gICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFRvcCA9XG4gICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID1cbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHdpZHRoID0gJyc7XG5cbiAgICBpZiAodGhpcy4jc2V0V2lkdGgpIHtcbiAgICAgIHdpZHRoID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHNldEVsUG9zaXRpb24oZWwsICcnLCAnJywgd2lkdGgsICcnLCAwLCAwKTtcbiAgfVxuXG4gICNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldDtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnN0eWxlLnRvcDtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3AgPSBwYXJzZUludCh2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUsIDEwKSB8fCAwO1xuXG4gICAgICBvZmZzZXQgKz0gdGhpcy4jdmVydGljYWxPZmZzZXRFbC5vZmZzZXRIZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldEVsVG9wO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIG9mZnNldCArPSB0aGlzLiNzY3JvbGxhYmxlSG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gICNzaG91bGRGaXhFbChcbiAgICBlbDogSFRNTEVsZW1lbnQsXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXJcbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IGFuY2hvclRvcDogbnVtYmVyO1xuXG4gICAgaWYgKGJvdW5kYXJ5SW5mby5zcGFjZXJFbCkge1xuICAgICAgYW5jaG9yVG9wID0gZ2V0T2Zmc2V0KGJvdW5kYXJ5SW5mby5zcGFjZXJFbCwgdGhpcy4jc2Nyb2xsYWJsZUhvc3QpLnRvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5jaG9yVG9wID0gZ2V0T2Zmc2V0KGVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCkudG9wO1xuICAgIH1cblxuICAgIGNvbnN0IGRvRml4RWwgPVxuICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCArIHZlcnRpY2FsT2Zmc2V0ICsgdGhpcy4jdmlld3BvcnRNYXJnaW5Ub3AgPlxuICAgICAgYW5jaG9yVG9wO1xuXG4gICAgcmV0dXJuIGRvRml4RWw7XG4gIH1cblxuICAjZ2V0Rml4ZWRTdHlsZXMoXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXJcbiAgKTogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzIHtcbiAgICAvLyBJZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBmaXhlZCwgdGhpcyB3aWxsIGNhbGN1bGF0ZSBpdHMgcG9zaXRpb24uICBUaGUgcG9zaXRpb25cbiAgICAvLyB3aWxsIGJlIDAgKGZ1bGx5IHZpc2libGUpIHVubGVzcyB0aGUgdXNlciBpcyBzY3JvbGxpbmcgdGhlIGJvdW5kYXJ5IG91dCBvZiB2aWV3LlxuICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGVsZW1lbnQgc2hvdWxkIGJlZ2luIHRvIHNjcm9sbCBvdXQgb2YgdmlldyB3aXRoIHRoZVxuICAgIC8vIHJlc3Qgb2YgdGhlIGJvdW5kYXJ5IGJ5IHNldHRpbmcgaXRzIHRvcCBwb3NpdGlvbiB0byBhIG5lZ2F0aXZlIHZhbHVlLlxuICAgIGNvbnN0IGVsVG9wID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeUJvdHRvbSAtXG4gICAgICBib3VuZGFyeUluZm8uZWxIZWlnaHQgLVxuICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcDtcbiAgICBjb25zdCBlbENsaXBUb3AgPSBlbFRvcCA8IHZlcnRpY2FsT2Zmc2V0ID8gdmVydGljYWxPZmZzZXQgLSBlbFRvcCA6IDA7XG4gICAgY29uc3QgZWxGaXhlZFRvcCA9IE1hdGgubWluKGVsVG9wLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBlbEZpeGVkV2lkdGggPSBib3VuZGFyeUluZm8uYm91bmRhcnlFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICBjb25zdCBlbEZpeGVkTGVmdCA9XG4gICAgICBib3VuZGFyeUluZm8uYm91bmRhcnlPZmZzZXQubGVmdCAtIGJvdW5kYXJ5SW5mby5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IGVsQ2xpcExlZnQgPSBlbEZpeGVkTGVmdCA8IDAgPyAwIC0gZWxGaXhlZExlZnQgOiAwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVsRml4ZWRMZWZ0LFxuICAgICAgZWxGaXhlZFRvcCxcbiAgICAgIGVsRml4ZWRXaWR0aCxcbiAgICAgIGVsQ2xpcExlZnQsXG4gICAgICBlbENsaXBUb3AsXG4gICAgfTtcbiAgfVxuXG4gICNuZWVkc1VwZGF0aW5nKFxuICAgIGRvRml4RWw6IGJvb2xlYW4sXG4gICAgZml4ZWRTdHlsZXM6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlc1xuICApOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAoZG9GaXhFbCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRMZWZ0ICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbENsaXBMZWZ0ICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbENsaXBUb3AgPT09IGZpeGVkU3R5bGVzLmVsQ2xpcFRvcCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGgpIHx8XG4gICAgICAoIWRvRml4RWwgJiZcbiAgICAgICAgIShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gbnVsbFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgZWl0aGVyIGN1cnJlbnRseSBmaXhlZCBhbmQgaXRzIHBvc2l0aW9uIGFuZCB3aWR0aCBkbyBub3QgbmVlZFxuICAgICAgLy8gdG8gY2hhbmdlLCBvciB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IGZpeGVkIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZpeGVkLlxuICAgICAgLy8gTm8gY2hhbmdlcyBhcmUgbmVlZGVkLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2ZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgZml4ZWRTdHlsZXM6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlc1xuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxDbGlwVG9wID0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wO1xuICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID0gZml4ZWRTdHlsZXMuZWxDbGlwTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCxcbiAgICAgIGZpeGVkU3R5bGVzLmVsQ2xpcFRvcCxcbiAgICAgIGZpeGVkU3R5bGVzLmVsQ2xpcExlZnRcbiAgICApO1xuICB9XG5cbiAgI2dldEJvdW5kYXJ5SW5mbyhcbiAgICBlbDogSFRNTEVsZW1lbnQsXG4gICAgYm91bmRhcnlFbDogSFRNTEVsZW1lbnRcbiAgKTogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gICAgY29uc3Qgc3BhY2VySWQgPSB0aGlzLiNnZXRTcGFjZXJJZCgpO1xuXG4gICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFjZXJJZCk7XG5cbiAgICBjb25zdCBib3VuZGFyeU9mZnNldCA9IGdldE9mZnNldChib3VuZGFyeUVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCk7XG4gICAgY29uc3QgYm91bmRhcnlUb3AgPSBib3VuZGFyeU9mZnNldC50b3A7XG4gICAgY29uc3QgYm91bmRhcnlCb3R0b20gPVxuICAgICAgYm91bmRhcnlUb3AgKyBib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLiNzY3JvbGxhYmxlSG9zdFxuICAgICAgPyB0aGlzLiNzY3JvbGxhYmxlSG9zdC5zY3JvbGxMZWZ0XG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbFRvcFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgY29uc3QgZWxIZWlnaHQgPSBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsKTtcblxuICAgIHJldHVybiB7XG4gICAgICBib3VuZGFyeUJvdHRvbSxcbiAgICAgIGJvdW5kYXJ5T2Zmc2V0LFxuICAgICAgYm91bmRhcnlFbCxcbiAgICAgIGVsSGVpZ2h0LFxuICAgICAgc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcCxcbiAgICAgIHNwYWNlcklkLFxuICAgICAgc3BhY2VyRWwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
package/fesm2015/skyux-core.mjs
CHANGED
@@ -3118,7 +3118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImpo
|
|
3118
3118
|
type: Injectable
|
3119
3119
|
}] });
|
3120
3120
|
|
3121
|
-
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;
|
3121
|
+
var _SkyViewkeeper_instances, _SkyViewkeeper_boundaryEl, _SkyViewkeeper_el, _SkyViewkeeper_id, _SkyViewkeeper_setWidth, _SkyViewkeeper_verticalOffset, _SkyViewkeeper_verticalOffsetEl, _SkyViewkeeper_viewportMarginTop, _SkyViewkeeper_currentElFixedLeft, _SkyViewkeeper_currentElFixedTop, _SkyViewkeeper_currentElFixedWidth, _SkyViewkeeper_currentElClipLeft, _SkyViewkeeper_currentElClipTop, _SkyViewkeeper_isDestroyed, _SkyViewkeeper_scrollableHost, _SkyViewkeeper_syncElPositionHandler, _SkyViewkeeper_intersectionObserver, _SkyViewkeeper_getSpacerId, _SkyViewkeeper_unfixEl, _SkyViewkeeper_calculateVerticalOffset, _SkyViewkeeper_shouldFixEl, _SkyViewkeeper_getFixedStyles, _SkyViewkeeper_needsUpdating, _SkyViewkeeper_fixEl, _SkyViewkeeper_getBoundaryInfo;
|
3122
3122
|
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
3123
3123
|
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
3124
3124
|
let styleEl;
|
@@ -3162,10 +3162,12 @@ function px(value) {
|
|
3162
3162
|
}
|
3163
3163
|
return pxValue;
|
3164
3164
|
}
|
3165
|
-
function setElPosition(el, left, top, width, marginTop) {
|
3165
|
+
function setElPosition(el, left, top, width, marginTop, clipTop, clipLeft) {
|
3166
3166
|
el.style.top = px(top);
|
3167
3167
|
el.style.left = px(left);
|
3168
3168
|
el.style.marginTop = px(marginTop);
|
3169
|
+
el.style.clipPath =
|
3170
|
+
clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';
|
3169
3171
|
/*istanbul ignore else*/
|
3170
3172
|
/* sanity check */
|
3171
3173
|
if (width !== null) {
|
@@ -3197,9 +3199,12 @@ class SkyViewkeeper {
|
|
3197
3199
|
_SkyViewkeeper_currentElFixedLeft.set(this, void 0);
|
3198
3200
|
_SkyViewkeeper_currentElFixedTop.set(this, void 0);
|
3199
3201
|
_SkyViewkeeper_currentElFixedWidth.set(this, void 0);
|
3202
|
+
_SkyViewkeeper_currentElClipLeft.set(this, void 0);
|
3203
|
+
_SkyViewkeeper_currentElClipTop.set(this, void 0);
|
3200
3204
|
_SkyViewkeeper_isDestroyed.set(this, false);
|
3201
3205
|
_SkyViewkeeper_scrollableHost.set(this, void 0);
|
3202
3206
|
_SkyViewkeeper_syncElPositionHandler.set(this, void 0);
|
3207
|
+
_SkyViewkeeper_intersectionObserver.set(this, void 0);
|
3203
3208
|
options = options || /* istanbul ignore next */ {};
|
3204
3209
|
__classPrivateFieldSet(this, _SkyViewkeeper_el, options.el, "f");
|
3205
3210
|
__classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, options.boundaryEl, "f");
|
@@ -3251,7 +3256,9 @@ class SkyViewkeeper {
|
|
3251
3256
|
el.dispatchEvent(evt);
|
3252
3257
|
}
|
3253
3258
|
destroy() {
|
3259
|
+
var _a;
|
3254
3260
|
if (!__classPrivateFieldGet(this, _SkyViewkeeper_isDestroyed, "f")) {
|
3261
|
+
(_a = __classPrivateFieldGet(this, _SkyViewkeeper_intersectionObserver, "f")) === null || _a === void 0 ? void 0 : _a.disconnect();
|
3255
3262
|
window.removeEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
|
3256
3263
|
window.removeEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
3257
3264
|
window.removeEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
|
@@ -3266,7 +3273,7 @@ class SkyViewkeeper {
|
|
3266
3273
|
}
|
3267
3274
|
}
|
3268
3275
|
}
|
3269
|
-
_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() {
|
3276
|
+
_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_currentElClipLeft = new WeakMap(), _SkyViewkeeper_currentElClipTop = new WeakMap(), _SkyViewkeeper_isDestroyed = new WeakMap(), _SkyViewkeeper_scrollableHost = new WeakMap(), _SkyViewkeeper_syncElPositionHandler = new WeakMap(), _SkyViewkeeper_intersectionObserver = new WeakMap(), _SkyViewkeeper_instances = new WeakSet(), _SkyViewkeeper_getSpacerId = function _SkyViewkeeper_getSpacerId() {
|
3270
3277
|
return __classPrivateFieldGet(this, _SkyViewkeeper_id, "f") + '-spacer';
|
3271
3278
|
}, _SkyViewkeeper_unfixEl = function _SkyViewkeeper_unfixEl(el) {
|
3272
3279
|
const spacerEl = document.getElementById(__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this));
|
@@ -3280,7 +3287,7 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
3280
3287
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
3281
3288
|
width = 'auto';
|
3282
3289
|
}
|
3283
|
-
setElPosition(el, '', '', width, '');
|
3290
|
+
setElPosition(el, '', '', width, '', 0, 0);
|
3284
3291
|
}, _SkyViewkeeper_calculateVerticalOffset = function _SkyViewkeeper_calculateVerticalOffset() {
|
3285
3292
|
let offset = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffset, "f");
|
3286
3293
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
|
@@ -3308,20 +3315,27 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
3308
3315
|
// will be 0 (fully visible) unless the user is scrolling the boundary out of view.
|
3309
3316
|
// In that case, the element should begin to scroll out of view with the
|
3310
3317
|
// rest of the boundary by setting its top position to a negative value.
|
3311
|
-
const
|
3318
|
+
const elTop = boundaryInfo.boundaryBottom -
|
3312
3319
|
boundaryInfo.elHeight -
|
3313
|
-
boundaryInfo.scrollTop
|
3320
|
+
boundaryInfo.scrollTop;
|
3321
|
+
const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;
|
3322
|
+
const elFixedTop = Math.min(elTop, verticalOffset);
|
3314
3323
|
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
3315
3324
|
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
3325
|
+
const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;
|
3316
3326
|
return {
|
3317
3327
|
elFixedLeft,
|
3318
3328
|
elFixedTop,
|
3319
3329
|
elFixedWidth,
|
3330
|
+
elClipLeft,
|
3331
|
+
elClipTop,
|
3320
3332
|
};
|
3321
3333
|
}, _SkyViewkeeper_needsUpdating = function _SkyViewkeeper_needsUpdating(doFixEl, fixedStyles) {
|
3322
3334
|
if ((doFixEl &&
|
3323
3335
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") === fixedStyles.elFixedLeft &&
|
3324
3336
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedTop, "f") === fixedStyles.elFixedTop &&
|
3337
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElClipLeft, "f") === fixedStyles.elClipLeft &&
|
3338
|
+
__classPrivateFieldGet(this, _SkyViewkeeper_currentElClipTop, "f") === fixedStyles.elClipTop &&
|
3325
3339
|
__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedWidth, "f") === fixedStyles.elFixedWidth) ||
|
3326
3340
|
(!doFixEl &&
|
3327
3341
|
!(__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== undefined &&
|
@@ -3348,12 +3362,14 @@ _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _S
|
|
3348
3362
|
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
3349
3363
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, fixedStyles.elFixedTop, "f");
|
3350
3364
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, fixedStyles.elFixedLeft, "f");
|
3365
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElClipTop, fixedStyles.elClipTop, "f");
|
3366
|
+
__classPrivateFieldSet(this, _SkyViewkeeper_currentElClipLeft, fixedStyles.elClipLeft, "f");
|
3351
3367
|
__classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, fixedStyles.elFixedWidth, "f");
|
3352
3368
|
let width = 0;
|
3353
3369
|
if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
|
3354
3370
|
width = fixedStyles.elFixedWidth;
|
3355
3371
|
}
|
3356
|
-
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"));
|
3372
|
+
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"), fixedStyles.elClipTop, fixedStyles.elClipLeft);
|
3357
3373
|
}, _SkyViewkeeper_getBoundaryInfo = function _SkyViewkeeper_getBoundaryInfo(el, boundaryEl) {
|
3358
3374
|
const spacerId = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this);
|
3359
3375
|
const spacerEl = document.getElementById(spacerId);
|