@libs-ui/components-scroll-overlay 0.2.77 → 0.2.78
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.
|
@@ -150,10 +150,16 @@ export class LibsUiComponentsScrollOverlayDirective {
|
|
|
150
150
|
trackEl.appendChild(thumbEl);
|
|
151
151
|
if (this.Element.className) {
|
|
152
152
|
this.Element.className.split(' ').forEach((className) => {
|
|
153
|
-
if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || /^(!?)(h|w)-\[[0-9]+px\]$/.test(className)) && !this.divContainer.classList.contains(className)) {
|
|
153
|
+
if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || className.includes('min-h-') || className.includes('min-w-') || /^(!?)(h|w)-\[[0-9]+px\]$/.test(className)) && !this.divContainer.classList.contains(className)) {
|
|
154
154
|
this.divContainer.classList.add(className);
|
|
155
155
|
}
|
|
156
156
|
});
|
|
157
|
+
if (!this.Element.className.includes('min-h-')) {
|
|
158
|
+
this.divContainer.classList.add('min-h-0');
|
|
159
|
+
}
|
|
160
|
+
if (!this.Element.className.includes('min-w-')) {
|
|
161
|
+
this.divContainer.classList.add('min-w-0');
|
|
162
|
+
}
|
|
157
163
|
}
|
|
158
164
|
this.divContainer.appendChild(trackEl);
|
|
159
165
|
if (!this.divContainer.style.position) {
|
|
@@ -268,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
268
274
|
standalone: true
|
|
269
275
|
}]
|
|
270
276
|
}], ctorParameters: () => [] });
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLW92ZXJsYXkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Njcm9sbC1vdmVybGF5L3NyYy9zY3JvbGwtb3ZlcmxheS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU90RixNQUFNLE9BQU8sc0NBQXNDO0lBQ2pELGNBQWM7SUFDRyxNQUFNLEdBQUcsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnRGhDLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDWixLQUFLLENBQWdCO0lBQ3JCLEtBQUssQ0FBZ0I7SUFDckIsd0JBQXdCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMvQyx3QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9DLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUM5RixjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBRSxxQkFBcUI7SUFDcEcsaUJBQWlCLEdBQUcsTUFBTSxDQUEr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QUFlLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsYUFBYSxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXpTVSxzQ0FBc0M7NEZBQXRDLHNDQUFzQzs7NEZBQXRDLHNDQUFzQztrQkFMbEQsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSVNjcm9sbE92ZXJsYXlPcHRpb25zLCBUWVBFX1NDUk9MTF9ESVJFQ1RJT04gfSBmcm9tIFwiLi9zY3JvbGwuaW50ZXJmYWNlXCI7XG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVzID0gc2lnbmFsKGBcbiAgICAgIC5zY3JvbGxiYXItdHJhY2stWCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHZpc2liaWxpdHkgMC4zcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuc2Nyb2xsYmFyLXRodW1iLVgge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDREQwRDY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC5zY3JvbGxiYXItdHJhY2stWSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHZpc2liaWxpdHkgMC4zcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuc2Nyb2xsYmFyLXRodW1iLVkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0NERDBENjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIH1cblxuICAgICAgLnNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5Q0EyQUQ7XG4gICAgICB9XG4gIGAsIHt9KS5hc1JlYWRvbmx5KCk7XG4gIHByaXZhdGUgc3Vic1g/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3Vic1k/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclN1YmplY3RYID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ViamVjdFkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNjcm9sbGJhcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LnNjcm9sbGJhcldpZHRoIHx8IDgpOyAvLyBDaGnhu4F1IHLhu5luZyB0aGFuaCBjdeG7mW5cbiAgcHJpdmF0ZSBzY3JvbGxiYXJDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpPy5zY3JvbGxiYXJDb2xvciB8fCAnI0NERDBENicpOyAgLy8gTcOgdSBz4bqvYyB0aGFuaCBjdeG7mW5cbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyWCA9IHNpZ25hbDxNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXJZID0gc2lnbmFsPE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGl2Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhY2tYOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRodW1iWDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFja1k6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGh1bWJZOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZGVidWdNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0NvbnRhaW5lciA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICcnIH0pO1xuICByZWFkb25seSBvcHRpb25zID0gaW5wdXQ8SVNjcm9sbE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkPihPYmplY3QuYXNzaWduKHt9KSk7XG5cbiAgLyogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dFNjcm9sbCA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsWCA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsWSA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsVG9wID0gb3V0cHV0PEV2ZW50PigpO1xuICByZWFkb25seSBvdXRTY3JvbGxCb3R0b20gPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIHRoaXMuZGl2Q29udGFpbmVyLmNsYXNzTmFtZSA9ICcnO1xuICAgICAgdGhpcy5jbGFzc0NvbnRhaW5lcigpPy5zcGxpdCgnICcpLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXZDb250YWluZXIuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zPy5zY3JvbGxYICE9PSAnaGlkZGVuJykge1xuICAgICAgICAgIHRoaXMuc3Vic1g/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVTY3JvbGxiYXIoJ1gnLCB0aGlzLnRyYWNrWCwgdGhpcy50aHVtYlgpO1xuICAgICAgICAgIHRoaXMuYmluZEV2ZW50c1Njcm9sbEJhcignWCcsIHRoaXMudHJhY2tYKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLnN1YnNYPy5hZGQodGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdFgucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZS5iaW5kKHRoaXMsICdYJykpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJYLnNldChuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0WC5uZXh0KCkpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJYKCk/Lm9ic2VydmUodGhpcy5FbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zPy5zY3JvbGxZICE9PSAnaGlkZGVuJykge1xuICAgICAgICAgIHRoaXMuc3Vic1k/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVTY3JvbGxiYXIoJ1knLCB0aGlzLnRyYWNrWSwgdGhpcy50aHVtYlkpO1xuICAgICAgICAgIHRoaXMuYmluZEV2ZW50c1Njcm9sbEJhcignWScsIHRoaXMudHJhY2tZKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLnN1YnNZPy5hZGQodGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdFkucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZS5iaW5kKHRoaXMsICdZJykpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZLnNldChuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0WS5uZXh0KCkpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/Lm9ic2VydmUodGhpcy5FbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyovXG4gIHByaXZhdGUgZ2V0IEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY3JvbGxiYXIoc2Nyb2xsRGlyZWN0aW9uOiBUWVBFX1NDUk9MTF9ESVJFQ1RJT04sIHRyYWNrRWw6IEhUTUxFbGVtZW50LCB0aHVtYkVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGlkU3R5bGVUYWcgPSBcIiNpZC1zdHlsZS10YWctY3VzdG9tLXNjcm9sbC1vdmVybGF5XCJcbiAgICBjb25zdCBzdHlsZUVsQ3VzdG9tU2Nyb2xsT3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkU3R5bGVUYWcpO1xuXG4gICAgaWYgKCFzdHlsZUVsQ3VzdG9tU2Nyb2xsT3ZlcmxheSkge1xuICAgICAgY29uc3Qgc3R5bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICBzdHlsZUVsLnNldEF0dHJpYnV0ZSgnaWQnLCBpZFN0eWxlVGFnKTtcbiAgICAgIHN0eWxlRWwuaW5uZXJIVE1MID0gdGhpcy5zdHlsZXMoKTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHN0eWxlRWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlc1Byb3BlcnR5ID0ge1xuICAgICAgXCJib3gtc2l6aW5nXCI6IFwiYm9yZGVyLWJveFwiLFxuICAgICAgXCJzY3JvbGxiYXItd2lkdGhcIjogXCJub25lXCIsXG4gICAgICBcInNjcm9sbGJhci1jb2xvclwiOiBcInRyYW5zcGFyZW50IHRyYW5zcGFyZW50XCIsXG4gICAgICBcIm92ZXJmbG93XCI6IFwiaGlkZGVuXCIsXG4gICAgICBcIm92ZXJmbG93LXhcIjogYCR7dGhpcy5vcHRpb25zKCk/LnNjcm9sbFggfHwgJ3Njcm9sbCd9YCxcbiAgICAgIFwib3ZlcmZsb3cteVwiOiBgJHt0aGlzLm9wdGlvbnMoKT8uc2Nyb2xsWSB8fCAnc2Nyb2xsJ31gXG4gICAgfSBhcyBhbnk7XG5cbiAgICBPYmplY3Qua2V5cyhzdHlsZXNQcm9wZXJ0eSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuRWxlbWVudCwga2V5LCBzdHlsZXNQcm9wZXJ0eVtrZXldLCAxKTtcbiAgICB9KTtcblxuICAgIHRyYWNrRWwuY2xhc3NMaXN0LmFkZChgc2Nyb2xsYmFyLXRyYWNrLSR7c2Nyb2xsRGlyZWN0aW9ufWApO1xuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgdHJhY2tFbC5zdHlsZS53aWR0aCA9IGAxMDAlYDtcbiAgICAgIHRyYWNrRWwuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5zY3JvbGxiYXJXaWR0aCgpfXB4YDtcblxuICAgIH1cblxuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdZJykge1xuICAgICAgdHJhY2tFbC5zdHlsZS5oZWlnaHQgPSBgMTAwJWA7XG4gICAgICB0cmFja0VsLnN0eWxlLndpZHRoID0gYCR7dGhpcy5zY3JvbGxiYXJXaWR0aCgpfXB4YDtcbiAgICB9XG5cbiAgICB0aHVtYkVsLmNsYXNzTGlzdC5hZGQoYHNjcm9sbGJhci10aHVtYi0ke3Njcm9sbERpcmVjdGlvbn1gKTtcbiAgICB0aHVtYkVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuc2Nyb2xsYmFyQ29sb3IoKTtcbiAgICB0cmFja0VsLmFwcGVuZENoaWxkKHRodW1iRWwpO1xuICAgIGlmICh0aGlzLkVsZW1lbnQuY2xhc3NOYW1lKSB7XG4gICAgICB0aGlzLkVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCcgJykuZm9yRWFjaCgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSAmJiAoWyd3LWZ1bGwnLCAndy1zY3JlZW4nLCAnaC1mdWxsJywgJ2gtc2NyZWVuJ10uaW5jbHVkZXMoY2xhc3NOYW1lKSB8fCAvXighPykoaHx3KS1cXFtbMC05XStweFxcXSQvLnRlc3QoY2xhc3NOYW1lKSkgJiYgIXRoaXMuZGl2Q29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgICAgdGhpcy5kaXZDb250YWluZXIuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kaXZDb250YWluZXIuYXBwZW5kQ2hpbGQodHJhY2tFbCk7XG5cbiAgICBpZiAoIXRoaXMuZGl2Q29udGFpbmVyLnN0eWxlLnBvc2l0aW9uKSB7XG4gICAgICB0aGlzLkVsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5kaXZDb250YWluZXIsIHRoaXMuRWxlbWVudCk7XG4gICAgICB0aGlzLmRpdkNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgfVxuICAgIHRoaXMuZGl2Q29udGFpbmVyLmFwcGVuZCh0aGlzLkVsZW1lbnQpO1xuICAgIHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZShzY3JvbGxEaXJlY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kRXZlbnRzU2Nyb2xsQmFyKHNjcm9sbERpcmVjdGlvbjogVFlQRV9TQ1JPTExfRElSRUNUSU9OLCB0cmFja0VsOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBzY3JvbGxMZWZ0ID0gdGhpcy5FbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgbGV0IHNjcm9sbFRvcCA9IHRoaXMuRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc3ViczogU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEV2ZW50Pih0aGlzLkVsZW1lbnQsICdzY3JvbGwnKS5waXBlKHRhcCgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuRWxlbWVudDtcblxuICAgICAgdGhpcy5vdXRTY3JvbGwuZW1pdChldmVudCk7XG4gICAgICBpZiAoc2Nyb2xsRGlyZWN0aW9uID09PSAnWCcpIHtcbiAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICYmICh0YXJnZXQuc2Nyb2xsTGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCA+PSB0YXJnZXQuc2Nyb2xsV2lkdGgpKSB7XG4gICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsV2lkdGggLSB0YXJnZXQub2Zmc2V0V2lkdGggLSAodGFyZ2V0Lm9mZnNldFdpZHRoIC0gdGFyZ2V0LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgIHRoaXMub3V0U2Nyb2xsWC5lbWl0KGV2ZW50KTtcblxuICAgICAgICB9XG4gICAgICAgIHNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxiYXJQb3NpdGlvbihzY3JvbGxEaXJlY3Rpb24pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsYmFyUG9zaXRpb24oc2Nyb2xsRGlyZWN0aW9uKTtcbiAgICAgIHNjcm9sbFRvcCA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgICB0aGlzLm91dFNjcm9sbFkuZW1pdChldmVudCk7XG5cbiAgICAgIGlmICh0YXJnZXQuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm91dFNjcm9sbFRvcC5lbWl0KGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxIZWlnaHQgPD0gdGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgKyAzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm91dFNjcm9sbEJvdHRvbS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG5cbiAgICBzdWJzLmFkZChmcm9tRXZlbnQodGhpcy5FbGVtZW50LCAncmVzaXplJykucGlwZSh0YXAodGhpcy51cGRhdGVTY3JvbGxiYXJTaXplLmJpbmQodGhpcywgc2Nyb2xsRGlyZWN0aW9uKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIHN1YnMuYWRkKGZyb21FdmVudCh0aGlzLkVsZW1lbnQsICdtb3VzZWVudGVyJykucGlwZSh0YXAoKCkgPT4ge1xuICAgICAgdHJhY2tFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgdHJhY2tFbC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgdGhpcy51cGRhdGVTY3JvbGxiYXJTaXplKHNjcm9sbERpcmVjdGlvbik7XG4gICAgfSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIHN1YnMuYWRkKGZyb21FdmVudCh0aGlzLkVsZW1lbnQsICdtb3VzZWxlYXZlJykucGlwZSh0YXAoKCkgPT4ge1xuICAgICAgdHJhY2tFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB0cmFja0VsLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgfSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgdGhpcy5zdWJzWCA9IHN1YnM7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsRGlyZWN0aW9uID09PSAnWScpIHtcbiAgICAgIHRoaXMuc3Vic1kgPSBzdWJzO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxiYXJTaXplKHNjcm9sbERpcmVjdGlvbjogVFlQRV9TQ1JPTExfRElSRUNUSU9OKSB7XG4gICAgaWYgKHNjcm9sbERpcmVjdGlvbiA9PT0gJ1gnKSB7XG4gICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRoaXMuRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICAgIGNvbnN0IHRodW1iV2lkdGggPSAoY29udGFpbmVyV2lkdGggLyBjb250ZW50V2lkdGgpICogKGNvbnRhaW5lcldpZHRoKTtcblxuICAgICAgdGhpcy50aHVtYlguc3R5bGUud2lkdGggPSBgJHt0aHVtYldpZHRofXB4YDtcbiAgICAgIHRoaXMudHJhY2tYLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBpZiAoY29udGVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy50cmFja1guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVNjcm9sbGJhclBvc2l0aW9uKHNjcm9sbERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB0aGlzLkVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB0aGlzLkVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IHRodW1iSGVpZ2h0ID0gKGNvbnRhaW5lckhlaWdodCAvIGNvbnRlbnRIZWlnaHQpICogKGNvbnRhaW5lckhlaWdodCk7XG5cbiAgICB0aGlzLnRodW1iWS5zdHlsZS5oZWlnaHQgPSBgJHt0aHVtYkhlaWdodCA8IDQwID8gNDAgOiB0aHVtYkhlaWdodH1weGA7XG4gICAgdGhpcy50cmFja1kuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBpZiAoY29udGVudEhlaWdodCA+IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgdGhpcy50cmFja1kuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTY3JvbGxiYXJQb3NpdGlvbignWScpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxiYXJQb3NpdGlvbihzY3JvbGxEaXJlY3Rpb246IFRZUEVfU0NST0xMX0RJUkVDVElPTikge1xuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLkVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLkVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy5FbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICBjb25zdCB0aHVtYlBvc2l0aW9uID0gKHNjcm9sbExlZnQgLyAoY29udGVudFdpZHRoIC0gY29udGFpbmVyV2lkdGgpKSAqIChjb250YWluZXJXaWR0aCAtIHRoaXMudGh1bWJYLm9mZnNldFdpZHRoKTtcblxuICAgICAgdGhpcy50aHVtYlguc3R5bGUubGVmdCA9IGAke3RodW1iUG9zaXRpb259cHhgO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHRoaXMuRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgY29udGVudEhlaWdodCA9IHRoaXMuRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5FbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCB0aHVtYlBvc2l0aW9uID0gKHNjcm9sbFRvcCAvIChjb250ZW50SGVpZ2h0IC0gY29udGFpbmVySGVpZ2h0KSkgKiAoY29udGFpbmVySGVpZ2h0IC0gdGhpcy50aHVtYlkub2Zmc2V0SGVpZ2h0KTtcblxuICAgIHRoaXMudGh1bWJZLnN0eWxlLnRvcCA9IGAke3RodW1iUG9zaXRpb259cHhgO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXZDb250YWluZXIucmVtb3ZlKCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyWCgpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyWSgpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufSJdfQ==
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLW92ZXJsYXkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL3Njcm9sbC1vdmVybGF5L3NyYy9zY3JvbGwtb3ZlcmxheS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU90RixNQUFNLE9BQU8sc0NBQXNDO0lBQ2pELGNBQWM7SUFDRyxNQUFNLEdBQUcsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnRGhDLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDWixLQUFLLENBQWdCO0lBQ3JCLEtBQUssQ0FBZ0I7SUFDckIsd0JBQXdCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMvQyx3QkFBd0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQy9DLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUM5RixjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxjQUFjLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBRSxxQkFBcUI7SUFDcEcsaUJBQWlCLEdBQUcsTUFBTSxDQUEr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QUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUVELElBQUksTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUUzQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVuSixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQzNELE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FB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IGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgSVNjcm9sbE92ZXJsYXlPcHRpb25zLCBUWVBFX1NDUk9MTF9ESVJFQ1RJT04gfSBmcm9tIFwiLi9zY3JvbGwuaW50ZXJmYWNlXCI7XG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpQ29tcG9uZW50c1Njcm9sbE92ZXJsYXlEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzU2Nyb2xsT3ZlcmxheURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qIFBST1BFUlRZICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVzID0gc2lnbmFsKGBcbiAgICAgIC5zY3JvbGxiYXItdHJhY2stWCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBoZWlnaHQ6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHZpc2liaWxpdHkgMC4zcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuc2Nyb2xsYmFyLXRodW1iLVgge1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNDREQwRDY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIC5zY3JvbGxiYXItdHJhY2stWSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UsIHZpc2liaWxpdHkgMC4zcyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuc2Nyb2xsYmFyLXRodW1iLVkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0NERDBENjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcztcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIH1cblxuICAgICAgLnNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5Q0EyQUQ7XG4gICAgICB9XG4gIGAsIHt9KS5hc1JlYWRvbmx5KCk7XG4gIHByaXZhdGUgc3Vic1g/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3Vic1k/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbXV0YXRpb25PYnNlcnZlclN1YmplY3RYID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyU3ViamVjdFkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNjcm9sbGJhcldpZHRoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LnNjcm9sbGJhcldpZHRoIHx8IDgpOyAvLyBDaGnhu4F1IHLhu5luZyB0aGFuaCBjdeG7mW5cbiAgcHJpdmF0ZSBzY3JvbGxiYXJDb2xvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpPy5zY3JvbGxiYXJDb2xvciB8fCAnI0NERDBENicpOyAgLy8gTcOgdSBz4bqvYyB0aGFuaCBjdeG7mW5cbiAgcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyWCA9IHNpZ25hbDxNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXJZID0gc2lnbmFsPE11dGF0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGl2Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhY2tYOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRodW1iWDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFja1k6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGh1bWJZOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLyogSU5QVVQgKi9cbiAgcmVhZG9ubHkgZGVidWdNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0NvbnRhaW5lciA9IGlucHV0PHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPignJywgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/ICcnIH0pO1xuICByZWFkb25seSBvcHRpb25zID0gaW5wdXQ8SVNjcm9sbE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkPihPYmplY3QuYXNzaWduKHt9KSk7XG5cbiAgLyogT1VUUFVUICovXG4gIHJlYWRvbmx5IG91dFNjcm9sbCA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsWCA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsWSA9IG91dHB1dDxFdmVudD4oKTtcbiAgcmVhZG9ubHkgb3V0U2Nyb2xsVG9wID0gb3V0cHV0PEV2ZW50PigpO1xuICByZWFkb25seSBvdXRTY3JvbGxCb3R0b20gPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgLyogSU5KRUNUICovXG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZW5kZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgIHRoaXMuZGl2Q29udGFpbmVyLmNsYXNzTmFtZSA9ICcnO1xuICAgICAgdGhpcy5jbGFzc0NvbnRhaW5lcigpPy5zcGxpdCgnICcpLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXZDb250YWluZXIuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgfSk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zPy5zY3JvbGxYICE9PSAnaGlkZGVuJykge1xuICAgICAgICAgIHRoaXMuc3Vic1g/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVTY3JvbGxiYXIoJ1gnLCB0aGlzLnRyYWNrWCwgdGhpcy50aHVtYlgpO1xuICAgICAgICAgIHRoaXMuYmluZEV2ZW50c1Njcm9sbEJhcignWCcsIHRoaXMudHJhY2tYKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLnN1YnNYPy5hZGQodGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdFgucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZS5iaW5kKHRoaXMsICdYJykpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJYLnNldChuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0WC5uZXh0KCkpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJYKCk/Lm9ic2VydmUodGhpcy5FbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zPy5zY3JvbGxZICE9PSAnaGlkZGVuJykge1xuICAgICAgICAgIHRoaXMuc3Vic1k/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVTY3JvbGxiYXIoJ1knLCB0aGlzLnRyYWNrWSwgdGhpcy50aHVtYlkpO1xuICAgICAgICAgIHRoaXMuYmluZEV2ZW50c1Njcm9sbEJhcignWScsIHRoaXMudHJhY2tZKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLnN1YnNZPy5hZGQodGhpcy5tdXRhdGlvbk9ic2VydmVyU3ViamVjdFkucGlwZShkZWJvdW5jZVRpbWUoMjUwKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZS5iaW5kKHRoaXMsICdZJykpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZLnNldChuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJTdWJqZWN0WS5uZXh0KCkpKTtcbiAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXJZKCk/Lm9ic2VydmUodGhpcy5FbGVtZW50LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyovXG4gIHByaXZhdGUgZ2V0IEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTY3JvbGxiYXIoc2Nyb2xsRGlyZWN0aW9uOiBUWVBFX1NDUk9MTF9ESVJFQ1RJT04sIHRyYWNrRWw6IEhUTUxFbGVtZW50LCB0aHVtYkVsOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGlkU3R5bGVUYWcgPSBcIiNpZC1zdHlsZS10YWctY3VzdG9tLXNjcm9sbC1vdmVybGF5XCJcbiAgICBjb25zdCBzdHlsZUVsQ3VzdG9tU2Nyb2xsT3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkU3R5bGVUYWcpO1xuXG4gICAgaWYgKCFzdHlsZUVsQ3VzdG9tU2Nyb2xsT3ZlcmxheSkge1xuICAgICAgY29uc3Qgc3R5bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICBzdHlsZUVsLnNldEF0dHJpYnV0ZSgnaWQnLCBpZFN0eWxlVGFnKTtcbiAgICAgIHN0eWxlRWwuaW5uZXJIVE1MID0gdGhpcy5zdHlsZXMoKTtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHN0eWxlRWwpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlc1Byb3BlcnR5ID0ge1xuICAgICAgXCJib3gtc2l6aW5nXCI6IFwiYm9yZGVyLWJveFwiLFxuICAgICAgXCJzY3JvbGxiYXItd2lkdGhcIjogXCJub25lXCIsXG4gICAgICBcInNjcm9sbGJhci1jb2xvclwiOiBcInRyYW5zcGFyZW50IHRyYW5zcGFyZW50XCIsXG4gICAgICBcIm92ZXJmbG93XCI6IFwiaGlkZGVuXCIsXG4gICAgICBcIm92ZXJmbG93LXhcIjogYCR7dGhpcy5vcHRpb25zKCk/LnNjcm9sbFggfHwgJ3Njcm9sbCd9YCxcbiAgICAgIFwib3ZlcmZsb3cteVwiOiBgJHt0aGlzLm9wdGlvbnMoKT8uc2Nyb2xsWSB8fCAnc2Nyb2xsJ31gXG4gICAgfSBhcyBhbnk7XG5cbiAgICBPYmplY3Qua2V5cyhzdHlsZXNQcm9wZXJ0eSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXIyLnNldFN0eWxlKHRoaXMuRWxlbWVudCwga2V5LCBzdHlsZXNQcm9wZXJ0eVtrZXldLCAxKTtcbiAgICB9KTtcblxuICAgIHRyYWNrRWwuY2xhc3NMaXN0LmFkZChgc2Nyb2xsYmFyLXRyYWNrLSR7c2Nyb2xsRGlyZWN0aW9ufWApO1xuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgdHJhY2tFbC5zdHlsZS53aWR0aCA9IGAxMDAlYDtcbiAgICAgIHRyYWNrRWwuc3R5bGUuaGVpZ2h0ID0gYCR7dGhpcy5zY3JvbGxiYXJXaWR0aCgpfXB4YDtcblxuICAgIH1cblxuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdZJykge1xuICAgICAgdHJhY2tFbC5zdHlsZS5oZWlnaHQgPSBgMTAwJWA7XG4gICAgICB0cmFja0VsLnN0eWxlLndpZHRoID0gYCR7dGhpcy5zY3JvbGxiYXJXaWR0aCgpfXB4YDtcbiAgICB9XG5cbiAgICB0aHVtYkVsLmNsYXNzTGlzdC5hZGQoYHNjcm9sbGJhci10aHVtYi0ke3Njcm9sbERpcmVjdGlvbn1gKTtcbiAgICB0aHVtYkVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuc2Nyb2xsYmFyQ29sb3IoKTtcbiAgICB0cmFja0VsLmFwcGVuZENoaWxkKHRodW1iRWwpO1xuICAgIGlmICh0aGlzLkVsZW1lbnQuY2xhc3NOYW1lKSB7XG4gICAgICB0aGlzLkVsZW1lbnQuY2xhc3NOYW1lLnNwbGl0KCcgJykuZm9yRWFjaCgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZSAmJiAoWyd3LWZ1bGwnLCAndy1zY3JlZW4nLCAnaC1mdWxsJywgJ2gtc2NyZWVuJ10uaW5jbHVkZXMoY2xhc3NOYW1lKSB8fCBjbGFzc05hbWUuaW5jbHVkZXMoJ21pbi1oLScpIHx8IGNsYXNzTmFtZS5pbmNsdWRlcygnbWluLXctJykgfHwgL14oIT8pKGh8dyktXFxbWzAtOV0rcHhcXF0kLy50ZXN0KGNsYXNzTmFtZSkpICYmICF0aGlzLmRpdkNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgIHRoaXMuZGl2Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICB9KTtcbiAgICAgIGlmICghdGhpcy5FbGVtZW50LmNsYXNzTmFtZS5pbmNsdWRlcygnbWluLWgtJykpIHtcbiAgICAgICAgdGhpcy5kaXZDb250YWluZXIuY2xhc3NMaXN0LmFkZCgnbWluLWgtMCcpO1xuXG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuRWxlbWVudC5jbGFzc05hbWUuaW5jbHVkZXMoJ21pbi13LScpKSB7XG4gICAgICAgIHRoaXMuZGl2Q29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21pbi13LTAnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kaXZDb250YWluZXIuYXBwZW5kQ2hpbGQodHJhY2tFbCk7XG5cbiAgICBpZiAoIXRoaXMuZGl2Q29udGFpbmVyLnN0eWxlLnBvc2l0aW9uKSB7XG4gICAgICB0aGlzLkVsZW1lbnQucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5kaXZDb250YWluZXIsIHRoaXMuRWxlbWVudCk7XG4gICAgICB0aGlzLmRpdkNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgfVxuICAgIHRoaXMuZGl2Q29udGFpbmVyLmFwcGVuZCh0aGlzLkVsZW1lbnQpO1xuICAgIHRoaXMudXBkYXRlU2Nyb2xsYmFyU2l6ZShzY3JvbGxEaXJlY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kRXZlbnRzU2Nyb2xsQmFyKHNjcm9sbERpcmVjdGlvbjogVFlQRV9TQ1JPTExfRElSRUNUSU9OLCB0cmFja0VsOiBIVE1MRWxlbWVudCkge1xuICAgIGxldCBzY3JvbGxMZWZ0ID0gdGhpcy5FbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgbGV0IHNjcm9sbFRvcCA9IHRoaXMuRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgY29uc3Qgc3ViczogU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEV2ZW50Pih0aGlzLkVsZW1lbnQsICdzY3JvbGwnKS5waXBlKHRhcCgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuRWxlbWVudDtcblxuICAgICAgdGhpcy5vdXRTY3JvbGwuZW1pdChldmVudCk7XG4gICAgICBpZiAoc2Nyb2xsRGlyZWN0aW9uID09PSAnWCcpIHtcbiAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxMZWZ0ICYmICh0YXJnZXQuc2Nyb2xsTGVmdCArIHRhcmdldC5vZmZzZXRXaWR0aCA+PSB0YXJnZXQuc2Nyb2xsV2lkdGgpKSB7XG4gICAgICAgICAgdGFyZ2V0LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsV2lkdGggLSB0YXJnZXQub2Zmc2V0V2lkdGggLSAodGFyZ2V0Lm9mZnNldFdpZHRoIC0gdGFyZ2V0LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQuc2Nyb2xsTGVmdCAhPT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgIHRoaXMub3V0U2Nyb2xsWC5lbWl0KGV2ZW50KTtcblxuICAgICAgICB9XG4gICAgICAgIHNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxiYXJQb3NpdGlvbihzY3JvbGxEaXJlY3Rpb24pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsYmFyUG9zaXRpb24oc2Nyb2xsRGlyZWN0aW9uKTtcbiAgICAgIHNjcm9sbFRvcCA9IHRhcmdldC5zY3JvbGxUb3A7XG4gICAgICB0aGlzLm91dFNjcm9sbFkuZW1pdChldmVudCk7XG5cbiAgICAgIGlmICh0YXJnZXQuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm91dFNjcm9sbFRvcC5lbWl0KGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5zY3JvbGxIZWlnaHQgPD0gdGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgKyAzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm91dFNjcm9sbEJvdHRvbS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9KSwgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG5cbiAgICBzdWJzLmFkZChmcm9tRXZlbnQodGhpcy5FbGVtZW50LCAncmVzaXplJykucGlwZSh0YXAodGhpcy51cGRhdGVTY3JvbGxiYXJTaXplLmJpbmQodGhpcywgc2Nyb2xsRGlyZWN0aW9uKSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIHN1YnMuYWRkKGZyb21FdmVudCh0aGlzLkVsZW1lbnQsICdtb3VzZWVudGVyJykucGlwZSh0YXAoKCkgPT4ge1xuICAgICAgdHJhY2tFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgdHJhY2tFbC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgdGhpcy51cGRhdGVTY3JvbGxiYXJTaXplKHNjcm9sbERpcmVjdGlvbik7XG4gICAgfSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIHN1YnMuYWRkKGZyb21FdmVudCh0aGlzLkVsZW1lbnQsICdtb3VzZWxlYXZlJykucGlwZSh0YXAoKCkgPT4ge1xuICAgICAgdHJhY2tFbC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICB0cmFja0VsLnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgfSksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgpKTtcblxuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgdGhpcy5zdWJzWCA9IHN1YnM7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2Nyb2xsRGlyZWN0aW9uID09PSAnWScpIHtcbiAgICAgIHRoaXMuc3Vic1kgPSBzdWJzO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxiYXJTaXplKHNjcm9sbERpcmVjdGlvbjogVFlQRV9TQ1JPTExfRElSRUNUSU9OKSB7XG4gICAgaWYgKHNjcm9sbERpcmVjdGlvbiA9PT0gJ1gnKSB7XG4gICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRoaXMuRWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICAgIGNvbnN0IHRodW1iV2lkdGggPSAoY29udGFpbmVyV2lkdGggLyBjb250ZW50V2lkdGgpICogKGNvbnRhaW5lcldpZHRoKTtcblxuICAgICAgdGhpcy50aHVtYlguc3R5bGUud2lkdGggPSBgJHt0aHVtYldpZHRofXB4YDtcbiAgICAgIHRoaXMudHJhY2tYLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICBpZiAoY29udGVudFdpZHRoID4gY29udGFpbmVyV2lkdGgpIHtcbiAgICAgICAgdGhpcy50cmFja1guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVNjcm9sbGJhclBvc2l0aW9uKHNjcm9sbERpcmVjdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXJIZWlnaHQgPSB0aGlzLkVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB0aGlzLkVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIGNvbnN0IHRodW1iSGVpZ2h0ID0gKGNvbnRhaW5lckhlaWdodCAvIGNvbnRlbnRIZWlnaHQpICogKGNvbnRhaW5lckhlaWdodCk7XG5cbiAgICB0aGlzLnRodW1iWS5zdHlsZS5oZWlnaHQgPSBgJHt0aHVtYkhlaWdodCA8IDQwID8gNDAgOiB0aHVtYkhlaWdodH1weGA7XG4gICAgdGhpcy50cmFja1kuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICBpZiAoY29udGVudEhlaWdodCA+IGNvbnRhaW5lckhlaWdodCkge1xuICAgICAgdGhpcy50cmFja1kuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTY3JvbGxiYXJQb3NpdGlvbignWScpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxiYXJQb3NpdGlvbihzY3JvbGxEaXJlY3Rpb246IFRZUEVfU0NST0xMX0RJUkVDVElPTikge1xuICAgIGlmIChzY3JvbGxEaXJlY3Rpb24gPT09ICdYJykge1xuICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLkVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLkVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy5FbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICBjb25zdCB0aHVtYlBvc2l0aW9uID0gKHNjcm9sbExlZnQgLyAoY29udGVudFdpZHRoIC0gY29udGFpbmVyV2lkdGgpKSAqIChjb250YWluZXJXaWR0aCAtIHRoaXMudGh1bWJYLm9mZnNldFdpZHRoKTtcblxuICAgICAgdGhpcy50aHVtYlguc3R5bGUubGVmdCA9IGAke3RodW1iUG9zaXRpb259cHhgO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHRoaXMuRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgY29udGVudEhlaWdodCA9IHRoaXMuRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5FbGVtZW50LnNjcm9sbFRvcDtcbiAgICBjb25zdCB0aHVtYlBvc2l0aW9uID0gKHNjcm9sbFRvcCAvIChjb250ZW50SGVpZ2h0IC0gY29udGFpbmVySGVpZ2h0KSkgKiAoY29udGFpbmVySGVpZ2h0IC0gdGhpcy50aHVtYlkub2Zmc2V0SGVpZ2h0KTtcblxuICAgIHRoaXMudGh1bWJZLnN0eWxlLnRvcCA9IGAke3RodW1iUG9zaXRpb259cHhgO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaXZDb250YWluZXIucmVtb3ZlKCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyWCgpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyWSgpPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxufSJdfQ==
|
|
@@ -151,10 +151,16 @@ class LibsUiComponentsScrollOverlayDirective {
|
|
|
151
151
|
trackEl.appendChild(thumbEl);
|
|
152
152
|
if (this.Element.className) {
|
|
153
153
|
this.Element.className.split(' ').forEach((className) => {
|
|
154
|
-
if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || /^(!?)(h|w)-\[[0-9]+px\]$/.test(className)) && !this.divContainer.classList.contains(className)) {
|
|
154
|
+
if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || className.includes('min-h-') || className.includes('min-w-') || /^(!?)(h|w)-\[[0-9]+px\]$/.test(className)) && !this.divContainer.classList.contains(className)) {
|
|
155
155
|
this.divContainer.classList.add(className);
|
|
156
156
|
}
|
|
157
157
|
});
|
|
158
|
+
if (!this.Element.className.includes('min-h-')) {
|
|
159
|
+
this.divContainer.classList.add('min-h-0');
|
|
160
|
+
}
|
|
161
|
+
if (!this.Element.className.includes('min-w-')) {
|
|
162
|
+
this.divContainer.classList.add('min-w-0');
|
|
163
|
+
}
|
|
158
164
|
}
|
|
159
165
|
this.divContainer.appendChild(trackEl);
|
|
160
166
|
if (!this.divContainer.style.position) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-scroll-overlay.mjs","sources":["../../../../../libs-ui/components/scroll-overlay/src/scroll-overlay.directive.ts","../../../../../libs-ui/components/scroll-overlay/src/scroll.interface.ts","../../../../../libs-ui/components/scroll-overlay/src/libs-ui-components-scroll-overlay.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, OnDestroy, Renderer2, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { Subject, Subscription, debounceTime, fromEvent, takeUntil, tap } from \"rxjs\";\nimport { IScrollOverlayOptions, TYPE_SCROLL_DIRECTION } from \"./scroll.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsScrollOverlayDirective]',\n standalone: true\n})\nexport class LibsUiComponentsScrollOverlayDirective implements OnDestroy {\n /* PROPERTY */\n private readonly styles = signal(`\n .scrollbar-track-X {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 8px;\n pointer-events: none;\n visibility: hidden;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb-X {\n height: 100%;\n background-color: #CDD0D6;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.3s;\n pointer-events: auto;\n position: absolute;\n }\n \n .scrollbar-track-Y {\n position: absolute;\n top: 0;\n right: 0;\n width: 8px;\n pointer-events: none;\n visibility: hidden;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb-Y {\n width: 100%;\n background-color: #CDD0D6;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.3s;\n pointer-events: auto;\n position: absolute;\n }\n\n .scrollbar-thumb:hover {\n background-color: #9CA2AD;\n }\n `, {}).asReadonly();\n private subsX?: Subscription;\n private subsY?: Subscription;\n private mutationObserverSubjectX = new Subject<void>();\n private mutationObserverSubjectY = new Subject<void>();\n private scrollbarWidth = computed(() => this.options()?.scrollbarWidth || 8); // Chiều rộng thanh cuộn\n private scrollbarColor = computed(() => this.options()?.scrollbarColor || '#CDD0D6'); // Màu sắc thanh cuộn\n private mutationObserverX = signal<MutationObserver | undefined>(undefined);\n private mutationObserverY = signal<MutationObserver | undefined>(undefined);\n private readonly divContainer = document.createElement('div');\n private readonly trackX: HTMLElement = document.createElement('div');\n private readonly thumbX: HTMLElement = document.createElement('div');\n private readonly trackY: HTMLElement = document.createElement('div');\n private readonly thumbY: HTMLElement = document.createElement('div');\n private readonly onDestroy = new Subject<void>();\n\n /* INPUT */\n readonly debugMode = input<boolean>(false);\n readonly classContainer = input<string, string | undefined>('', { transform: value => value ?? '' });\n readonly options = input<IScrollOverlayOptions | undefined>(Object.assign({}));\n\n /* OUTPUT */\n readonly outScroll = output<Event>();\n readonly outScrollX = output<Event>();\n readonly outScrollY = output<Event>();\n readonly outScrollTop = output<Event>();\n readonly outScrollBottom = output<Event>();\n\n /* INJECT */\n private element = inject(ElementRef);\n private render2 = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const options = this.options();\n this.divContainer.className = '';\n this.classContainer()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.divContainer.classList.add(className);\n });\n\n untracked(() => {\n if (options?.scrollX !== 'hidden') {\n this.subsX?.unsubscribe();\n this.createScrollbar('X', this.trackX, this.thumbX);\n this.bindEventsScrollBar('X', this.trackX);\n this.mutationObserverY()?.disconnect();\n this.subsX?.add(this.mutationObserverSubjectX.pipe(debounceTime(250)).subscribe(this.updateScrollbarSize.bind(this, 'X')));\n this.mutationObserverX.set(new MutationObserver(() => this.mutationObserverSubjectX.next()));\n this.mutationObserverX()?.observe(this.Element, { attributes: true, childList: true, subtree: true });\n }\n\n if (options?.scrollY !== 'hidden') {\n this.subsY?.unsubscribe();\n this.createScrollbar('Y', this.trackY, this.thumbY);\n this.bindEventsScrollBar('Y', this.trackY);\n this.mutationObserverY()?.disconnect();\n this.subsY?.add(this.mutationObserverSubjectY.pipe(debounceTime(250)).subscribe(this.updateScrollbarSize.bind(this, 'Y')));\n this.mutationObserverY.set(new MutationObserver(() => this.mutationObserverSubjectY.next()));\n this.mutationObserverY()?.observe(this.Element, { attributes: true, childList: true, subtree: true });\n }\n });\n\n });\n }\n\n /* FUNCTIONS*/\n private get Element() {\n return this.element.nativeElement;\n }\n\n private createScrollbar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement, thumbEl: HTMLElement) {\n const idStyleTag = \"#id-style-tag-custom-scroll-overlay\"\n const styleElCustomScrollOverlay = document.getElementById(idStyleTag);\n\n if (!styleElCustomScrollOverlay) {\n const styleEl = document.createElement('style');\n styleEl.setAttribute('id', idStyleTag);\n styleEl.innerHTML = this.styles();\n document.head.append(styleEl);\n }\n\n const stylesProperty = {\n \"box-sizing\": \"border-box\",\n \"scrollbar-width\": \"none\",\n \"scrollbar-color\": \"transparent transparent\",\n \"overflow\": \"hidden\",\n \"overflow-x\": `${this.options()?.scrollX || 'scroll'}`,\n \"overflow-y\": `${this.options()?.scrollY || 'scroll'}`\n } as any;\n\n Object.keys(stylesProperty).forEach(key => {\n this.render2.setStyle(this.Element, key, stylesProperty[key], 1);\n });\n\n trackEl.classList.add(`scrollbar-track-${scrollDirection}`);\n if (scrollDirection === 'X') {\n trackEl.style.width = `100%`;\n trackEl.style.height = `${this.scrollbarWidth()}px`;\n\n }\n\n if (scrollDirection === 'Y') {\n trackEl.style.height = `100%`;\n trackEl.style.width = `${this.scrollbarWidth()}px`;\n }\n\n thumbEl.classList.add(`scrollbar-thumb-${scrollDirection}`);\n thumbEl.style.backgroundColor = this.scrollbarColor();\n trackEl.appendChild(thumbEl);\n if (this.Element.className) {\n this.Element.className.split(' ').forEach((className: string) => {\n if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || /^(!?)(h|w)-\\[[0-9]+px\\]$/.test(className)) && !this.divContainer.classList.contains(className)) {\n this.divContainer.classList.add(className);\n }\n });\n }\n this.divContainer.appendChild(trackEl);\n\n if (!this.divContainer.style.position) {\n this.Element.parentElement.insertBefore(this.divContainer, this.Element);\n this.divContainer.style.position = 'relative';\n }\n this.divContainer.append(this.Element);\n this.updateScrollbarSize(scrollDirection);\n }\n\n private bindEventsScrollBar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement) {\n let scrollLeft = this.Element.scrollLeft;\n let scrollTop = this.Element.scrollTop;\n const subs: Subscription = fromEvent<Event>(this.Element, 'scroll').pipe(tap((event) => {\n const target = this.Element;\n\n this.outScroll.emit(event);\n if (scrollDirection === 'X') {\n if (target.scrollLeft && (target.scrollLeft + target.offsetWidth >= target.scrollWidth)) {\n target.scrollLeft = target.scrollWidth - target.offsetWidth - (target.offsetWidth - target.clientWidth);\n }\n\n if (target.scrollLeft !== scrollLeft) {\n this.outScrollX.emit(event);\n\n }\n scrollLeft = target.scrollLeft;\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n if (target.scrollTop === scrollTop) {\n return\n }\n this.updateScrollbarPosition(scrollDirection);\n scrollTop = target.scrollTop;\n this.outScrollY.emit(event);\n\n if (target.scrollTop === 0) {\n return this.outScrollTop.emit(event);\n }\n\n if (target.scrollHeight <= target.scrollTop + target.offsetHeight + 3) {\n return this.outScrollBottom.emit(event);\n }\n }), takeUntil(this.onDestroy)).subscribe();\n\n subs.add(fromEvent(this.Element, 'resize').pipe(tap(this.updateScrollbarSize.bind(this, scrollDirection)), takeUntil(this.onDestroy)).subscribe());\n\n subs.add(fromEvent(this.Element, 'mouseenter').pipe(tap(() => {\n trackEl.style.visibility = 'visible';\n trackEl.style.opacity = '1';\n this.updateScrollbarSize(scrollDirection);\n }), takeUntil(this.onDestroy)).subscribe());\n\n subs.add(fromEvent(this.Element, 'mouseleave').pipe(tap(() => {\n trackEl.style.visibility = 'hidden';\n trackEl.style.opacity = '0';\n }), takeUntil(this.onDestroy)).subscribe());\n\n if (scrollDirection === 'X') {\n this.subsX = subs;\n\n return;\n }\n\n if (scrollDirection === 'Y') {\n this.subsY = subs;\n\n return;\n }\n }\n\n private updateScrollbarSize(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = this.Element.scrollWidth;\n const thumbWidth = (containerWidth / contentWidth) * (containerWidth);\n\n this.thumbX.style.width = `${thumbWidth}px`;\n this.trackX.style.display = 'none';\n if (contentWidth > containerWidth) {\n this.trackX.style.display = 'block';\n }\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = this.Element.scrollHeight;\n const thumbHeight = (containerHeight / contentHeight) * (containerHeight);\n\n this.thumbY.style.height = `${thumbHeight < 40 ? 40 : thumbHeight}px`;\n this.trackY.style.display = 'none';\n if (contentHeight > containerHeight) {\n this.trackY.style.display = 'block';\n }\n\n this.updateScrollbarPosition('Y');\n }\n\n private updateScrollbarPosition(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = this.Element.scrollWidth;\n const scrollLeft = this.Element.scrollLeft;\n const thumbPosition = (scrollLeft / (contentWidth - containerWidth)) * (containerWidth - this.thumbX.offsetWidth);\n\n this.thumbX.style.left = `${thumbPosition}px`;\n\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = this.Element.scrollHeight;\n const scrollTop = this.Element.scrollTop;\n const thumbPosition = (scrollTop / (contentHeight - containerHeight)) * (containerHeight - this.thumbY.offsetHeight);\n\n this.thumbY.style.top = `${thumbPosition}px`;\n }\n\n ngOnDestroy(): void {\n this.divContainer.remove();\n this.mutationObserverX()?.disconnect();\n this.mutationObserverY()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","export type TYPE_SCROLL_DIRECTION = 'X' | 'Y';\nexport type TYPE_SCROLL_OVERFLOW = 'hidden' | 'scroll';\nexport interface IScrollOverlayOptions {\n scrollbarWidth?: number;\n scrollbarColor?: string;\n scrollX?: TYPE_SCROLL_OVERFLOW,\n scrollY?: TYPE_SCROLL_OVERFLOW\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-scroll-overlay.mjs","sources":["../../../../../libs-ui/components/scroll-overlay/src/scroll-overlay.directive.ts","../../../../../libs-ui/components/scroll-overlay/src/scroll.interface.ts","../../../../../libs-ui/components/scroll-overlay/src/libs-ui-components-scroll-overlay.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Directive, ElementRef, OnDestroy, Renderer2, computed, effect, inject, input, output, signal, untracked } from \"@angular/core\";\nimport { Subject, Subscription, debounceTime, fromEvent, takeUntil, tap } from \"rxjs\";\nimport { IScrollOverlayOptions, TYPE_SCROLL_DIRECTION } from \"./scroll.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[LibsUiComponentsScrollOverlayDirective]',\n standalone: true\n})\nexport class LibsUiComponentsScrollOverlayDirective implements OnDestroy {\n /* PROPERTY */\n private readonly styles = signal(`\n .scrollbar-track-X {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 8px;\n pointer-events: none;\n visibility: hidden;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb-X {\n height: 100%;\n background-color: #CDD0D6;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.3s;\n pointer-events: auto;\n position: absolute;\n }\n \n .scrollbar-track-Y {\n position: absolute;\n top: 0;\n right: 0;\n width: 8px;\n pointer-events: none;\n visibility: hidden;\n opacity: 0;\n z-index: 1;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .scrollbar-thumb-Y {\n width: 100%;\n background-color: #CDD0D6;\n border-radius: 4px;\n cursor: pointer;\n transition: background-color 0.3s;\n pointer-events: auto;\n position: absolute;\n }\n\n .scrollbar-thumb:hover {\n background-color: #9CA2AD;\n }\n `, {}).asReadonly();\n private subsX?: Subscription;\n private subsY?: Subscription;\n private mutationObserverSubjectX = new Subject<void>();\n private mutationObserverSubjectY = new Subject<void>();\n private scrollbarWidth = computed(() => this.options()?.scrollbarWidth || 8); // Chiều rộng thanh cuộn\n private scrollbarColor = computed(() => this.options()?.scrollbarColor || '#CDD0D6'); // Màu sắc thanh cuộn\n private mutationObserverX = signal<MutationObserver | undefined>(undefined);\n private mutationObserverY = signal<MutationObserver | undefined>(undefined);\n private readonly divContainer = document.createElement('div');\n private readonly trackX: HTMLElement = document.createElement('div');\n private readonly thumbX: HTMLElement = document.createElement('div');\n private readonly trackY: HTMLElement = document.createElement('div');\n private readonly thumbY: HTMLElement = document.createElement('div');\n private readonly onDestroy = new Subject<void>();\n\n /* INPUT */\n readonly debugMode = input<boolean>(false);\n readonly classContainer = input<string, string | undefined>('', { transform: value => value ?? '' });\n readonly options = input<IScrollOverlayOptions | undefined>(Object.assign({}));\n\n /* OUTPUT */\n readonly outScroll = output<Event>();\n readonly outScrollX = output<Event>();\n readonly outScrollY = output<Event>();\n readonly outScrollTop = output<Event>();\n readonly outScrollBottom = output<Event>();\n\n /* INJECT */\n private element = inject(ElementRef);\n private render2 = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const options = this.options();\n this.divContainer.className = '';\n this.classContainer()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.divContainer.classList.add(className);\n });\n\n untracked(() => {\n if (options?.scrollX !== 'hidden') {\n this.subsX?.unsubscribe();\n this.createScrollbar('X', this.trackX, this.thumbX);\n this.bindEventsScrollBar('X', this.trackX);\n this.mutationObserverY()?.disconnect();\n this.subsX?.add(this.mutationObserverSubjectX.pipe(debounceTime(250)).subscribe(this.updateScrollbarSize.bind(this, 'X')));\n this.mutationObserverX.set(new MutationObserver(() => this.mutationObserverSubjectX.next()));\n this.mutationObserverX()?.observe(this.Element, { attributes: true, childList: true, subtree: true });\n }\n\n if (options?.scrollY !== 'hidden') {\n this.subsY?.unsubscribe();\n this.createScrollbar('Y', this.trackY, this.thumbY);\n this.bindEventsScrollBar('Y', this.trackY);\n this.mutationObserverY()?.disconnect();\n this.subsY?.add(this.mutationObserverSubjectY.pipe(debounceTime(250)).subscribe(this.updateScrollbarSize.bind(this, 'Y')));\n this.mutationObserverY.set(new MutationObserver(() => this.mutationObserverSubjectY.next()));\n this.mutationObserverY()?.observe(this.Element, { attributes: true, childList: true, subtree: true });\n }\n });\n\n });\n }\n\n /* FUNCTIONS*/\n private get Element() {\n return this.element.nativeElement;\n }\n\n private createScrollbar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement, thumbEl: HTMLElement) {\n const idStyleTag = \"#id-style-tag-custom-scroll-overlay\"\n const styleElCustomScrollOverlay = document.getElementById(idStyleTag);\n\n if (!styleElCustomScrollOverlay) {\n const styleEl = document.createElement('style');\n styleEl.setAttribute('id', idStyleTag);\n styleEl.innerHTML = this.styles();\n document.head.append(styleEl);\n }\n\n const stylesProperty = {\n \"box-sizing\": \"border-box\",\n \"scrollbar-width\": \"none\",\n \"scrollbar-color\": \"transparent transparent\",\n \"overflow\": \"hidden\",\n \"overflow-x\": `${this.options()?.scrollX || 'scroll'}`,\n \"overflow-y\": `${this.options()?.scrollY || 'scroll'}`\n } as any;\n\n Object.keys(stylesProperty).forEach(key => {\n this.render2.setStyle(this.Element, key, stylesProperty[key], 1);\n });\n\n trackEl.classList.add(`scrollbar-track-${scrollDirection}`);\n if (scrollDirection === 'X') {\n trackEl.style.width = `100%`;\n trackEl.style.height = `${this.scrollbarWidth()}px`;\n\n }\n\n if (scrollDirection === 'Y') {\n trackEl.style.height = `100%`;\n trackEl.style.width = `${this.scrollbarWidth()}px`;\n }\n\n thumbEl.classList.add(`scrollbar-thumb-${scrollDirection}`);\n thumbEl.style.backgroundColor = this.scrollbarColor();\n trackEl.appendChild(thumbEl);\n if (this.Element.className) {\n this.Element.className.split(' ').forEach((className: string) => {\n if (className && (['w-full', 'w-screen', 'h-full', 'h-screen'].includes(className) || className.includes('min-h-') || className.includes('min-w-') || /^(!?)(h|w)-\\[[0-9]+px\\]$/.test(className)) && !this.divContainer.classList.contains(className)) {\n this.divContainer.classList.add(className);\n }\n\n });\n if (!this.Element.className.includes('min-h-')) {\n this.divContainer.classList.add('min-h-0');\n\n }\n if (!this.Element.className.includes('min-w-')) {\n this.divContainer.classList.add('min-w-0');\n }\n }\n this.divContainer.appendChild(trackEl);\n\n if (!this.divContainer.style.position) {\n this.Element.parentElement.insertBefore(this.divContainer, this.Element);\n this.divContainer.style.position = 'relative';\n }\n this.divContainer.append(this.Element);\n this.updateScrollbarSize(scrollDirection);\n }\n\n private bindEventsScrollBar(scrollDirection: TYPE_SCROLL_DIRECTION, trackEl: HTMLElement) {\n let scrollLeft = this.Element.scrollLeft;\n let scrollTop = this.Element.scrollTop;\n const subs: Subscription = fromEvent<Event>(this.Element, 'scroll').pipe(tap((event) => {\n const target = this.Element;\n\n this.outScroll.emit(event);\n if (scrollDirection === 'X') {\n if (target.scrollLeft && (target.scrollLeft + target.offsetWidth >= target.scrollWidth)) {\n target.scrollLeft = target.scrollWidth - target.offsetWidth - (target.offsetWidth - target.clientWidth);\n }\n\n if (target.scrollLeft !== scrollLeft) {\n this.outScrollX.emit(event);\n\n }\n scrollLeft = target.scrollLeft;\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n if (target.scrollTop === scrollTop) {\n return\n }\n this.updateScrollbarPosition(scrollDirection);\n scrollTop = target.scrollTop;\n this.outScrollY.emit(event);\n\n if (target.scrollTop === 0) {\n return this.outScrollTop.emit(event);\n }\n\n if (target.scrollHeight <= target.scrollTop + target.offsetHeight + 3) {\n return this.outScrollBottom.emit(event);\n }\n }), takeUntil(this.onDestroy)).subscribe();\n\n subs.add(fromEvent(this.Element, 'resize').pipe(tap(this.updateScrollbarSize.bind(this, scrollDirection)), takeUntil(this.onDestroy)).subscribe());\n\n subs.add(fromEvent(this.Element, 'mouseenter').pipe(tap(() => {\n trackEl.style.visibility = 'visible';\n trackEl.style.opacity = '1';\n this.updateScrollbarSize(scrollDirection);\n }), takeUntil(this.onDestroy)).subscribe());\n\n subs.add(fromEvent(this.Element, 'mouseleave').pipe(tap(() => {\n trackEl.style.visibility = 'hidden';\n trackEl.style.opacity = '0';\n }), takeUntil(this.onDestroy)).subscribe());\n\n if (scrollDirection === 'X') {\n this.subsX = subs;\n\n return;\n }\n\n if (scrollDirection === 'Y') {\n this.subsY = subs;\n\n return;\n }\n }\n\n private updateScrollbarSize(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = this.Element.scrollWidth;\n const thumbWidth = (containerWidth / contentWidth) * (containerWidth);\n\n this.thumbX.style.width = `${thumbWidth}px`;\n this.trackX.style.display = 'none';\n if (contentWidth > containerWidth) {\n this.trackX.style.display = 'block';\n }\n this.updateScrollbarPosition(scrollDirection);\n\n return;\n }\n\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = this.Element.scrollHeight;\n const thumbHeight = (containerHeight / contentHeight) * (containerHeight);\n\n this.thumbY.style.height = `${thumbHeight < 40 ? 40 : thumbHeight}px`;\n this.trackY.style.display = 'none';\n if (contentHeight > containerHeight) {\n this.trackY.style.display = 'block';\n }\n\n this.updateScrollbarPosition('Y');\n }\n\n private updateScrollbarPosition(scrollDirection: TYPE_SCROLL_DIRECTION) {\n if (scrollDirection === 'X') {\n const containerWidth = this.Element.offsetWidth;\n const contentWidth = this.Element.scrollWidth;\n const scrollLeft = this.Element.scrollLeft;\n const thumbPosition = (scrollLeft / (contentWidth - containerWidth)) * (containerWidth - this.thumbX.offsetWidth);\n\n this.thumbX.style.left = `${thumbPosition}px`;\n\n return;\n }\n const containerHeight = this.Element.offsetHeight;\n const contentHeight = this.Element.scrollHeight;\n const scrollTop = this.Element.scrollTop;\n const thumbPosition = (scrollTop / (contentHeight - containerHeight)) * (containerHeight - this.thumbY.offsetHeight);\n\n this.thumbY.style.top = `${thumbPosition}px`;\n }\n\n ngOnDestroy(): void {\n this.divContainer.remove();\n this.mutationObserverX()?.disconnect();\n this.mutationObserverY()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}","export type TYPE_SCROLL_DIRECTION = 'X' | 'Y';\nexport type TYPE_SCROLL_OVERFLOW = 'hidden' | 'scroll';\nexport interface IScrollOverlayOptions {\n scrollbarWidth?: number;\n scrollbarColor?: string;\n scrollX?: TYPE_SCROLL_OVERFLOW,\n scrollY?: TYPE_SCROLL_OVERFLOW\n};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|