@uniprank/ngx-scrollspy 1.0.9 → 2.0.1
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/README.md +102 -81
- package/fesm2022/uniprank-ngx-scrollspy.mjs +389 -0
- package/fesm2022/uniprank-ngx-scrollspy.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/ngx-scrollspy.module.d.ts +24 -1
- package/lib/ngx-scrollspy.module.d.ts.map +1 -0
- package/lib/scroll-direction.enum.d.ts +1 -0
- package/lib/scroll-direction.enum.d.ts.map +1 -0
- package/lib/scroll-element.directive.d.ts +12 -9
- package/lib/scroll-element.directive.d.ts.map +1 -0
- package/lib/scroll-element.interface.d.ts +1 -0
- package/lib/scroll-element.interface.d.ts.map +1 -0
- package/lib/scroll-item.directive.d.ts +12 -12
- package/lib/scroll-item.directive.d.ts.map +1 -0
- package/lib/scroll-object.interface.d.ts +1 -0
- package/lib/scroll-object.interface.d.ts.map +1 -0
- package/lib/scroll-spy.directive.d.ts +11 -10
- package/lib/scroll-spy.directive.d.ts.map +1 -0
- package/lib/scroll-spy.service.d.ts +13 -10
- package/lib/scroll-spy.service.d.ts.map +1 -0
- package/package.json +22 -15
- package/public-api.d.ts +3 -1
- package/public-api.d.ts.map +1 -0
- package/uniprank-ngx-scrollspy.d.ts.map +1 -0
- package/CHANGELOG.md +0 -26
- package/bundles/uniprank-ngx-scrollspy.umd.js +0 -649
- package/bundles/uniprank-ngx-scrollspy.umd.js.map +0 -1
- package/bundles/uniprank-ngx-scrollspy.umd.min.js +0 -16
- package/bundles/uniprank-ngx-scrollspy.umd.min.js.map +0 -1
- package/esm2015/lib/ngx-scrollspy.module.js +0 -28
- package/esm2015/lib/scroll-direction.enum.js +0 -6
- package/esm2015/lib/scroll-element.directive.js +0 -63
- package/esm2015/lib/scroll-element.interface.js +0 -1
- package/esm2015/lib/scroll-item.directive.js +0 -61
- package/esm2015/lib/scroll-object.interface.js +0 -1
- package/esm2015/lib/scroll-spy.directive.js +0 -60
- package/esm2015/lib/scroll-spy.service.js +0 -210
- package/esm2015/public-api.js +0 -14
- package/esm2015/uniprank-ngx-scrollspy.js +0 -6
- package/esm5/lib/ngx-scrollspy.module.js +0 -33
- package/esm5/lib/scroll-direction.enum.js +0 -6
- package/esm5/lib/scroll-element.directive.js +0 -65
- package/esm5/lib/scroll-element.interface.js +0 -1
- package/esm5/lib/scroll-item.directive.js +0 -63
- package/esm5/lib/scroll-object.interface.js +0 -1
- package/esm5/lib/scroll-spy.directive.js +0 -62
- package/esm5/lib/scroll-spy.service.js +0 -219
- package/esm5/public-api.js +0 -14
- package/esm5/uniprank-ngx-scrollspy.js +0 -6
- package/fesm2015/uniprank-ngx-scrollspy.js +0 -415
- package/fesm2015/uniprank-ngx-scrollspy.js.map +0 -1
- package/fesm5/uniprank-ngx-scrollspy.js +0 -435
- package/fesm5/uniprank-ngx-scrollspy.js.map +0 -1
- package/uniprank-ngx-scrollspy.d.ts +0 -5
- package/uniprank-ngx-scrollspy.metadata.json +0 -1
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Injectable, ElementRef, Inject, InjectionToken, Optional } from '@angular/core';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { BehaviorSubject, Subject, fromEvent } from 'rxjs';
|
|
5
|
-
import { auditTime, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { ScrollDirectionEnum } from './scroll-direction.enum';
|
|
7
|
-
var defaultElementId = 'window';
|
|
8
|
-
export var SPY_CONFIG = new InjectionToken(null);
|
|
9
|
-
var ScrollSpyService = /** @class */ (function () {
|
|
10
|
-
function ScrollSpyService(doc, config) {
|
|
11
|
-
var _this = this;
|
|
12
|
-
this.doc = doc;
|
|
13
|
-
this._scrollItems = {};
|
|
14
|
-
this._scrollElements = {};
|
|
15
|
-
this._$scrollElementListener = {};
|
|
16
|
-
this._scrollElementListener = {};
|
|
17
|
-
this._onStopListening = new Subject();
|
|
18
|
-
this._resizeEvents = fromEvent(window, 'resize').pipe(auditTime(300), takeUntil(this._onStopListening));
|
|
19
|
-
this._scrollEvents = fromEvent(window, 'scroll').pipe(auditTime(10), takeUntil(this._onStopListening));
|
|
20
|
-
this._initScrollElementListener(defaultElementId, this._generateScrollElement(defaultElementId, new ElementRef(doc.documentElement || doc.body), ScrollDirectionEnum.vertical));
|
|
21
|
-
this._resizeEvents.subscribe(function () { return _this._windowScroll(); });
|
|
22
|
-
this._scrollEvents.subscribe(function () { return _this._windowScroll(); });
|
|
23
|
-
this._windowScroll();
|
|
24
|
-
if (config !== null) {
|
|
25
|
-
this._lookAhead = config.lookAhead;
|
|
26
|
-
this._activateOnlySetItems = config.activateOnlySetItems;
|
|
27
|
-
this.attributeType = config.attributeType;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
this._lookAhead = false;
|
|
31
|
-
this._activateOnlySetItems = false;
|
|
32
|
-
this.attributeType = 'id';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
ScrollSpyService.prototype._initScrollElementListener = function (scrollElementId, scrollElement) {
|
|
36
|
-
this._scrollElements[scrollElementId] = scrollElement;
|
|
37
|
-
this._scrollElementListener[scrollElementId] = null;
|
|
38
|
-
this._$scrollElementListener[scrollElementId] = new BehaviorSubject(null);
|
|
39
|
-
};
|
|
40
|
-
ScrollSpyService.prototype._windowScroll = function () {
|
|
41
|
-
this.updateScrollElement(defaultElementId);
|
|
42
|
-
};
|
|
43
|
-
ScrollSpyService.prototype._generateScrollElement = function (scrollElementId, elementRef, direction, offset) {
|
|
44
|
-
if (offset === void 0) { offset = 0; }
|
|
45
|
-
return {
|
|
46
|
-
id: scrollElementId,
|
|
47
|
-
elementRef: elementRef,
|
|
48
|
-
direction: direction,
|
|
49
|
-
offset: offset
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
ScrollSpyService.prototype.setOffset = function (scrollElementId, offset) {
|
|
53
|
-
this._checkScrollElementExists(scrollElementId);
|
|
54
|
-
this._scrollElements[scrollElementId].offset = offset;
|
|
55
|
-
};
|
|
56
|
-
ScrollSpyService.prototype.setScrollElement = function (scrollElementId, elementRef, direction, offset) {
|
|
57
|
-
if (offset === void 0) { offset = 0; }
|
|
58
|
-
this._checkScrollElementNotExists(scrollElementId);
|
|
59
|
-
this._initScrollElementListener(scrollElementId, this._generateScrollElement(scrollElementId, elementRef, direction, offset));
|
|
60
|
-
};
|
|
61
|
-
ScrollSpyService.prototype._checkScrollElementNotExists = function (scrollElementId) {
|
|
62
|
-
if (this._scrollElements[scrollElementId] != null) {
|
|
63
|
-
throw new Error("ScrollSpyService: The scroll element with the id [" + scrollElementId + "] exists.");
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
ScrollSpyService.prototype.setItem = function (itemId, elementRef, scrollElementId) {
|
|
67
|
-
if (scrollElementId === void 0) { scrollElementId = defaultElementId; }
|
|
68
|
-
this._checkItemNotExists(itemId);
|
|
69
|
-
this._scrollItems[itemId] = this._generateScrollObject(itemId, elementRef, scrollElementId);
|
|
70
|
-
this._setDefaultItem(itemId, scrollElementId);
|
|
71
|
-
};
|
|
72
|
-
ScrollSpyService.prototype._checkItemNotExists = function (itemId) {
|
|
73
|
-
if (this._scrollItems[itemId] != null) {
|
|
74
|
-
throw new Error("ScrollSpyService: The scroll item with the id [" + itemId + "] exists.");
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
ScrollSpyService.prototype._generateScrollObject = function (id, elementRef, scrollElementId) {
|
|
78
|
-
return {
|
|
79
|
-
id: id,
|
|
80
|
-
scrollElementId: scrollElementId,
|
|
81
|
-
elementRef: elementRef,
|
|
82
|
-
nativeElement: elementRef.nativeElement
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
ScrollSpyService.prototype._setDefaultItem = function (itemId, scrollElementId) {
|
|
86
|
-
if (this._lookAhead) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
var _value = this._scrollElementListener[scrollElementId];
|
|
90
|
-
if (_value == null) {
|
|
91
|
-
this._setScrollElementListener(scrollElementId, this._scrollItems[itemId]);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
ScrollSpyService.prototype._setScrollElementListener = function (scrollElementId, scrollObject) {
|
|
95
|
-
var _this = this;
|
|
96
|
-
this._scrollElementListener[scrollElementId] = scrollObject;
|
|
97
|
-
setTimeout(function () { return _this._$scrollElementListener[scrollElementId].next(scrollObject); });
|
|
98
|
-
};
|
|
99
|
-
ScrollSpyService.prototype.changeScrollElement = function (itemId, oldElementId, newElementId, override) {
|
|
100
|
-
if (override === void 0) { override = false; }
|
|
101
|
-
this._checkScrollElementExists(oldElementId);
|
|
102
|
-
this._checkScrollElementExists(newElementId);
|
|
103
|
-
this._checkItemExists(itemId);
|
|
104
|
-
var _scrollItem = this._scrollItems[itemId];
|
|
105
|
-
if ((_scrollItem.scrollElementId !== defaultElementId && override) || _scrollItem.scrollElementId === defaultElementId) {
|
|
106
|
-
this._scrollItems[itemId].scrollElementId = newElementId;
|
|
107
|
-
}
|
|
108
|
-
this._setDefaultItem(itemId, newElementId);
|
|
109
|
-
var _oldElements = this._getElementItems(oldElementId);
|
|
110
|
-
if (_oldElements.length > 0) {
|
|
111
|
-
this._setDefaultItem(_oldElements[0].id, oldElementId);
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
ScrollSpyService.prototype._getElementItems = function (scrollElementId) {
|
|
115
|
-
var _items = [];
|
|
116
|
-
for (var key in this._scrollItems) {
|
|
117
|
-
if (this._scrollItems.hasOwnProperty(key)) {
|
|
118
|
-
var value = this._scrollItems[key];
|
|
119
|
-
if (value.scrollElementId === scrollElementId) {
|
|
120
|
-
_items.push(value);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return _items;
|
|
125
|
-
};
|
|
126
|
-
ScrollSpyService.prototype._checkItemExists = function (itemId) {
|
|
127
|
-
if (this._scrollItems[itemId] == null) {
|
|
128
|
-
throw new Error("ScrollSpyService: The scroll item with the id [" + itemId + "] doesn't exist.");
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
ScrollSpyService.prototype.observe = function (scrollElementId) {
|
|
132
|
-
if (scrollElementId === void 0) { scrollElementId = defaultElementId; }
|
|
133
|
-
this._checkScrollElementExists(scrollElementId);
|
|
134
|
-
return this._$scrollElementListener[scrollElementId].asObservable();
|
|
135
|
-
};
|
|
136
|
-
ScrollSpyService.prototype._checkScrollElementExists = function (scrollElementId) {
|
|
137
|
-
if (this._scrollElements[scrollElementId] == null) {
|
|
138
|
-
throw new Error("ScrollSpyService: The scroll element with the id [" + scrollElementId + "] doesn't exist.");
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
ScrollSpyService.prototype.updateScrollElement = function (scrollElementId) {
|
|
142
|
-
this._checkScrollElementExists(scrollElementId);
|
|
143
|
-
var _element = this._scrollElements[scrollElementId];
|
|
144
|
-
var _elementItems = this._getElementItems(scrollElementId);
|
|
145
|
-
var _nextActiveItem = this._getActiveItem(_element, _elementItems);
|
|
146
|
-
var _currentActiveItem = this._scrollElementListener[scrollElementId];
|
|
147
|
-
if (_currentActiveItem == null) {
|
|
148
|
-
if (_nextActiveItem != null) {
|
|
149
|
-
this._setScrollElementListener(scrollElementId, _nextActiveItem);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
else if (_nextActiveItem != null) {
|
|
153
|
-
if (_currentActiveItem.id !== _nextActiveItem.id) {
|
|
154
|
-
this._setScrollElementListener(scrollElementId, _nextActiveItem);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else if (_nextActiveItem == null && this._lookAhead) {
|
|
158
|
-
this._setScrollElementListener(scrollElementId, null);
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
ScrollSpyService.prototype._getActiveItem = function (scrollElement, listOfElements) {
|
|
162
|
-
var _this = this;
|
|
163
|
-
var _direction = scrollElement.direction;
|
|
164
|
-
var _scrollObject = null;
|
|
165
|
-
var nativeElement = scrollElement.elementRef.nativeElement;
|
|
166
|
-
listOfElements.forEach(function (_element) {
|
|
167
|
-
var _active = false;
|
|
168
|
-
switch (_direction) {
|
|
169
|
-
case ScrollDirectionEnum.horizontal:
|
|
170
|
-
var _scrollLeft = scrollElement.id.toLowerCase() === 'window' ? (window && window.pageXOffset) || 0 : nativeElement.scrollLeft;
|
|
171
|
-
_active = _element.nativeElement.offsetLeft <= _scrollLeft + scrollElement.offset;
|
|
172
|
-
break;
|
|
173
|
-
default: {
|
|
174
|
-
var _scrollTop = scrollElement.id.toLowerCase() === 'window' ? (window && window.pageYOffset) || 0 : nativeElement.scrollTop;
|
|
175
|
-
if (_this._activateOnlySetItems) {
|
|
176
|
-
_active =
|
|
177
|
-
_element.nativeElement.offsetTop < _scrollTop + scrollElement.offset &&
|
|
178
|
-
_element.nativeElement.offsetTop + _element.nativeElement.offsetHeight > _scrollTop + scrollElement.offset;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
_active = _element.nativeElement.offsetTop <= _scrollTop + scrollElement.offset;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (_active) {
|
|
186
|
-
_scrollObject = _element;
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
return _scrollObject;
|
|
190
|
-
};
|
|
191
|
-
ScrollSpyService.prototype.deleteScrollElement = function (scrollElementId) {
|
|
192
|
-
if (scrollElementId === 'window') {
|
|
193
|
-
this._setScrollElementListener(scrollElementId, null);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
this._checkScrollElementExists(scrollElementId);
|
|
197
|
-
delete this._scrollElements[scrollElementId];
|
|
198
|
-
delete this._$scrollElementListener[scrollElementId];
|
|
199
|
-
delete this._scrollElementListener[scrollElementId];
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
ScrollSpyService.prototype.deleteItem = function (itemId) {
|
|
203
|
-
if (this._scrollItems[itemId] != null) {
|
|
204
|
-
delete this._scrollItems[itemId];
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
ScrollSpyService.ctorParameters = function () { return [
|
|
208
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
209
|
-
{ type: undefined, decorators: [{ type: Inject, args: [SPY_CONFIG,] }, { type: Optional }] }
|
|
210
|
-
]; };
|
|
211
|
-
ScrollSpyService = __decorate([
|
|
212
|
-
Injectable(),
|
|
213
|
-
__param(0, Inject(DOCUMENT)), __param(1, Inject(SPY_CONFIG)), __param(1, Optional()),
|
|
214
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
215
|
-
], ScrollSpyService);
|
|
216
|
-
return ScrollSpyService;
|
|
217
|
-
}());
|
|
218
|
-
export { ScrollSpyService };
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXNweS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXByYW5rL25neC1zY3JvbGxzcHkvIiwic291cmNlcyI6WyJsaWIvc2Nyb2xsLXNweS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsSUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7QUFFbEMsTUFBTSxDQUFDLElBQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFZLElBQUksQ0FBQyxDQUFDO0FBcUI5RDtJQWdCRSwwQkFBc0MsR0FBUSxFQUFrQyxNQUFrQjtRQUFsRyxpQkFrQkM7UUFsQnFDLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFmdEMsaUJBQVksR0FBZ0QsRUFBRSxDQUFDO1FBQy9ELG9CQUFlLEdBQTBELEVBQUUsQ0FBQztRQUM1RSw0QkFBdUIsR0FBMEUsRUFBRSxDQUFDO1FBRXBHLDJCQUFzQixHQUF5RCxFQUFFLENBQUM7UUFFbEYscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxrQkFBYSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNuRyxrQkFBYSxH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Q2hELElBQUksZUFBZSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVNLHFDQUFVLEdBQWpCLFVBQWtCLE1BQWM7UUFDOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNyQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDOztnREFwTlksTUFBTSxTQUFDLFFBQVE7Z0RBQXFCLE1BQU0sU0FBQyxVQUFVLGNBQUcsUUFBUTs7SUFoQmxFLGdCQUFnQjtRQUQ1QixVQUFVLEVBQUU7UUFpQkUsV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUEsRUFBb0IsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUEsRUFBRSxXQUFBLFFBQVEsRUFBRSxDQUFBOztPQWhCcEUsZ0JBQWdCLENBcU81QjtJQUFELHVCQUFDO0NBQUEsQUFyT0QsSUFxT0M7U0FyT1ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhdWRpdFRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2Nyb2xsT2JqZWN0SW50ZXJmYWNlIH0gZnJvbSAnLi9zY3JvbGwtb2JqZWN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTY3JvbGxFbGVtZW50SW50ZXJmYWNlIH0gZnJvbSAnLi9zY3JvbGwtZWxlbWVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2Nyb2xsRGlyZWN0aW9uRW51bSB9IGZyb20gJy4vc2Nyb2xsLWRpcmVjdGlvbi5lbnVtJztcblxuY29uc3QgZGVmYXVsdEVsZW1lbnRJZCA9ICd3aW5kb3cnO1xuXG5leHBvcnQgY29uc3QgU1BZX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTcHlDb25maWc+KG51bGwpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNweUNvbmZpZyB7XG4gIC8qKlxuICAgKiBAcGFyYW0gYm9vbGVhbiBsb29rQWhlYWRcbiAgICogU2V0IHRoZSBmaXJzdCBzY3JvbGwgaXRlbSBhY3RpdmUgZXZlbiB3aGVuIHRoZSBzY3JvbGwgZWxlbWVudCBoYXMgbm90IHlldCBiZWVuIHJlYWNoZWRcbiAgICovXG4gIGxvb2tBaGVhZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcGFyYW0gYm9vbGVhbiBhY3RpdmF0ZU9ubHlTZXRJdGVtc1xuICAgKiBTZXQgdGhlIHRoZSBzY3JvbGwgaXRlbXMgYWN0aXZlIG9ubHkgd2hlbiB0aGUgc2Nyb2xsIGVsZW1lbnQgcmVhY2hlZCB0aGUgc2V0IG9mZnNldCBhbmQgaXMgc3RpbGwgaW4gdGhlIHZpZXdwb3J0XG4gICAqL1xuICBhY3RpdmF0ZU9ubHlTZXRJdGVtcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAcGFyYW0gYm9vbGVhbiBhY3RpdmF0ZU9ubHlTZXRJdGVtc1xuICAgKiBTZXQgdGhlIHRoZSBzY3JvbGwgaXRlbXMgYWN0aXZlIG9ubHkgd2hlbiB0aGUgc2Nyb2xsIGVsZW1lbnQgcmVhY2hlZCB0aGUgc2V0IG9mZnNldCBhbmQgaXMgc3RpbGwgaW4gdGhlIHZpZXdwb3J0XG4gICAqL1xuICBhdHRyaWJ1dGVUeXBlPzogJ2lkJyB8ICdkYXRhLWlkJztcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjcm9sbFNweVNlcnZpY2Uge1xuICBwcml2YXRlIF9zY3JvbGxJdGVtczogeyBbaXRlbUlkOiBzdHJpbmddOiBTY3JvbGxPYmplY3RJbnRlcmZhY2UgfSA9IHt9O1xuICBwcml2YXRlIF9zY3JvbGxFbGVtZW50czogeyBbc2Nyb2xsRWxlbWVudElkOiBzdHJpbmddOiBTY3JvbGxFbGVtZW50SW50ZXJmYWNlIH0gPSB7fTtcbiAgcHJpdmF0ZSBfJHNjcm9sbEVsZW1lbnRMaXN0ZW5lcjogeyBbc2Nyb2xsRWxlbWVudElkOiBzdHJpbmddOiBCZWhhdmlvclN1YmplY3Q8U2Nyb2xsT2JqZWN0SW50ZXJmYWNlPiB9ID0ge307XG5cbiAgcHJpdmF0ZSBfc2Nyb2xsRWxlbWVudExpc3RlbmVyOiB7IFtzY3JvbGxFbGVtZW50SWQ6IHN0cmluZ106IFNjcm9sbE9iamVjdEludGVyZmFjZSB9ID0ge307XG5cbiAgcHJpdmF0ZSBfb25TdG9wTGlzdGVuaW5nID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfcmVzaXplRXZlbnRzID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoYXVkaXRUaW1lKDMwMCksIHRha2VVbnRpbCh0aGlzLl9vblN0b3BMaXN0ZW5pbmcpKTtcbiAgcHJpdmF0ZSBfc2Nyb2xsRXZlbnRzID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Njcm9sbCcpLnBpcGUoYXVkaXRUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuX29uU3RvcExpc3RlbmluZykpO1xuXG4gIHByaXZhdGUgX2xvb2tBaGVhZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfYWN0aXZhdGVPbmx5U2V0SXRlbXM6IGJvb2xlYW47XG5cbiAgcmVhZG9ubHkgYXR0cmlidXRlVHlwZTogJ2lkJyB8ICdkYXRhLWlkJztcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55LCBASW5qZWN0KFNQWV9DT05GSUcpIEBPcHRpb25hbCgpIGNvbmZpZz86IFNweUNvbmZpZykge1xuICAgIHRoaXMuX2luaXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoXG4gICAgICBkZWZhdWx0RWxlbWVudElkLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVTY3JvbGxFbGVtZW50KGRlZmF1bHRFbGVtZW50SWQsIG5ldyBFbGVtZW50UmVmKGRvYy5kb2N1bWVudEVsZW1lbnQgfHwgZG9jLmJvZHkpLCBTY3JvbGxEaXJlY3Rpb25FbnVtLnZlcnRpY2FsKVxuICAgICk7XG5cbiAgICB0aGlzLl9yZXNpemVFdmVudHMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3dpbmRvd1Njcm9sbCgpKTtcbiAgICB0aGlzLl9zY3JvbGxFdmVudHMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3dpbmRvd1Njcm9sbCgpKTtcbiAgICB0aGlzLl93aW5kb3dTY3JvbGwoKTtcbiAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICB0aGlzLl9sb29rQWhlYWQgPSBjb25maWcubG9va0FoZWFkO1xuICAgICAgdGhpcy5fYWN0aXZhdGVPbmx5U2V0SXRlbXMgPSBjb25maWcuYWN0aXZhdGVPbmx5U2V0SXRlbXM7XG4gICAgICB0aGlzLmF0dHJpYnV0ZVR5cGUgPSBjb25maWcuYXR0cmlidXRlVHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9va0FoZWFkID0gZmFsc2U7XG4gICAgICB0aGlzLl9hY3RpdmF0ZU9ubHlTZXRJdGVtcyA9IGZhbHNlO1xuICAgICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gJ2lkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2Nyb2xsRWxlbWVudExpc3RlbmVyKHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nLCBzY3JvbGxFbGVtZW50OiBTY3JvbGxFbGVtZW50SW50ZXJmYWNlKTogdm9pZCB7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudHNbc2Nyb2xsRWxlbWVudElkXSA9IHNjcm9sbEVsZW1lbnQ7XG4gICAgdGhpcy5fc2Nyb2xsRWxlbWVudExpc3RlbmVyW3Njcm9sbEVsZW1lbnRJZF0gPSBudWxsO1xuICAgIHRoaXMuXyRzY3JvbGxFbGVtZW50TGlzdGVuZXJbc2Nyb2xsRWxlbWVudElkXSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF93aW5kb3dTY3JvbGwoKSB7XG4gICAgdGhpcy51cGRhdGVTY3JvbGxFbGVtZW50KGRlZmF1bHRFbGVtZW50SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2VuZXJhdGVTY3JvbGxFbGVtZW50KFxuICAgIHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgZGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb25FbnVtLFxuICAgIG9mZnNldDogbnVtYmVyID0gMFxuICApOiBTY3JvbGxFbGVtZW50SW50ZXJmYWNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHNjcm9sbEVsZW1lbnRJZCxcbiAgICAgIGVsZW1lbnRSZWYsXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHNldE9mZnNldChzY3JvbGxFbGVtZW50SWQ6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGVja1Njcm9sbEVsZW1lbnRFeGlzdHMoc2Nyb2xsRWxlbWVudElkKTtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50c1tzY3JvbGxFbGVtZW50SWRdLm9mZnNldCA9IG9mZnNldDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTY3JvbGxFbGVtZW50KHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbkVudW0sIG9mZnNldDogbnVtYmVyID0gMCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsRWxlbWVudE5vdEV4aXN0cyhzY3JvbGxFbGVtZW50SWQpO1xuICAgIHRoaXMuX2luaXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoc2Nyb2xsRWxlbWVudElkLCB0aGlzLl9nZW5lcmF0ZVNjcm9sbEVsZW1lbnQoc2Nyb2xsRWxlbWVudElkLCBlbGVtZW50UmVmLCBkaXJlY3Rpb24sIG9mZnNldCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tTY3JvbGxFbGVtZW50Tm90RXhpc3RzKHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEVsZW1lbnRzW3Njcm9sbEVsZW1lbnRJZF0gIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTY3JvbGxTcHlTZXJ2aWNlOiBUaGUgc2Nyb2xsIGVsZW1lbnQgd2l0aCB0aGUgaWQgWyR7c2Nyb2xsRWxlbWVudElkfV0gZXhpc3RzLmApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRJdGVtKGl0ZW1JZDogc3RyaW5nLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBzY3JvbGxFbGVtZW50SWQgPSBkZWZhdWx0RWxlbWVudElkKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tJdGVtTm90RXhpc3RzKGl0ZW1JZCk7XG4gICAgdGhpcy5fc2Nyb2xsSXRlbXNbaXRlbUlkXSA9IHRoaXMuX2dlbmVyYXRlU2Nyb2xsT2JqZWN0KGl0ZW1JZCwgZWxlbWVudFJlZiwgc2Nyb2xsRWxlbWVudElkKTtcbiAgICB0aGlzLl9zZXREZWZhdWx0SXRlbShpdGVtSWQsIHNjcm9sbEVsZW1lbnRJZCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0l0ZW1Ob3RFeGlzdHMoaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsSXRlbXNbaXRlbUlkXSAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcm9sbFNweVNlcnZpY2U6IFRoZSBzY3JvbGwgaXRlbSB3aXRoIHRoZSBpZCBbJHtpdGVtSWR9XSBleGlzdHMuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2VuZXJhdGVTY3JvbGxPYmplY3QoaWQ6IHN0cmluZywgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgc2Nyb2xsRWxlbWVudElkOiBzdHJpbmcpOiBTY3JvbGxPYmplY3RJbnRlcmZhY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBpZCxcbiAgICAgIHNjcm9sbEVsZW1lbnRJZCxcbiAgICAgIGVsZW1lbnRSZWYsXG4gICAgICBuYXRpdmVFbGVtZW50OiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdEl0ZW0oaXRlbUlkOiBzdHJpbmcsIHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2xvb2tBaGVhZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBfdmFsdWUgPSB0aGlzLl9zY3JvbGxFbGVtZW50TGlzdGVuZXJbc2Nyb2xsRWxlbWVudElkXTtcbiAgICBpZiAoX3ZhbHVlID09IG51bGwpIHtcbiAgICAgIHRoaXMuX3NldFNjcm9sbEVsZW1lbnRMaXN0ZW5lcihzY3JvbGxFbGVtZW50SWQsIHRoaXMuX3Njcm9sbEl0ZW1zW2l0ZW1JZF0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldFNjcm9sbEVsZW1lbnRMaXN0ZW5lcihzY3JvbGxFbGVtZW50SWQ6IHN0cmluZywgc2Nyb2xsT2JqZWN0OiBTY3JvbGxPYmplY3RJbnRlcmZhY2UpOiB2b2lkIHtcbiAgICB0aGlzLl9zY3JvbGxFbGVtZW50TGlzdGVuZXJbc2Nyb2xsRWxlbWVudElkXSA9IHNjcm9sbE9iamVjdDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuXyRzY3JvbGxFbGVtZW50TGlzdGVuZXJbc2Nyb2xsRWxlbWVudElkXS5uZXh0KHNjcm9sbE9iamVjdCkpO1xuICB9XG5cbiAgcHVibGljIGNoYW5nZVNjcm9sbEVsZW1lbnQoaXRlbUlkOiBzdHJpbmcsIG9sZEVsZW1lbnRJZDogc3RyaW5nLCBuZXdFbGVtZW50SWQ6IHN0cmluZywgb3ZlcnJpZGUgPSBmYWxzZSkge1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsRWxlbWVudEV4aXN0cyhvbGRFbGVtZW50SWQpO1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsRWxlbWVudEV4aXN0cyhuZXdFbGVtZW50SWQpO1xuICAgIHRoaXMuX2NoZWNrSXRlbUV4aXN0cyhpdGVtSWQpO1xuXG4gICAgY29uc3QgX3Njcm9sbEl0ZW0gPSB0aGlzLl9zY3JvbGxJdGVtc1tpdGVtSWRdO1xuICAgIGlmICgoX3Njcm9sbEl0ZW0uc2Nyb2xsRWxlbWVudElkICE9PSBkZWZhdWx0RWxlbWVudElkICYmIG92ZXJyaWRlKSB8fCBfc2Nyb2xsSXRlbS5zY3JvbGxFbGVtZW50SWQgPT09IGRlZmF1bHRFbGVtZW50SWQpIHtcbiAgICAgIHRoaXMuX3Njcm9sbEl0ZW1zW2l0ZW1JZF0uc2Nyb2xsRWxlbWVudElkID0gbmV3RWxlbWVudElkO1xuICAgIH1cblxuICAgIHRoaXMuX3NldERlZmF1bHRJdGVtKGl0ZW1JZCwgbmV3RWxlbWVudElkKTtcblxuICAgIGNvbnN0IF9vbGRFbGVtZW50cyA9IHRoaXMuX2dldEVsZW1lbnRJdGVtcyhvbGRFbGVtZW50SWQpO1xuICAgIGlmIChfb2xkRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2V0RGVmYXVsdEl0ZW0oX29sZEVsZW1lbnRzWzBdLmlkLCBvbGRFbGVtZW50SWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsZW1lbnRJdGVtcyhzY3JvbGxFbGVtZW50SWQ6IHN0cmluZyk6IEFycmF5PFNjcm9sbE9iamVjdEludGVyZmFjZT4ge1xuICAgIGNvbnN0IF9pdGVtcyA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX3Njcm9sbEl0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5fc2Nyb2xsSXRlbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX3Njcm9sbEl0ZW1zW2tleV07XG4gICAgICAgIGlmICh2YWx1ZS5zY3JvbGxFbGVtZW50SWQgPT09IHNjcm9sbEVsZW1lbnRJZCkge1xuICAgICAgICAgIF9pdGVtcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gX2l0ZW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tJdGVtRXhpc3RzKGl0ZW1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Njcm9sbEl0ZW1zW2l0ZW1JZF0gPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTY3JvbGxTcHlTZXJ2aWNlOiBUaGUgc2Nyb2xsIGl0ZW0gd2l0aCB0aGUgaWQgWyR7aXRlbUlkfV0gZG9lc24ndCBleGlzdC5gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb2JzZXJ2ZShzY3JvbGxFbGVtZW50SWQ6IHN0cmluZyA9IGRlZmF1bHRFbGVtZW50SWQpOiBPYnNlcnZhYmxlPFNjcm9sbE9iamVjdEludGVyZmFjZT4ge1xuICAgIHRoaXMuX2NoZWNrU2Nyb2xsRWxlbWVudEV4aXN0cyhzY3JvbGxFbGVtZW50SWQpO1xuICAgIHJldHVybiB0aGlzLl8kc2Nyb2xsRWxlbWVudExpc3RlbmVyW3Njcm9sbEVsZW1lbnRJZF0uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja1Njcm9sbEVsZW1lbnRFeGlzdHMoc2Nyb2xsRWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsRWxlbWVudHNbc2Nyb2xsRWxlbWVudElkXSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNjcm9sbFNweVNlcnZpY2U6IFRoZSBzY3JvbGwgZWxlbWVudCB3aXRoIHRoZSBpZCBbJHtzY3JvbGxFbGVtZW50SWR9XSBkb2Vzbid0IGV4aXN0LmApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTY3JvbGxFbGVtZW50KHNjcm9sbEVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tTY3JvbGxFbGVtZW50RXhpc3RzKHNjcm9sbEVsZW1lbnRJZCk7XG5cbiAgICBjb25zdCBfZWxlbWVudCA9IHRoaXMuX3Njcm9sbEVsZW1lbnRzW3Njcm9sbEVsZW1lbnRJZF07XG4gICAgY29uc3QgX2VsZW1lbnRJdGVtcyA9IHRoaXMuX2dldEVsZW1lbnRJdGVtcyhzY3JvbGxFbGVtZW50SWQpO1xuXG4gICAgY29uc3QgX25leHRBY3RpdmVJdGVtID0gdGhpcy5fZ2V0QWN0aXZlSXRlbShfZWxlbWVudCwgX2VsZW1lbnRJdGVtcyk7XG4gICAgY29uc3QgX2N1cnJlbnRBY3RpdmVJdGVtID0gdGhpcy5fc2Nyb2xsRWxlbWVudExpc3RlbmVyW3Njcm9sbEVsZW1lbnRJZF07XG5cbiAgICBpZiAoX2N1cnJlbnRBY3RpdmVJdGVtID09IG51bGwpIHtcbiAgICAgIGlmIChfbmV4dEFjdGl2ZUl0ZW0gIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9zZXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoc2Nyb2xsRWxlbWVudElkLCBfbmV4dEFjdGl2ZUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX25leHRBY3RpdmVJdGVtICE9IG51bGwpIHtcbiAgICAgIGlmIChfY3VycmVudEFjdGl2ZUl0ZW0uaWQgIT09IF9uZXh0QWN0aXZlSXRlbS5pZCkge1xuICAgICAgICB0aGlzLl9zZXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoc2Nyb2xsRWxlbWVudElkLCBfbmV4dEFjdGl2ZUl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX25leHRBY3RpdmVJdGVtID09IG51bGwgJiYgdGhpcy5fbG9va0FoZWFkKSB7XG4gICAgICB0aGlzLl9zZXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoc2Nyb2xsRWxlbWVudElkLCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRBY3RpdmVJdGVtKHNjcm9sbEVsZW1lbnQ6IFNjcm9sbEVsZW1lbnRJbnRlcmZhY2UsIGxpc3RPZkVsZW1lbnRzOiBBcnJheTxTY3JvbGxPYmplY3RJbnRlcmZhY2U+KTogU2Nyb2xsT2JqZWN0SW50ZXJmYWNlIHtcbiAgICBjb25zdCBfZGlyZWN0aW9uID0gc2Nyb2xsRWxlbWVudC5kaXJlY3Rpb247XG4gICAgbGV0IF9zY3JvbGxPYmplY3QgPSBudWxsO1xuXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IHNjcm9sbEVsZW1lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGxpc3RPZkVsZW1lbnRzLmZvckVhY2goKF9lbGVtZW50KSA9PiB7XG4gICAgICBsZXQgX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgc3dpdGNoIChfZGlyZWN0aW9uKSB7XG4gICAgICAgIGNhc2UgU2Nyb2xsRGlyZWN0aW9uRW51bS5ob3Jpem9udGFsOlxuICAgICAgICAgIGNvbnN0IF9zY3JvbGxMZWZ0ID0gc2Nyb2xsRWxlbWVudC5pZC50b0xvd2VyQ2FzZSgpID09PSAnd2luZG93JyA/ICh3aW5kb3cgJiYgd2luZG93LnBhZ2VYT2Zmc2V0KSB8fCAwIDogbmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgICAgICAgIF9hY3RpdmUgPSBfZWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgPD0gX3Njcm9sbExlZnQgKyBzY3JvbGxFbGVtZW50Lm9mZnNldDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgX3Njcm9sbFRvcCA9IHNjcm9sbEVsZW1lbnQuaWQudG9Mb3dlckNhc2UoKSA9PT0gJ3dpbmRvdycgPyAod2luZG93ICYmIHdpbmRvdy5wYWdlWU9mZnNldCkgfHwgMCA6IG5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgIGlmICh0aGlzLl9hY3RpdmF0ZU9ubHlTZXRJdGVtcykge1xuICAgICAgICAgICAgX2FjdGl2ZSA9XG4gICAgICAgICAgICAgIF9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wIDwgX3Njcm9sbFRvcCArIHNjcm9sbEVsZW1lbnQub2Zmc2V0ICYmXG4gICAgICAgICAgICAgIF9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wICsgX2VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiBfc2Nyb2xsVG9wICsgc2Nyb2xsRWxlbWVudC5vZmZzZXQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9hY3RpdmUgPSBfZWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcCA8PSBfc2Nyb2xsVG9wICsgc2Nyb2xsRWxlbWVudC5vZmZzZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoX2FjdGl2ZSkge1xuICAgICAgICBfc2Nyb2xsT2JqZWN0ID0gX2VsZW1lbnQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIF9zY3JvbGxPYmplY3Q7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlU2Nyb2xsRWxlbWVudChzY3JvbGxFbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChzY3JvbGxFbGVtZW50SWQgPT09ICd3aW5kb3cnKSB7XG4gICAgICB0aGlzLl9zZXRTY3JvbGxFbGVtZW50TGlzdGVuZXIoc2Nyb2xsRWxlbWVudElkLCBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hlY2tTY3JvbGxFbGVtZW50RXhpc3RzKHNjcm9sbEVsZW1lbnRJZCk7XG4gICAgICBkZWxldGUgdGhpcy5fc2Nyb2xsRWxlbWVudHNbc2Nyb2xsRWxlbWVudElkXTtcbiAgICAgIGRlbGV0ZSB0aGlzLl8kc2Nyb2xsRWxlbWVudExpc3RlbmVyW3Njcm9sbEVsZW1lbnRJZF07XG4gICAgICBkZWxldGUgdGhpcy5fc2Nyb2xsRWxlbWVudExpc3RlbmVyW3Njcm9sbEVsZW1lbnRJZF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2Nyb2xsSXRlbXNbaXRlbUlkXSAhPSBudWxsKSB7XG4gICAgICBkZWxldGUgdGhpcy5fc2Nyb2xsSXRlbXNbaXRlbUlkXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm5/public-api.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of ngx-scrollspy
|
|
3
|
-
*/
|
|
4
|
-
// enums
|
|
5
|
-
export { ScrollDirectionEnum } from './lib/scroll-direction.enum';
|
|
6
|
-
// services
|
|
7
|
-
export { ScrollSpyService } from './lib/scroll-spy.service';
|
|
8
|
-
// directives
|
|
9
|
-
export { ScrollElementDirective } from './lib/scroll-element.directive';
|
|
10
|
-
export { ScrollItemDirective } from './lib/scroll-item.directive';
|
|
11
|
-
export { ScrollSpyDirective } from './lib/scroll-spy.directive';
|
|
12
|
-
// modules
|
|
13
|
-
export { NgxScrollspyModule } from './lib/ngx-scrollspy.module';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bmlwcmFuay9uZ3gtc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILFFBQVE7QUFDUixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU1sRSxXQUFXO0FBQ1gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUQsYUFBYTtBQUNiLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLFVBQVU7QUFDVixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LXNjcm9sbHNweVxuICovXG4vLyBlbnVtc1xuZXhwb3J0IHsgU2Nyb2xsRGlyZWN0aW9uRW51bSB9IGZyb20gJy4vbGliL3Njcm9sbC1kaXJlY3Rpb24uZW51bSc7XG5cbi8vIGludGVyZmFjZXNcbmV4cG9ydCB7IFNjcm9sbE9iamVjdEludGVyZmFjZSB9IGZyb20gJy4vbGliL3Njcm9sbC1vYmplY3QuaW50ZXJmYWNlJztcbmV4cG9ydCB7IFNjcm9sbEVsZW1lbnRJbnRlcmZhY2UgfSBmcm9tICcuL2xpYi9zY3JvbGwtZWxlbWVudC5pbnRlcmZhY2UnO1xuXG4vLyBzZXJ2aWNlc1xuZXhwb3J0IHsgU2Nyb2xsU3B5U2VydmljZSB9IGZyb20gJy4vbGliL3Njcm9sbC1zcHkuc2VydmljZSc7XG5cbi8vIGRpcmVjdGl2ZXNcbmV4cG9ydCB7IFNjcm9sbEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zY3JvbGwtZWxlbWVudC5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgU2Nyb2xsSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vbGliL3Njcm9sbC1pdGVtLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBTY3JvbGxTcHlEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zY3JvbGwtc3B5LmRpcmVjdGl2ZSc7XG5cbi8vIG1vZHVsZXNcbmV4cG9ydCB7IE5neFNjcm9sbHNweU1vZHVsZSB9IGZyb20gJy4vbGliL25neC1zY3JvbGxzcHkubW9kdWxlJztcbiJdfQ==
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
export { SPY_CONFIG as ɵa } from './lib/scroll-spy.service';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcHJhbmstbmd4LXNjcm9sbHNweS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bmlwcmFuay9uZ3gtc2Nyb2xsc3B5LyIsInNvdXJjZXMiOlsidW5pcHJhbmstbmd4LXNjcm9sbHNweS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRTdCLE9BQU8sRUFBQyxVQUFVLElBQUksRUFBRSxFQUFDLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7U1BZX0NPTkZJRyBhcyDJtWF9IGZyb20gJy4vbGliL3Njcm9sbC1zcHkuc2VydmljZSc7Il19
|