Changing front

This commit is contained in:
ewandor committed 2023-01-16 17:49:38 +01:00
1 parent 0b8a93b256
commit 4fe4be7730
48586 files changed
+4725790 -17464

No files matched your search

@@ -0,0 +1,19 @@
import { Directive, ElementRef, Renderer2 } from '@angular/core';
export class ForceNativeScrollDirective {
constructor(renderer, el) {
this.renderer = renderer;
['ps__child', 'ps__child--consume'].forEach((className) => {
this.renderer.addClass(el === null || el === void 0 ? void 0 : el.nativeElement, className);
});
}
}
ForceNativeScrollDirective.decorators = [
{ type: Directive, args: [{
selector: '[forceNativeScrolling]'
},] }
];
ForceNativeScrollDirective.ctorParameters = () => [
{ type: Renderer2 },
{ type: ElementRef }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdC1zY3JvbGxiYXItZm9yY2UtbmF0aXZlLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9saWIvc3JjL2xpYi9wZXJmZWN0LXNjcm9sbGJhci1mb3JjZS1uYXRpdmUtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLakUsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxZQUFvQixRQUFtQixFQUFFLEVBQWM7UUFBbkMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQyxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBRixFQUFFLHVCQUFGLEVBQUUsQ0FBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFURixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjthQUNuQzs7O1lBSitCLFNBQVM7WUFBckIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb3JjZU5hdGl2ZVNjcm9sbGluZ10nXG59KVxuZXhwb3J0IGNsYXNzIEZvcmNlTmF0aXZlU2Nyb2xsRGlyZWN0aXZlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgWydwc19fY2hpbGQnLCAncHNfX2NoaWxkLS1jb25zdW1lJ10uZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsPy5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,227 @@
import { Subject, merge, fromEvent } from 'rxjs';
import { mapTo, takeUntil, distinctUntilChanged } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { NgZone, Inject, Component, Input, Output, EventEmitter, HostBinding, ViewChild, ViewEncapsulation, ChangeDetectorRef } from '@angular/core';
import { PerfectScrollbarDirective } from './perfect-scrollbar.directive';
import { PerfectScrollbarEvents } from './perfect-scrollbar.interfaces';
export class PerfectScrollbarComponent {
constructor(zone, cdRef, platformId) {
this.zone = zone;
this.cdRef = cdRef;
this.platformId = platformId;
this.states = {};
this.indicatorX = false;
this.indicatorY = false;
this.interaction = false;
this.scrollPositionX = 0;
this.scrollPositionY = 0;
this.scrollDirectionX = 0;
this.scrollDirectionY = 0;
this.usePropagationX = false;
this.usePropagationY = false;
this.allowPropagationX = false;
this.allowPropagationY = false;
this.stateTimeout = null;
this.ngDestroy = new Subject();
this.stateUpdate = new Subject();
this.disabled = false;
this.usePSClass = true;
this.autoPropagation = false;
this.scrollIndicators = false;
this.psScrollY = new EventEmitter();
this.psScrollX = new EventEmitter();
this.psScrollUp = new EventEmitter();
this.psScrollDown = new EventEmitter();
this.psScrollLeft = new EventEmitter();
this.psScrollRight = new EventEmitter();
this.psYReachEnd = new EventEmitter();
this.psYReachStart = new EventEmitter();
this.psXReachEnd = new EventEmitter();
this.psXReachStart = new EventEmitter();
}
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
this.stateUpdate
.pipe(takeUntil(this.ngDestroy), distinctUntilChanged((a, b) => (a === b && !this.stateTimeout)))
.subscribe((state) => {
if (this.stateTimeout && typeof window !== 'undefined') {
window.clearTimeout(this.stateTimeout);
this.stateTimeout = null;
}
if (state === 'x' || state === 'y') {
this.interaction = false;
if (state === 'x') {
this.indicatorX = false;
this.states.left = false;
this.states.right = false;
if (this.autoPropagation && this.usePropagationX) {
this.allowPropagationX = false;
}
}
else if (state === 'y') {
this.indicatorY = false;
this.states.top = false;
this.states.bottom = false;
if (this.autoPropagation && this.usePropagationY) {
this.allowPropagationY = false;
}
}
}
else {
if (state === 'left' || state === 'right') {
this.states.left = false;
this.states.right = false;
this.states[state] = true;
if (this.autoPropagation && this.usePropagationX) {
this.indicatorX = true;
}
}
else if (state === 'top' || state === 'bottom') {
this.states.top = false;
this.states.bottom = false;
this.states[state] = true;
if (this.autoPropagation && this.usePropagationY) {
this.indicatorY = true;
}
}
if (this.autoPropagation && typeof window !== 'undefined') {
this.stateTimeout = window.setTimeout(() => {
this.indicatorX = false;
this.indicatorY = false;
this.stateTimeout = null;
if (this.interaction && (this.states.left || this.states.right)) {
this.allowPropagationX = true;
}
if (this.interaction && (this.states.top || this.states.bottom)) {
this.allowPropagationY = true;
}
this.cdRef.markForCheck();
}, 500);
}
}
this.cdRef.markForCheck();
this.cdRef.detectChanges();
});
this.zone.runOutsideAngular(() => {
if (this.directiveRef) {
const element = this.directiveRef.elementRef.nativeElement;
fromEvent(element, 'wheel')
.pipe(takeUntil(this.ngDestroy))
.subscribe((event) => {
if (!this.disabled && this.autoPropagation) {
const scrollDeltaX = event.deltaX;
const scrollDeltaY = event.deltaY;
this.checkPropagation(event, scrollDeltaX, scrollDeltaY);
}
});
fromEvent(element, 'touchmove')
.pipe(takeUntil(this.ngDestroy))
.subscribe((event) => {
if (!this.disabled && this.autoPropagation) {
const scrollPositionX = event.touches[0].clientX;
const scrollPositionY = event.touches[0].clientY;
const scrollDeltaX = scrollPositionX - this.scrollPositionX;
const scrollDeltaY = scrollPositionY - this.scrollPositionY;
this.checkPropagation(event, scrollDeltaX, scrollDeltaY);
this.scrollPositionX = scrollPositionX;
this.scrollPositionY = scrollPositionY;
}
});
merge(fromEvent(element, 'ps-scroll-x')
.pipe(mapTo('x')), fromEvent(element, 'ps-scroll-y')
.pipe(mapTo('y')), fromEvent(element, 'ps-x-reach-end')
.pipe(mapTo('right')), fromEvent(element, 'ps-y-reach-end')
.pipe(mapTo('bottom')), fromEvent(element, 'ps-x-reach-start')
.pipe(mapTo('left')), fromEvent(element, 'ps-y-reach-start')
.pipe(mapTo('top')))
.pipe(takeUntil(this.ngDestroy))
.subscribe((state) => {
if (!this.disabled && (this.autoPropagation || this.scrollIndicators)) {
this.stateUpdate.next(state);
}
});
}
});
window.setTimeout(() => {
PerfectScrollbarEvents.forEach((eventName) => {
if (this.directiveRef) {
this.directiveRef[eventName] = this[eventName];
}
});
}, 0);
}
}
ngOnDestroy() {
if (isPlatformBrowser(this.platformId)) {
this.ngDestroy.next();
this.ngDestroy.unsubscribe();
if (this.stateTimeout && typeof window !== 'undefined') {
window.clearTimeout(this.stateTimeout);
}
}
}
ngDoCheck() {
if (isPlatformBrowser(this.platformId)) {
if (!this.disabled && this.autoPropagation && this.directiveRef) {
const element = this.directiveRef.elementRef.nativeElement;
this.usePropagationX = element.classList.contains('ps--active-x');
this.usePropagationY = element.classList.contains('ps--active-y');
}
}
}
checkPropagation(event, deltaX, deltaY) {
this.interaction = true;
const scrollDirectionX = (deltaX < 0) ? -1 : 1;
const scrollDirectionY = (deltaY < 0) ? -1 : 1;
if ((this.usePropagationX && this.usePropagationY) ||
(this.usePropagationX && (!this.allowPropagationX ||
(this.scrollDirectionX !== scrollDirectionX))) ||
(this.usePropagationY && (!this.allowPropagationY ||
(this.scrollDirectionY !== scrollDirectionY)))) {
event.preventDefault();
event.stopPropagation();
}
if (!!deltaX) {
this.scrollDirectionX = scrollDirectionX;
}
if (!!deltaY) {
this.scrollDirectionY = scrollDirectionY;
}
this.stateUpdate.next('interaction');
this.cdRef.detectChanges();
}
}
PerfectScrollbarComponent.decorators = [
{ type: Component, args: [{
selector: 'perfect-scrollbar',
exportAs: 'ngxPerfectScrollbar',
template: "<div style=\"position: static;\" [class.ps]=\"usePSClass\" [perfectScrollbar]=\"config\" [disabled]=\"disabled\">\n <div class=\"ps-content\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"scrollIndicators\" class=\"ps-overlay\" [class.ps-at-top]=\"states.top\" [class.ps-at-left]=\"states.left\" [class.ps-at-right]=\"states.right\" [class.ps-at-bottom]=\"states.bottom\">\n <div class=\"ps-indicator-top\" [class.ps-indicator-show]=\"indicatorY && interaction\"></div>\n <div class=\"ps-indicator-left\" [class.ps-indicator-show]=\"indicatorX && interaction\"></div>\n <div class=\"ps-indicator-right\" [class.ps-indicator-show]=\"indicatorX && interaction\"></div>\n <div class=\"ps-indicator-bottom\" [class.ps-indicator-show]=\"indicatorY && interaction\"></div>\n </div>\n</div>\n",
encapsulation: ViewEncapsulation.None,
styles: ["perfect-scrollbar{display:block;height:100%;max-height:100%;max-width:100%;overflow:hidden;position:relative;width:100%}perfect-scrollbar[hidden]{display:none}perfect-scrollbar[fxflex]{display:flex;flex-direction:column;height:auto;min-height:0;min-width:0}perfect-scrollbar[fxflex]>.ps{-webkit-box-flex:1;flex:1 1 auto;height:auto;min-height:0;min-width:0;width:auto}perfect-scrollbar[fxlayout]>.ps,perfect-scrollbar[fxlayout]>.ps>.ps-content{-webkit-box-align:inherit;-webkit-box-flex:1;-webkit-box-pack:inherit;align-content:inherit;align-items:inherit;display:flex;flex:1 1 auto;flex-direction:inherit;height:100%;justify-content:inherit;width:100%},perfect-scrollbar[fxlayout=row]>.ps,perfect-scrollbar[fxlayout=row]>.ps>.ps-content{flex-direction:row!important}perfect-scrollbar[fxlayout=column]>.ps,perfect-scrollbar[fxlayout=column]>.ps>.ps-content{flex-direction:column!important}perfect-scrollbar>.ps{display:block;height:100%;max-height:100%;max-width:100%;position:static;width:100%}perfect-scrollbar>.ps textarea{-ms-overflow-style:scrollbar}perfect-scrollbar>.ps>.ps-overlay{bottom:0;display:block;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{opacity:0;position:absolute;transition:opacity .3s ease-in-out}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{left:0;min-height:24px;min-width:100%}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left,perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{min-height:100%;min-width:24px;top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-top{top:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-left{left:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-right{right:0}perfect-scrollbar>.ps>.ps-overlay .ps-indicator-bottom{bottom:0}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y{cursor:default;left:auto!important;right:0!important;top:0!important;transition:width .2s linear,opacity .2s linear,background-color .2s linear;width:10px}perfect-scrollbar>.ps.ps--active-y>.ps__rail-y.ps--clicking,perfect-scrollbar>.ps.ps--active-y>.ps__rail-y:hover{width:15px}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x{bottom:0!important;cursor:default;height:10px;left:0!important;top:auto!important;transition:height .2s linear,opacity .2s linear,background-color .2s linear}perfect-scrollbar>.ps.ps--active-x>.ps__rail-x.ps--clicking,perfect-scrollbar>.ps.ps--active-x>.ps__rail-x:hover{height:15px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-y{margin:0 0 10px}perfect-scrollbar>.ps.ps--active-x.ps--active-y>.ps__rail-x{margin:0 10px 0 0}perfect-scrollbar>.ps.ps--scrolling-x>.ps__rail-x,perfect-scrollbar>.ps.ps--scrolling-y>.ps__rail-y{background-color:#eee;opacity:.9}perfect-scrollbar.ps-show-always>.ps.ps--active-x>.ps__rail-x,perfect-scrollbar.ps-show-always>.ps.ps--active-y>.ps__rail-y{opacity:.6}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-top) .ps-indicator-top{background:linear-gradient(180deg,hsla(0,0%,100%,.5) 0,hsla(0,0%,100%,0));opacity:1}perfect-scrollbar.ps-show-active>.ps.ps--active-y>.ps-overlay:not(.ps-at-bottom) .ps-indicator-bottom{background:linear-gradient(0deg,hsla(0,0%,100%,.5) 0,hsla(0,0%,100%,0));opacity:1}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-left) .ps-indicator-left{background:linear-gradient(90deg,hsla(0,0%,100%,.5) 0,hsla(0,0%,100%,0));opacity:1}perfect-scrollbar.ps-show-active>.ps.ps--active-x>.ps-overlay:not(.ps-at-right) .ps-indicator-right{background:linear-gradient(270deg,hsla(0,0%,100%,.5) 0,hsla(0,0%,100%,0));opacity:1}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-top .ps-indicator-top{background:linear-gradient(180deg,hsla(0,0%,66.7%,.5) 0,hsla(0,0%,66.7%,0))}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom{background:linear-gradient(0deg,hsla(0,0%,66.7%,.5) 0,hsla(0,0%,66.7%,0))}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left{background:linear-gradient(90deg,hsla(0,0%,66.7%,.5) 0,hsla(0,0%,66.7%,0))}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right{background:linear-gradient(270deg,hsla(0,0%,66.7%,.5) 0,hsla(0,0%,66.7%,0))}perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-left .ps-indicator-left.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-x>.ps-overlay.ps-at-right .ps-indicator-right.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps--active-y>.ps-overlay.ps-at-bottom .ps-indicator-bottom.ps-indicator-show,perfect-scrollbar.ps-show-active.ps-show-limits>.ps.ps-Line truncated
},] }
];
PerfectScrollbarComponent.ctorParameters = () => [
{ type: NgZone },
{ type: ChangeDetectorRef },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
];
PerfectScrollbarComponent.propDecorators = {
disabled: [{ type: Input }],
usePSClass: [{ type: Input }],
autoPropagation: [{ type: HostBinding, args: ['class.ps-show-limits',] }, { type: Input }],
scrollIndicators: [{ type: HostBinding, args: ['class.ps-show-active',] }, { type: Input }],
config: [{ type: Input }],
psScrollY: [{ type: Output }],
psScrollX: [{ type: Output }],
psScrollUp: [{ type: Output }],
psScrollDown: [{ type: Output }],
psScrollLeft: [{ type: Output }],
psScrollRight: [{ type: Output }],
psYReachEnd: [{ type: Output }],
psYReachStart: [{ type: Output }],
psXReachEnd: [{ type: Output }],
psXReachStart: [{ type: Output }],
directiveRef: [{ type: ViewChild, args: [PerfectScrollbarDirective, { static: true },] }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdC1zY3JvbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9saWIvcGVyZmVjdC1zY3JvbGxiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUNKLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDcEUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFFLE9BQU8sRUFBeUIsc0JBQXNCLEVBQ25CLE1BQU0sZ0NBQWdDLENBQUM7QUFZMUUsTUFBTSxPQUFPLHlCQUF5QjtJQXFEcEMsWUFBb0IsSUFBWSxFQUFVLEtBQXdCLEVBQ25DLFVBQWtCO1FBRDdCLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUNuQyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBckQxQyxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBRWpCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU1QixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixvQkFBZSxHQUFX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 Line truncated
@@ -0,0 +1,273 @@
import PerfectScrollbar from 'perfect-scrollbar';
import ResizeObserver from 'resize-observer-polyfill';
import { Subject, fromEvent } from 'rxjs';
import { auditTime, takeUntil } from 'rxjs/operators';
import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { NgZone, Inject, Optional, ElementRef, Directive, Input, Output, EventEmitter, KeyValueDiffers } from '@angular/core';
import { Geometry, Position } from './perfect-scrollbar.interfaces';
import { PERFECT_SCROLLBAR_CONFIG, PerfectScrollbarConfig, PerfectScrollbarEvents } from './perfect-scrollbar.interfaces';
export class PerfectScrollbarDirective {
constructor(zone, differs, elementRef, platformId, defaults) {
this.zone = zone;
this.differs = differs;
this.elementRef = elementRef;
this.platformId = platformId;
this.defaults = defaults;
this.instance = null;
this.ro = null;
this.timeout = null;
this.animation = null;
this.configDiff = null;
this.ngDestroy = new Subject();
this.disabled = false;
this.psScrollY = new EventEmitter();
this.psScrollX = new EventEmitter();
this.psScrollUp = new EventEmitter();
this.psScrollDown = new EventEmitter();
this.psScrollLeft = new EventEmitter();
this.psScrollRight = new EventEmitter();
this.psYReachEnd = new EventEmitter();
this.psYReachStart = new EventEmitter();
this.psXReachEnd = new EventEmitter();
this.psXReachStart = new EventEmitter();
}
ngOnInit() {
if (!this.disabled && isPlatformBrowser(this.platformId)) {
const config = new PerfectScrollbarConfig(this.defaults);
config.assign(this.config); // Custom configuration
this.zone.runOutsideAngular(() => {
this.instance = new PerfectScrollbar(this.elementRef.nativeElement, config);
});
if (!this.configDiff) {
this.configDiff = this.differs.find(this.config || {}).create();
this.configDiff.diff(this.config || {});
}
this.zone.runOutsideAngular(() => {
this.ro = new ResizeObserver(() => {
this.update();
});
if (this.elementRef.nativeElement.children[0]) {
this.ro.observe(this.elementRef.nativeElement.children[0]);
}
this.ro.observe(this.elementRef.nativeElement);
});
this.zone.runOutsideAngular(() => {
PerfectScrollbarEvents.forEach((eventName) => {
const eventType = eventName.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`);
fromEvent(this.elementRef.nativeElement, eventType)
.pipe(auditTime(20), takeUntil(this.ngDestroy))
.subscribe((event) => {
this[eventName].emit(event);
});
});
});
}
}
ngOnDestroy() {
if (isPlatformBrowser(this.platformId)) {
this.ngDestroy.next();
this.ngDestroy.complete();
if (this.ro) {
this.ro.disconnect();
}
if (this.timeout && typeof window !== 'undefined') {
window.clearTimeout(this.timeout);
}
this.zone.runOutsideAngular(() => {
if (this.instance) {
this.instance.destroy();
}
});
this.instance = null;
}
}
ngDoCheck() {
if (!this.disabled && this.configDiff && isPlatformBrowser(this.platformId)) {
const changes = this.configDiff.diff(this.config || {});
if (changes) {
this.ngOnDestroy();
this.ngOnInit();
}
}
}
ngOnChanges(changes) {
if (changes['disabled'] && !changes['disabled'].isFirstChange() && isPlatformBrowser(this.platformId)) {
if (changes['disabled'].currentValue !== changes['disabled'].previousValue) {
if (changes['disabled'].currentValue === true) {
this.ngOnDestroy();
}
else if (changes['disabled'].currentValue === false) {
this.ngOnInit();
}
}
}
}
ps() {
return this.instance;
}
update() {
if (typeof window !== 'undefined') {
if (this.timeout) {
window.clearTimeout(this.timeout);
}
this.timeout = window.setTimeout(() => {
if (!this.disabled && this.configDiff) {
try {
this.zone.runOutsideAngular(() => {
if (this.instance) {
this.instance.update();
}
});
}
catch (error) {
// Update can be finished after destroy so catch errors
}
}
}, 0);
}
}
geometry(prefix = 'scroll') {
return new Geometry(this.elementRef.nativeElement[prefix + 'Left'], this.elementRef.nativeElement[prefix + 'Top'], this.elementRef.nativeElement[prefix + 'Width'], this.elementRef.nativeElement[prefix + 'Height']);
}
position(absolute = false) {
if (!absolute && this.instance) {
return new Position(this.instance.reach.x || 0, this.instance.reach.y || 0);
}
else {
return new Position(this.elementRef.nativeElement.scrollLeft, this.elementRef.nativeElement.scrollTop);
}
}
scrollable(direction = 'any') {
const element = this.elementRef.nativeElement;
if (direction === 'any') {
return element.classList.contains('ps--active-x') ||
element.classList.contains('ps--active-y');
}
else if (direction === 'both') {
return element.classList.contains('ps--active-x') &&
element.classList.contains('ps--active-y');
}
else {
return element.classList.contains('ps--active-' + direction);
}
}
scrollTo(x, y, speed) {
if (!this.disabled) {
if (y == null && speed == null) {
this.animateScrolling('scrollTop', x, speed);
}
else {
if (x != null) {
this.animateScrolling('scrollLeft', x, speed);
}
if (y != null) {
this.animateScrolling('scrollTop', y, speed);
}
}
}
}
scrollToX(x, speed) {
this.animateScrolling('scrollLeft', x, speed);
}
scrollToY(y, speed) {
this.animateScrolling('scrollTop', y, speed);
}
scrollToTop(offset, speed) {
this.animateScrolling('scrollTop', (offset || 0), speed);
}
scrollToLeft(offset, speed) {
this.animateScrolling('scrollLeft', (offset || 0), speed);
}
scrollToRight(offset, speed) {
const left = this.elementRef.nativeElement.scrollWidth -
this.elementRef.nativeElement.clientWidth;
this.animateScrolling('scrollLeft', left - (offset || 0), speed);
}
scrollToBottom(offset, speed) {
const top = this.elementRef.nativeElement.scrollHeight -
this.elementRef.nativeElement.clientHeight;
this.animateScrolling('scrollTop', top - (offset || 0), speed);
}
scrollToElement(element, offset, speed) {
if (typeof element === 'string') {
element = this.elementRef.nativeElement.querySelector(element);
}
if (element) {
const elementPos = element.getBoundingClientRect();
const scrollerPos = this.elementRef.nativeElement.getBoundingClientRect();
if (this.elementRef.nativeElement.classList.contains('ps--active-x')) {
const currentPos = this.elementRef.nativeElement['scrollLeft'];
const position = elementPos.left - scrollerPos.left + currentPos;
this.animateScrolling('scrollLeft', position + (offset || 0), speed);
}
if (this.elementRef.nativeElement.classList.contains('ps--active-y')) {
const currentPos = this.elementRef.nativeElement['scrollTop'];
const position = elementPos.top - scrollerPos.top + currentPos;
this.animateScrolling('scrollTop', position + (offset || 0), speed);
}
}
}
animateScrolling(target, value, speed) {
if (this.animation) {
window.cancelAnimationFrame(this.animation);
this.animation = null;
}
if (!speed || typeof window === 'undefined') {
this.elementRef.nativeElement[target] = value;
}
else if (value !== this.elementRef.nativeElement[target]) {
let newValue = 0;
let scrollCount = 0;
let oldTimestamp = performance.now();
let oldValue = this.elementRef.nativeElement[target];
const cosParameter = (oldValue - value) / 2;
const step = (newTimestamp) => {
scrollCount += Math.PI / (speed / (newTimestamp - oldTimestamp));
newValue = Math.round(value + cosParameter + cosParameter * Math.cos(scrollCount));
// Only continue animation if scroll position has not changed
if (this.elementRef.nativeElement[target] === oldValue) {
if (scrollCount >= Math.PI) {
this.animateScrolling(target, value, 0);
}
else {
this.elementRef.nativeElement[target] = newValue;
// On a zoomed out page the resulting offset may differ
oldValue = this.elementRef.nativeElement[target];
oldTimestamp = newTimestamp;
this.animation = window.requestAnimationFrame(step);
}
}
};
window.requestAnimationFrame(step);
}
}
}
PerfectScrollbarDirective.decorators = [
{ type: Directive, args: [{
selector: '[perfectScrollbar]',
exportAs: 'ngxPerfectScrollbar'
},] }
];
PerfectScrollbarDirective.ctorParameters = () => [
{ type: NgZone },
{ type: KeyValueDiffers },
{ type: ElementRef },
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PERFECT_SCROLLBAR_CONFIG,] }] }
];
PerfectScrollbarDirective.propDecorators = {
disabled: [{ type: Input }],
config: [{ type: Input, args: ['perfectScrollbar',] }],
psScrollY: [{ type: Output }],
psScrollX: [{ type: Output }],
psScrollUp: [{ type: Output }],
psScrollDown: [{ type: Output }],
psScrollLeft: [{ type: Output }],
psScrollRight: [{ type: Output }],
psYReachEnd: [{ type: Output }],
psYReachStart: [{ type: Output }],
psXReachEnd: [{ type: Output }],
psXReachStart: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdC1zY3JvbGxiYXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9saWIvcGVyZmVjdC1zY3JvbGxiYXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUNmLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUNuQyxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsc0JBQXNCLEVBQ2hDLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNeEYsTUFBTSxPQUFPLHlCQUF5QjtJQTZCcEMsWUFBb0IsSUFBWSxFQUFVLE9BQXdCLEVBQ3pELFVBQXNCLEVBQStCLFVBQWtCLEVBQ3hCLFFBQXlDO1FBRjdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN6RCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQStCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDeEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUM7UUE5QnpGLGFB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 Line truncated
@@ -0,0 +1,39 @@
import { InjectionToken } from '@angular/core';
export const PERFECT_SCROLLBAR_CONFIG = new InjectionToken('PERFECT_SCROLLBAR_CONFIG');
export class Geometry {
constructor(x, y, w, h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
}
export class Position {
constructor(x, y) {
this.x = x;
this.y = y;
}
}
export const PerfectScrollbarEvents = [
'psScrollY',
'psScrollX',
'psScrollUp',
'psScrollDown',
'psScrollLeft',
'psScrollRight',
'psYReachEnd',
'psYReachStart',
'psXReachEnd',
'psXReachStart'
];
export class PerfectScrollbarConfig {
constructor(config = {}) {
this.assign(config);
}
assign(config = {}) {
for (const key in config) {
this[key] = config[key];
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdC1zY3JvbGxiYXIuaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL3BlcmZlY3Qtc2Nyb2xsYmFyLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRXZGLE1BQU0sT0FBTyxRQUFRO0lBT25CLFlBQVksQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNwRCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxRQUFRO0lBSW5CLFlBQVksQ0FBMkIsRUFBRSxDQUEyQjtRQUNsRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGO0FBS0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTRCO0lBQzdELFdBQVc7SUFDWCxXQUFXO0lBRVgsWUFBWTtJQUNaLGNBQWM7SUFDZCxjQUFjO0lBQ2QsZUFBZTtJQUVmLGFBQWE7SUFDYixlQUFlO0lBQ2YsYUFBYTtJQUNiLGVBQWU7Q0FDaEIsQ0FBQztBQXVCRixNQUFNLE9BQU8sc0JBQXNCO0lBb0JqQyxZQUFZLFNBQTBDLEVBQUU7UUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQTBDLEVBQUU7UUFDeEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQW1DLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBNEMsQ0FBVSxDQUFDO1NBQzNHO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFBFUkZFQ1RfU0NST0xMQkFSX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbignUEVSRkVDVF9TQ1JPTExCQVJfQ09ORklHJyk7XG5cbmV4cG9ydCBjbGFzcyBHZW9tZXRyeSB7XG4gIHB1YmxpYyB4OiBudW1iZXI7XG4gIHB1YmxpYyB5OiBudW1iZXI7XG5cbiAgcHVibGljIHc6IG51bWJlcjtcbiAgcHVibGljIGg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih4OiBudW1iZXIsIHk6IG51bWJlciwgdzogbnVtYmVyLCBoOiBudW1iZXIpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53ID0gdztcbiAgICB0aGlzLmggPSBoO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbiB7XG4gIHB1YmxpYyB4OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCc7XG4gIHB1YmxpYyB5OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCc7XG5cbiAgY29uc3RydWN0b3IoeDogbnVtYmVyIHwgJ3N0YXJ0JyB8ICdlbmQnLCB5OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVyZmVjdFNjcm9sbGJhckV2ZW50ID0gJ3BzU2Nyb2xsWScgfCAncHNTY3JvbGxYJyB8ICdwc1Njcm9sbFVwJ3wgJ3BzU2Nyb2xsRG93bicgfFxuICAncHNTY3JvbGxMZWZ0JyB8ICdwc1Njcm9sbFJpZ2h0JyB8ICdwc1lSZWFjaEVuZCcgfCAncHNZUmVhY2hTdGFydCcgfCAncHNYUmVhY2hFbmQnIHwgJ3BzWFJlYWNoU3RhcnQnO1xuXG5leHBvcnQgY29uc3QgUGVyZmVjdFNjcm9sbGJhckV2ZW50czogUGVyZmVjdFNjcm9sbGJhckV2ZW50W10gPSBbXG4gICdwc1Njcm9sbFknLFxuICAncHNTY3JvbGxYJyxcblxuICAncHNTY3JvbGxVcCcsXG4gICdwc1Njcm9sbERvd24nLFxuICAncHNTY3JvbGxMZWZ0JyxcbiAgJ3BzU2Nyb2xsUmlnaHQnLFxuXG4gICdwc1lSZWFjaEVuZCcsXG4gICdwc1lSZWFjaFN0YXJ0JyxcbiAgJ3BzWFJlYWNoRW5kJyxcbiAgJ3BzWFJlYWNoU3RhcnQnXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBlcmZlY3RTY3JvbGxiYXJDb25maWdJbnRlcmZhY2Uge1xuICBoYW5kbGVycz86IHN0cmluZ1tdO1xuXG4gIHdoZWVsU3BlZWQ/OiBudW1iZXI7XG4gIHN3aXBlRWFzaW5nPzogYm9vbGVhbjtcblxuICBzdXBwcmVzc1Njcm9sbFg/OiBib29sZWFuO1xuICBzdXBwcmVzc1Njcm9sbFk/OiBib29sZWFuO1xuXG4gIHdoZWVsUHJvcGFnYXRpb24/OiBib29sZWFuO1xuICB1c2VCb3RoV2hlZWxBeGVzPzogYm9vbGVhbjtcblxuICBzY3JvbGxpbmdUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgbWluU2Nyb2xsYmFyTGVuZ3RoPzogbnVtYmVyO1xuICBtYXhTY3JvbGxiYXJMZW5ndGg/OiBudW1iZXI7XG5cbiAgc2Nyb2xsWE1hcmdpbk9mZnNldD86IG51bWJlcjtcbiAgc2Nyb2xsWU1hcmdpbk9mZnNldD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFBlcmZlY3RTY3JvbGxiYXJDb25maWcgaW1wbGVtZW50cyBQZXJmZWN0U2Nyb2xsYmFyQ29uZmlnSW50ZXJmYWNlIHtcbiAgcHVibGljIGhhbmRsZXJzPzogc3RyaW5nW107XG5cbiAgcHVibGljIHdoZWVsU3BlZWQ/OiBudW1iZXI7XG4gIHB1YmxpYyBzd2lwZUVhc2luZz86IGJvb2xlYW47XG5cbiAgcHVibGljIHN1cHByZXNzU2Nyb2xsWD86IGJvb2xlYW47XG4gIHB1YmxpYyBzdXBwcmVzc1Njcm9sbFk/OiBib29sZWFuO1xuXG4gIHB1YmxpYyB3aGVlbFByb3BhZ2F0aW9uPzogYm9vbGVhbjtcbiAgcHVibGljIHVzZUJvdGhXaGVlbEF4ZXM/OiBib29sZWFuO1xuXG4gIHB1YmxpYyBzY3JvbGxpbmdUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgcHVibGljIG1pblNjcm9sbGJhckxlbmd0aD86IG51bWJlcjtcbiAgcHVibGljIG1heFNjcm9sbGJhckxlbmd0aD86IG51bWJlcjtcblxuICBwdWJsaWMgc2Nyb2xsWE1hcmdpbk9mZnNldD86IG51bWJlcjtcbiAgcHVibGljIHNjcm9sbFlNYXJnaW5PZmZzZXQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBQZXJmZWN0U2Nyb2xsYmFyQ29uZmlnSW50ZXJmYWNlID0ge30pIHtcbiAgICB0aGlzLmFzc2lnbihjb25maWcpO1xuICB9XG5cbiAgcHVibGljIGFzc2lnbihjb25maWc6IFBlcmZlY3RTY3JvbGxiYXJDb25maWdJbnRlcmZhY2UgPSB7fSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNvbmZpZykge1xuICAgICAgdGhpc1trZXkgYXMga2V5b2YgUGVyZmVjdFNjcm9sbGJhckNvbmZpZ10gPSBjb25maWdba2V5IGFzIGtleW9mIFBlcmZlY3RTY3JvbGxiYXJDb25maWdJbnRlcmZhY2VdIGFzIG5ldmVyO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PerfectScrollbarComponent } from './perfect-scrollbar.component';
import { PerfectScrollbarDirective } from './perfect-scrollbar.directive';
import { ForceNativeScrollDirective } from './perfect-scrollbar-force-native-scroll.directive';
export class PerfectScrollbarModule {
}
PerfectScrollbarModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule],
declarations: [PerfectScrollbarComponent, PerfectScrollbarDirective, ForceNativeScrollDirective],
exports: [CommonModule, PerfectScrollbarComponent, PerfectScrollbarDirective, ForceNativeScrollDirective]
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyZmVjdC1zY3JvbGxiYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliL3NyYy9saWIvcGVyZmVjdC1zY3JvbGxiYXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBTy9GLE1BQU0sT0FBTyxzQkFBc0I7OztZQUxsQyxRQUFRLFNBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUN2QixZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsQ0FBQztnQkFDaEcsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixDQUFDO2FBQzVHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IFBlcmZlY3RTY3JvbGxiYXJDb21wb25lbnQgfSBmcm9tICcuL3BlcmZlY3Qtc2Nyb2xsYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZXJmZWN0U2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnLi9wZXJmZWN0LXNjcm9sbGJhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRm9yY2VOYXRpdmVTY3JvbGxEaXJlY3RpdmUgfSBmcm9tICcuL3BlcmZlY3Qtc2Nyb2xsYmFyLWZvcmNlLW5hdGl2ZS1zY3JvbGwuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtQZXJmZWN0U2Nyb2xsYmFyQ29tcG9uZW50LCBQZXJmZWN0U2Nyb2xsYmFyRGlyZWN0aXZlLCBGb3JjZU5hdGl2ZVNjcm9sbERpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW0NvbW1vbk1vZHVsZSwgUGVyZmVjdFNjcm9sbGJhckNvbXBvbmVudCwgUGVyZmVjdFNjcm9sbGJhckRpcmVjdGl2ZSwgRm9yY2VOYXRpdmVTY3JvbGxEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFBlcmZlY3RTY3JvbGxiYXJNb2R1bGUge1xufVxuIl19