sb-element
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.1. It is a component library constructed around the SCSS library [Sb-Theming](https://github.com/SeverinBuchser/SbTheming) and supports [Angular Schematics]
96 lines • 14 kB
JavaScript
import { EventEmitter } from "@angular/core";
export function mixinHide(core, defaultVisiblity) {
return class extends core {
constructor(...args) {
super(...args);
this.showStart = new EventEmitter();
this.showEnd = new EventEmitter();
this.hideStart = new EventEmitter();
this.hideEnd = new EventEmitter();
this.defaultVisiblity = defaultVisiblity;
this.visible = defaultVisiblity || false;
}
get visible() {
return this._visible || false;
}
set visible(isVisible) {
if (isVisible !== this._visible) {
if (isVisible)
this.showElement(this._visible);
else
this.hideElement(this._visible);
this._visible = isVisible;
}
}
wait(time) {
return new Promise(resolve => {
setTimeout(() => resolve(), time);
});
}
async showElement(wasVisible) {
this._elementRef.nativeElement.classList.remove(`sb--hidden`);
if (wasVisible !== undefined) {
this._elementRef.nativeElement.classList.add(`sb--visibly-hidden`);
await this.wait(0);
this._elementRef.nativeElement.classList.remove(`sb--visibly-hidden`);
}
this.emitShowStart();
this._elementRef.nativeElement.classList.add(`sb--visible`);
await this.wait(this.transitionDuration + 5);
this.emitShowEnd();
}
async hideElement(wasVisible) {
this._elementRef.nativeElement.classList.remove(`sb--visible`);
this.emitHideStart();
if (wasVisible !== undefined) {
this._elementRef.nativeElement.classList.add(`sb--visibly-hidden`);
await this.wait(this.transitionDuration + 5);
this._elementRef.nativeElement.classList.remove(`sb--visibly-hidden`);
}
if (wasVisible == undefined || this._visible == false) {
this._elementRef.nativeElement.classList.add(`sb--hidden`);
this.emitHideEnd();
}
}
get transitionDuration() {
if (!this.transitionElement)
return 0;
let { transitionDuration, transitionDelay } = window.getComputedStyle(this.transitionElement.nativeElement);
const floatTransitionDuration = parseFloat(transitionDuration);
const floatTransitionDelay = parseFloat(transitionDelay);
if (!floatTransitionDuration && !floatTransitionDelay)
return 0;
transitionDuration = transitionDuration.split(',')[0];
transitionDelay = transitionDelay.split(',')[0];
return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * 1000;
}
setVisibleState(isVisible) {
this.visible = isVisible;
}
emitShowStart() {
this.onShowStart();
this.showStart.emit();
}
emitShowEnd() {
this.onShowEnd();
this.showEnd.emit();
}
emitHideStart() {
this.onHideStart();
this.hideStart.emit();
}
emitHideEnd() {
this.onHideEnd();
this.hideEnd.emit();
}
onShowStart() { }
;
onShowEnd() { }
;
onHideStart() { }
;
onHideEnd() { }
;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NiLWVsZW1lbnQvc3JjL2xpYi9jb3JlL2NvbW1vbi1iZWhhdmlvcnMvaGlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTZCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXVCeEUsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsSUFBTyxFQUNQLGdCQUEwQjtJQUUxQixPQUFPLEtBQU0sU0FBUSxJQUFJO1FBcUd2QixZQUFZLEdBQUcsSUFBZ0I7WUFDN0IsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFuR1YsY0FBUyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1lBQ3pELFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztZQUN2RCxjQUFTLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7WUFDekQsWUFBTyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1lBRXZELHFCQUFnQixHQUFhLGdCQUFnQixDQUFDO1lBZ0duRCxJQUFJLENBQUMsT0FBTyxHQUFHLGdCQUFnQixJQUFJLEtBQUssQ0FBQztRQUMzQyxDQUFDO1FBOUZELElBQUksT0FBTztZQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLFNBQWtCO1lBQzVCLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQy9CLElBQUksU0FBUztvQkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7b0JBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQzthQUMzQjtRQUNILENBQUM7UUFFTSxJQUFJLENBQUMsSUFBWTtZQUN0QixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMzQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDbkMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUErQjtZQUN2RCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN2RTtZQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFFTyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQStCO1lBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDdkU7WUFDRCxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUM7UUFFRCxJQUFJLGtCQUFrQjtZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtnQkFBRSxPQUFPLENBQUMsQ0FBQztZQUV0QyxJQUFJLEVBQ0Ysa0JBQWtCLEVBQ2xCLGVBQWUsRUFDaEIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sdUJBQXVCLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDL0QsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFekQsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsb0JBQW9CO2dCQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRWhFLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxlQUFlLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQy9FLENBQUM7UUFFTSxlQUFlLENBQUMsU0FBa0I7WUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztRQUVPLGFBQWE7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVPLFdBQVc7WUFDakIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVPLGFBQWE7WUFDbkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUVPLFdBQVc7WUFDakIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVTLFdBQVcsS0FBVSxDQUFDO1FBQUEsQ0FBQztRQUN2QixTQUFTLEtBQVUsQ0FBQztRQUFBLENBQUM7UUFDckIsV0FBVyxLQUFVLENBQUM7UUFBQSxDQUFDO1FBQ3ZCLFNBQVMsS0FBVSxDQUFDO1FBQUEsQ0FBQztLQU9oQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnN0cnVjdG9yLCBDb25zdHJ1Y3RvciB9IGZyb20gXCIuL2NvbnN0cnVjdG9yXCI7XG5pbXBvcnQgeyBIYXNFbGVtZW50UmVmIH0gZnJvbSBcIi4vaGFzLWVsZW1lbnQtcmVmXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuSGlkZSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIHNldFZpc2libGVTdGF0ZShpc1Zpc2libGU6IGJvb2xlYW4pOiB2b2lkO1xuICBzaG93U3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbiAgc2hvd0VuZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICBoaWRlU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbiAgaGlkZUVuZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICB0cmFuc2l0aW9uRHVyYXRpb246IG51bWJlcjtcbiAgdHJhbnNpdGlvbkVsZW1lbnQ/OiBFbGVtZW50UmVmO1xuICBkZWZhdWx0VmlzaWJsaXR5PzogYm9vbGVhbjtcbiAgd2FpdCh0aW1lOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIENhbkhpZGVDdG9yID0gQ29uc3RydWN0b3I8Q2FuSGlkZT4gJiBBYnN0cmFjdENvbnN0cnVjdG9yPENhbkhpZGU+O1xuXG5leHBvcnQgZnVuY3Rpb24gbWl4aW5IaWRlPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPEhhc0VsZW1lbnRSZWY+PihcbiAgY29yZTogVCxcbiAgZGVmYXVsdFZpc2libGl0eT86IGJvb2xlYW5cbik6IENhbkhpZGVDdG9yICYgVDtcbmV4cG9ydCBmdW5jdGlvbiBtaXhpbkhpZGU8VCBleHRlbmRzIENvbnN0cnVjdG9yPEhhc0VsZW1lbnRSZWY+PihcbiAgY29yZTogVCxcbiAgZGVmYXVsdFZpc2libGl0eT86IGJvb2xlYW5cbik6IENhbkhpZGVDdG9yICYgVCB7XG4gIHJldHVybiBjbGFzcyBleHRlbmRzIGNvcmUge1xuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgc2hvd1N0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgcHVibGljIHNob3dFbmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBwdWJsaWMgaGlkZVN0YXJ0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgcHVibGljIGhpZGVFbmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIHB1YmxpYyBkZWZhdWx0VmlzaWJsaXR5PzogYm9vbGVhbiA9IGRlZmF1bHRWaXNpYmxpdHk7XG4gICAgcHVibGljIHRyYW5zaXRpb25FbGVtZW50PzogRWxlbWVudFJlZjtcblxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGUgfHwgZmFsc2U7XG4gICAgfVxuICAgIHNldCB2aXNpYmxlKGlzVmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgaWYgKGlzVmlzaWJsZSAhPT0gdGhpcy5fdmlzaWJsZSkge1xuICAgICAgICBpZiAoaXNWaXNpYmxlKSB0aGlzLnNob3dFbGVtZW50KHRoaXMuX3Zpc2libGUpO1xuICAgICAgICBlbHNlIHRoaXMuaGlkZUVsZW1lbnQodGhpcy5fdmlzaWJsZSk7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdhaXQodGltZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSgpLCB0aW1lKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNob3dFbGVtZW50KHdhc1Zpc2libGU6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGBzYi0taGlkZGVuYCk7XG4gICAgICBpZiAod2FzVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzYi0tdmlzaWJseS1oaWRkZW5gKTtcbiAgICAgICAgYXdhaXQgdGhpcy53YWl0KDApO1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgc2ItLXZpc2libHktaGlkZGVuYCk7XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXRTaG93U3RhcnQoKTtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBzYi0tdmlzaWJsZWApO1xuICAgICAgYXdhaXQgdGhpcy53YWl0KHRoaXMudHJhbnNpdGlvbkR1cmF0aW9uICsgNSk7XG4gICAgICB0aGlzLmVtaXRTaG93RW5kKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBoaWRlRWxlbWVudCh3YXNWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgc2ItLXZpc2libGVgKTtcbiAgICAgIHRoaXMuZW1pdEhpZGVTdGFydCgpO1xuICAgICAgaWYgKHdhc1Zpc2libGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc2ItLXZpc2libHktaGlkZGVuYCk7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdCh0aGlzLnRyYW5zaXRpb25EdXJhdGlvbiArIDUpO1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShgc2ItLXZpc2libHktaGlkZGVuYCk7XG4gICAgICB9XG4gICAgICBpZiAod2FzVmlzaWJsZSA9PSB1bmRlZmluZWQgfHwgdGhpcy5fdmlzaWJsZSA9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgc2ItLWhpZGRlbmApO1xuICAgICAgICB0aGlzLmVtaXRIaWRlRW5kKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHRyYW5zaXRpb25EdXJhdGlvbigpOiBudW1iZXIge1xuICAgICAgaWYgKCF0aGlzLnRyYW5zaXRpb25FbGVtZW50KSByZXR1cm4gMDtcblxuICAgICAgbGV0IHtcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgICB0cmFuc2l0aW9uRGVsYXlcbiAgICAgIH0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRyYW5zaXRpb25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgY29uc3QgZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gPSBwYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbik7XG4gICAgICBjb25zdCBmbG9hdFRyYW5zaXRpb25EZWxheSA9IHBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KTtcblxuICAgICAgaWYgKCFmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiAmJiAhZmxvYXRUcmFuc2l0aW9uRGVsYXkpIHJldHVybiAwO1xuXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb24uc3BsaXQoJywnKVswXTtcbiAgICAgIHRyYW5zaXRpb25EZWxheSA9IHRyYW5zaXRpb25EZWxheS5zcGxpdCgnLCcpWzBdO1xuICAgICAgcmV0dXJuIChwYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbikgKyBwYXJzZUZsb2F0KHRyYW5zaXRpb25EZWxheSkpICogMTAwMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VmlzaWJsZVN0YXRlKGlzVmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgdGhpcy52aXNpYmxlID0gaXNWaXNpYmxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdFNob3dTdGFydCgpOiB2b2lkIHtcbiAgICAgIHRoaXMub25TaG93U3RhcnQoKTtcbiAgICAgIHRoaXMuc2hvd1N0YXJ0LmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRTaG93RW5kKCk6IHZvaWQge1xuICAgICAgdGhpcy5vblNob3dFbmQoKTtcbiAgICAgIHRoaXMuc2hvd0VuZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0SGlkZVN0YXJ0KCk6IHZvaWQge1xuICAgICAgdGhpcy5vbkhpZGVTdGFydCgpO1xuICAgICAgdGhpcy5oaWRlU3RhcnQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW1pdEhpZGVFbmQoKTogdm9pZCB7XG4gICAgICB0aGlzLm9uSGlkZUVuZCgpO1xuICAgICAgdGhpcy5oaWRlRW5kLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TaG93U3RhcnQoKTogdm9pZCB7fTtcbiAgICBwcm90ZWN0ZWQgb25TaG93RW5kKCk6IHZvaWQge307XG4gICAgcHJvdGVjdGVkIG9uSGlkZVN0YXJ0KCk6IHZvaWQge307XG4gICAgcHJvdGVjdGVkIG9uSGlkZUVuZCgpOiB2b2lkIHt9O1xuXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG5cbiAgICAgIHRoaXMudmlzaWJsZSA9IGRlZmF1bHRWaXNpYmxpdHkgfHwgZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=