UNPKG

@logo-software/accordion

Version:

An accordion allows to toggle the display of sections of content.

99 lines 26.6 kB
/** * @license * Copyright LOGO YAZILIM SANAYİ VE TİCARET A.Ş. All Rights Reserved. * * Save to the extent permitted by law, you may not use, copy, modify, * distribute or create derivative works of this material or any part * of it without the prior written consent of LOGO YAZILIM SANAYİ VE TİCARET A.Ş. Limited. * Any reproduction of this material must contain this notice. */ import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { ItemComponent } from './item.component'; /** * Accordions are useful when you want to toggle between hiding and showing large amount of content. */ export class AccordionComponent { /** * Give HttpClient to the component. First import HttpClientModule to main Module of the app. For example. * ```typescript * @NgModule({ imports: [ * BrowserModule, * HttpClientModule, // Add HttpClientModule * ] * }) * export class AppModule { * } * ``` * @param http */ constructor(http) { this.http = http; /** * Specifies one or more CSS classes to be used by the element. When set, this class will also be used by all child elements that don't have their own class. */ this.classes = ''; /** * Specifies one or more CSS classes to be used by the element's icons. When set, this class will also be used by all child elements icons that don't have their own class. */ this.iconClasses = ''; /** * Accordion items to show with native template */ this.items = []; /** * Option to show shadow on title */ this.hasShadow = false; /** * Item click event trigger. When clicked on any item this event will be called and pushes the item information to the given method. */ this.onItemClick = new EventEmitter(); this._level = 0; } get level() { return this._level; } set level(level) { ++level; this._level = level; } ngOnInit() { if (!this.elementId) { this.elementId = this.generateElementId(); } } generateElementId() { return String.fromCharCode(Math.floor(Math.random() * 26) + 97) + Math.random().toString(16).slice(2) + Date.now().toString(16).slice(4); } itemClick(item, $event) { this.$onItemClick(item); } $onItemClick(item) { this.onItemClick.emit(item); } } AccordionComponent.decorators = [ { type: Component, args: [{ selector: 'logo-accordion', template: "<!--\n/**\n * @license\n * Copyright LOGO YAZILIM SANAY\u0130 VE T\u0130CARET A.\u015E. All Rights Reserved.\n *\n * Save to the extent permitted by law, you may not use, copy, modify,\n * distribute or create derivative works of this material or any part\n * of it without the prior written consent of LOGO YAZILIM SANAY\u0130 VE T\u0130CARET A.\u015E. Limited.\n * Any reproduction of this material must contain this notice.\n */\n-->\n<ul class=\"top-level-accordion\" [ngClass]=\"{'shadowed': hasShadow}\">\n <ng-container *ngIf=\"items.length === 0; else nativeTemplate\">\n <ng-content></ng-content>\n </ng-container>\n <ng-template #nativeTemplate>\n <li\n *ngFor=\"let item of items; let i = index; let lst=last\"\n [ngClass]=\"item.classes\"\n class=\"level-{{level}} accordion-category {{classes}}\"\n >\n <input [checked]=\"item.isOpen\" hidden id=\"{{elementId}}{{i}}\" type=\"checkbox\"/>\n <label\n (click)=\"itemClick(item)\"\n class=\"label label-category\"\n for=\"{{elementId}}{{i}}\"\n >\n <div [ngClass]=\"item.iconClasses\" class=\"{{iconClasses}}\"></div>\n <div class=\"title\">\n <p class=\"large\">{{item.title}}</p>\n </div>\n <div class=\"options\">\n <ng-content select=\"[option]\"></ng-content>\n </div>\n <div class=\"arrow le-arrow_down\"></div>\n </label>\n <p [innerHTML]=\"item.description\" class=\"content\"></p>\n </li>\n </ng-template>\n</ul>\n", styles: ["[class*=\" le-\"],[class^=le-]{position:relative;height:100%}[class*=\" le-\"]:before,[class^=le-]:before{height:100%;top:0;-webkit-mask-size:14px;mask-size:14px}.le-arrow_right:before{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='currentColor' xmlns='http://www.w3.org/2000/svg'%3E %3Cg id='arrow_right'%3E %3Cpath id='Shape' fill-rule='evenodd' clip-rule='evenodd' d='M14.5713 12C14.5713 11.8762 14.5351 11.7657 14.4628 11.6686L14.4017 11.5982L10.4017 7.59823C10.2886 7.48514 10.1547 7.42859 9.9999 7.42859C9.84513 7.42859 9.7112 7.48514 9.59811 7.59823C9.50763 7.68871 9.45335 7.79252 9.43525 7.90966L9.42847 8.00002V16C9.42847 16.1548 9.48501 16.2887 9.59811 16.4018C9.7112 16.5149 9.84513 16.5714 9.9999 16.5714C10.1237 16.5714 10.2342 16.5353 10.3313 16.4629L10.4017 16.4018L14.4017 12.4018C14.5148 12.2887 14.5713 12.1548 14.5713 12Z' fill='%235A5A5A'/%3E %3C/g%3E %3C/svg%3E\");-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;display:inline-block;content:\"\";position:absolute;background:currentColor}.dotted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logo-tooltip .tip.on-bottom:after,.logo-tooltip .tip.on-top:after{border-left:7px solid transparent;border-right:7px solid transparent}.logo-tooltip .tip.on-left:after,.logo-tooltip .tip.on-right:after{border-top:7px solid transparent;border-bottom:7px solid transparent}.logo-tooltip{position:relative;color:#e94a34;cursor:pointer}.logo-tooltip .tip{position:absolute;width:180px;color:#fff;font-size:14px;font-style:normal;line-height:1.4;text-align:center;border-radius:3px;background:#333;padding:8px 12px;box-sizing:border-box;cursor:auto;z-index:10;opacity:0;visibility:hidden;transition:all .25s ease-in}.logo-tooltip .tip:after{position:absolute;width:0;height:0;content:\"\"}.logo-tooltip .tip.on-top{bottom:25px;left:0}.logo-tooltip .tip.on-top:after{bottom:-7px;left:10px;border-top:7px solid #333}.logo-tooltip .tip.on-right{top:-5px;left:103%}.logo-tooltip .tip.on-right:after{top:37%;left:-7px;border-right:7px solid #333}.logo-tooltip .tip.on-bottom{top:25px;left:0}.logo-tooltip .tip.on-bottom:after{top:-7px;left:10px;border-bottom:7px solid #333}.logo-tooltip .tip.on-left{top:-100%;right:103%}.logo-tooltip .tip.on-left:after{top:37%;right:-7px;border-left:7px solid #333}.logo-tooltip:hover .tip{opacity:1;visibility:visible}.logo-tooltip:hover .tip.on-top{transform:translateY(-15px)}.logo-tooltip:hover .tip.on-right{transform:translateX(15px)}.logo-tooltip:hover .tip.on-bottom{transform:translateY(15px)}.logo-tooltip:hover .tip.on-left{transform:translateX(-15px)}.test{content:\"a\";content:\"ba\";content:\"aa\";content:\"aade\";content:\"abde\"}:root .basic,:root .gray,:root .secondary{color:var(--leds-contrast-90pct)}:root .danger,:root .info,:root .success,:root .warning{color:var(--white)}:root .outline.primary,:root .outline.primary:active,:root .outline.primary:focus,:root .outline.primary:hover{border-color:var(--light-600)}:root .outline.primary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--primary)}:root .outline.primary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--primary)}:root .outline.primary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--primary)}:root .outline.secondary{color:var(--leds-contrast-90pct)}:root .outline.secondary,:root .outline.secondary:active,:root .outline.secondary:focus,:root .outline.secondary:hover{border-color:var(--light-600)}:root .outline.secondary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.secondary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.secondary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.basic{color:var(--leds-contrast-90pct)}:root .outline.basic,:root .outline.basic:active,:root .outline.basic:focus,:root .outline.basic:hover{border-color:var(--light-600)}:root .outline.basic:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.basic:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.basic:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.neutral,:root .outline.neutral:active,:root .outline.neutral:focus,:root .outline.neutral:hover{border-color:var(--light-600)}:root .outline.neutral:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--neutral)}:root .outline.neutral:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--neutral)}:root .outline.neutral:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--neutral)}:root .outline.light{border-color:rgba(var(--light-rgb),.5)}:root .outline.light:active,:root .outline.light:focus,:root .outline.light:hover{border-color:var(--light)}:root .outline.light:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--white)}:root .outline.light:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--white)}:root .outline.light:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--white)}:root .outline.dark,:root .outline.dark:active,:root .outline.dark:focus,:root .outline.dark:hover{border-color:var(--light-600)}:root .outline.dark:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--dark)}:root .outline.dark:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--dark)}:root .outline.dark:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--dark)}:root .outline.gray{color:var(--leds-contrast-90pct)}:root .outline.gray,:root .outline.gray:active,:root .outline.gray:focus,:root .outline.gray:hover{border-color:var(--light-600)}:root .outline.gray:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--leds-contrast-90pct)}:root .outline.gray:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .outline.gray:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .outline.info{color:var(--info)}:root .outline.info,:root .outline.info:active,:root .outline.info:focus,:root .outline.info:hover{border-color:var(--light-600)}:root .outline.info:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--info)}:root .outline.info:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--info)}:root .outline.info:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--info)}:root .outline.danger{color:var(--danger)}:root .outline.danger,:root .outline.danger:active,:root .outline.danger:focus,:root .outline.danger:hover{border-color:var(--light-600)}:root .outline.danger:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--danger)}:root .outline.danger:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--danger)}:root .outline.danger:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--danger)}:root .outline.warning{color:var(--warning)}:root .outline.warning,:root .outline.warning:active,:root .outline.warning:focus,:root .outline.warning:hover{border-color:var(--light-600)}:root .outline.warning:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--warning)}:root .outline.warning:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--warning)}:root .outline.warning:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--warning)}:root .outline.success{color:var(--success)}:root .outline.success,:root .outline.success:active,:root .outline.success:focus,:root .outline.success:hover{border-color:var(--light-600)}:root .outline.success:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--success)}:root .outline.success:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--success)}:root .outline.success:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--success)}:root .ghost.primary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--primary)}:root .ghost.primary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--primary)}:root .ghost.primary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--primary)}:root .ghost.secondary,:root .ghost.secondary:hover{color:var(--leds-contrast-90pct)}:root .ghost.secondary:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.secondary:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.secondary:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus))}:root .ghost.basic,:root .ghost.basic:hover,:root .ghost.secondary:focus{color:var(--leds-contrast-90pct)}:root .ghost.basic:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.basic:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.basic:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .ghost.neutral:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--neutral)}:root .ghost.neutral:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--neutral)}:root .ghost.neutral:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--neutral)}:root .ghost.light:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--white)}:root .ghost.light:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--white)}:root .ghost.light:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--white)}:root .ghost.dark:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--dark)}:root .ghost.dark:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--dark)}:root .ghost.dark:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--dark)}:root .ghost.gray,:root .ghost.gray:hover{color:var(--leds-contrast-90pct)}:root .ghost.gray:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover))}:root .ghost.gray:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--leds-contrast-90pct)}:root .ghost.gray:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--leds-contrast-90pct)}:root .ghost.info{color:var(--info)}:root .ghost.info:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--info)}:root .ghost.info:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--info)}:root .ghost.info:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--info)}:root .ghost.danger{color:var(--danger)}:root .ghost.danger:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--danger)}:root .ghost.danger:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--danger)}:root .ghost.danger:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--danger)}:root .ghost.warning{color:var(--warning)}:root .ghost.warning:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--warning)}:root .ghost.warning:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--warning)}:root .ghost.warning:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--warning)}:root .ghost.success{color:var(--success)}:root .ghost.success:hover{background-color:rgba(var(--neutral-500-rgb),var(--ghost-hover));color:var(--success)}:root .ghost.success:active{background-color:rgba(var(--neutral-500-rgb),var(--ghost-active));color:var(--success)}:root .ghost.success:focus{background-color:rgba(var(--neutral-500-rgb),var(--ghost-focus));color:var(--success)}:host{display:block;padding:0;margin:0;font-family:Nunito Sans!important;opacity:1;transition:all .5s ease-out}:host ul{list-style:none;padding:0}:host ul.shadowed ::ng-deep li label,:host ul.shadowed li label{box-shadow:0 0 4px 1px rgba(var(--black-rgb),.08)}:host ul li label{display:flex;color:var(--leds-contrast-90pct);padding-left:4px;padding-right:4px;font-size:16px;line-height:38px;height:38px;box-sizing:border-box;align-items:center;justify-content:space-between;cursor:auto;background-color:var(--white);position:relative;z-index:1}:host ul li label:hover{transition:color .1s ease-in}:host ul li label.router-link-active,:host ul li label:hover{background-color:rgba(var(--neutral-rgb),var(--ghost-hover))}:host ul li label .title-left{line-height:normal}:host ul li label .title{flex-grow:1;font-weight:700;padding-left:10px;cursor:pointer}:host ul li label .options,:host ul li label .options ::ng-deep{white-space:nowrap}:host ul li label .arrow{width:14px;height:14px;display:inline-block}:host ul li .content{height:100%;max-height:0;opacity:0;transition:all .5s ease-out;padding:0 20px;margin:0;background-color:var(--white)}:host ul li input[type=checkbox]:checked+label>span.arrow{transform:rotate(180deg)}:host ul li input[type=checkbox]:checked+label+.content{max-height:none;opacity:1;transition:all .5s ease-out;padding-top:24px;padding-bottom:24px}:host .emitter{background:rgba(200,20,20,.1);width:100%;height:48px}"] },] } ]; AccordionComponent.ctorParameters = () => [ { type: HttpClient } ]; AccordionComponent.propDecorators = { classes: [{ type: Input }], iconClasses: [{ type: Input }], items: [{ type: Input }], hasShadow: [{ type: Input }], request: [{ type: Input }], onItemClick: [{ type: Output }], elementId: [{ type: Input }], accordionItems: [{ type: ContentChildren, args: [ItemComponent,] }], level: [{ type: Input, args: ['level',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvZ28tc29mdHdhcmUvYWNjb3JkaW9uL3NyYy9saWIvYWNjb3JkaW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF1Q2pEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQWlDN0I7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsWUFBb0IsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtRQTVDckM7O1dBRUc7UUFDTSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQzlCOztXQUVHO1FBQ00sZ0JBQVcsR0FBWSxFQUFFLENBQUM7UUFDbkM7O1dBRUc7UUFDYSxVQUFLLEdBQW9CLEVBQUUsQ0FBQztRQUM1Qzs7V0FFRztRQUNhLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFLM0M7O1dBRUc7UUFDYyxnQkFBVyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQXdCdEYsV0FBTSxHQUFHLENBQUMsQ0FBQztJQUZuQixDQUFDO0lBSUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNXLEtBQUssQ0FBQyxLQUFVO1FBQ3pCLEVBQUUsS0FBSyxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7Y0FDM0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2NBQ25DLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBbUIsRUFBRSxNQUFtQjtRQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBbUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBcEZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQiw0L0NBQXlDOzthQUUxQzs7O1lBaERRLFVBQVU7OztzQkFzRGhCLEtBQUs7MEJBSUwsS0FBSztvQkFJTCxLQUFLO3dCQUlMLEtBQUs7c0JBSUwsS0FBSzswQkFJTCxNQUFNO3dCQUVOLEtBQUs7NkJBSUwsZUFBZSxTQUFDLGFBQWE7b0JBd0I3QixLQUFLLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBMT0dPIFlBWklMSU0gU0FOQVnEsCBWRSBUxLBDQVJFVCBBLsWeLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFNhdmUgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LCB5b3UgbWF5IG5vdCB1c2UsIGNvcHksIG1vZGlmeSxcbiAqIGRpc3RyaWJ1dGUgb3IgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhpcyBtYXRlcmlhbCBvciBhbnkgcGFydFxuICogb2YgaXQgd2l0aG91dCB0aGUgcHJpb3Igd3JpdHRlbiBjb25zZW50IG9mIExPR08gWUFaSUxJTSBTQU5BWcSwIFZFIFTEsENBUkVUIEEuxZ4uIExpbWl0ZWQuXG4gKiBBbnkgcmVwcm9kdWN0aW9uIG9mIHRoaXMgbWF0ZXJpYWwgbXVzdCBjb250YWluIHRoaXMgbm90aWNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHsgSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vaXRlbS5jb21wb25lbnQnO1xuXG4vKipcbiAqIEFjY29yZGlvbnMgYXJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIHRvZ2dsZSBiZXR3ZWVuIGhpZGluZyBhbmQgc2hvd2luZyBsYXJnZSBhbW91bnQgb2YgY29udGVudC5cbiAqIEFkZCB0aGUgYmVsb3cgY29kZSB0byB5b3VyIGNvZGUgc3RhY2sgYW5kIGdpdmUgaW5pdGlhbGl6ZXIgcGFyYW1ldGVycy5cbiAqXG4gKiA8c3ViPmFwcC5jb21wb25lbnQudHM8L3N1Yj5cbiAqXG4gKiBgYGBodG1sXG4gKiA8bG9nby1hY2NvcmRpb24gW2l0ZW1zXT1cIml0ZW1zXCIgW3N0YXJ0XT1cIjBcIiBbaWNvbkNsYXNzZXNdPVwiXCI+PC9sb2dvLWFjY29yZGlvbj5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY29yZGlvbkl0ZW0ge1xuICAvKipcbiAgICogT3B0aW9uYWwsIGlkIG9mIHRoZSBpdGVtIGlmIGl0IGNvbWVzIGZyb20gZGF0YWJhc2UsXG4gICAqL1xuICBpZD86IGFueTtcbiAgLyoqXG4gICAqIENsYXNzIG5hbWVzIHRvIGJlIGFkZGVkIHRvIG1lbnUgaXRlbVxuICAgKi9cbiAgY2xhc3Nlcz86IHN0cmluZztcbiAgLyoqXG4gICAqIENsYXNzIG5hbWVzIHRvIGJlIGFkZGVkIHRvIG1lbnUgaXRlbSBpY29uc1xuICAgKi9cbiAgaWNvbkNsYXNzZXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBY2NvcmRpb24gdGl0bGUgaW5mb3JtYXRpb24gdGhhdCBkaXNwbGF5cyBvbiBsaXN0XG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEFjY29yZGlvbiBjb250ZW50IGluZm9ybWF0aW9uIHRoYXQgc2xpZGVzIGluIGFuZCBvdXRcbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZhcmlhYmxlIHRoYXQgZGVmaW5lcyB3aGV0aGVyIHRoZSBhY2NvcmRpb24gaXRlbSBpcyBvcGVuIG9yIG5vdC5cbiAgICovXG4gIGlzT3Blbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWNjb3JkaW9ucyBhcmUgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gdG9nZ2xlIGJldHdlZW4gaGlkaW5nIGFuZCBzaG93aW5nIGxhcmdlIGFtb3VudCBvZiBjb250ZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsb2dvLWFjY29yZGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2NvcmRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3JkaW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIG9uZSBvciBtb3JlIENTUyBjbGFzc2VzIHRvIGJlIHVzZWQgYnkgdGhlIGVsZW1lbnQuIFdoZW4gc2V0LCB0aGlzIGNsYXNzIHdpbGwgYWxzbyBiZSB1c2VkIGJ5IGFsbCBjaGlsZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgb3duIGNsYXNzLlxuICAgKi9cbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgb25lIG9yIG1vcmUgQ1NTIGNsYXNzZXMgdG8gYmUgdXNlZCBieSB0aGUgZWxlbWVudCdzIGljb25zLiBXaGVuIHNldCwgdGhpcyBjbGFzcyB3aWxsIGFsc28gYmUgdXNlZCBieSBhbGwgY2hpbGQgZWxlbWVudHMgaWNvbnMgdGhhdCBkb24ndCBoYXZlIHRoZWlyIG93biBjbGFzcy5cbiAgICovXG4gIEBJbnB1dCgpIGljb25DbGFzc2VzPzogc3RyaW5nID0gJyc7XG4gIC8qKlxuICAgKiBBY2NvcmRpb24gaXRlbXMgdG8gc2hvdyB3aXRoIG5hdGl2ZSB0ZW1wbGF0ZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBBY2NvcmRpb25JdGVtW10gPSBbXTtcbiAgLyoqXG4gICAqIE9wdGlvbiB0byBzaG93IHNoYWRvdyBvbiB0aXRsZVxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhhc1NoYWRvdzogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogaHR0cCByZXF1ZXN0IHdpbGwgYmUgZ2V0IGl0ZW1zIGZyb20gc2VydmVyIGZvciBlYWNoIHRpdGxlIG9wZW5lZFxuICAgKi9cbiAgQElucHV0KCkgcmVxdWVzdD86IEh0dHBSZXF1ZXN0PGFueT47XG4gIC8qKlxuICAgKiBJdGVtIGNsaWNrIGV2ZW50IHRyaWdnZXIuIFdoZW4gY2xpY2tlZCBvbiBhbnkgaXRlbSB0aGlzIGV2ZW50IHdpbGwgYmUgY2FsbGVkIGFuZCBwdXNoZXMgdGhlIGl0ZW0gaW5mb3JtYXRpb24gdG8gdGhlIGdpdmVuIG1ldGhvZC5cbiAgICovXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBY2NvcmRpb25JdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8QWNjb3JkaW9uSXRlbT4oKTtcblxuICBASW5wdXQoKSBwdWJsaWMgZWxlbWVudElkO1xuICAvKipcbiAgICogSW5saW5lIGFjY29yZGlvbiBpdGVtcywgaWYgdGhlcmUgaXNcbiAgICovXG4gIEBDb250ZW50Q2hpbGRyZW4oSXRlbUNvbXBvbmVudCkgYWNjb3JkaW9uSXRlbXM6IFF1ZXJ5TGlzdDxJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogR2l2ZSBIdHRwQ2xpZW50IHRvIHRoZSBjb21wb25lbnQuIEZpcnN0IGltcG9ydCBIdHRwQ2xpZW50TW9kdWxlIHRvIG1haW4gTW9kdWxlIG9mIHRoZSBhcHAuIEZvciBleGFtcGxlLlxuICAgKiAgYGBgdHlwZXNjcmlwdFxuICAgKiBATmdNb2R1bGUoeyBpbXBvcnRzOiBbXG4gICAqICAgQnJvd3Nlck1vZHVsZSxcbiAgICogICBIdHRwQ2xpZW50TW9kdWxlLCAvLyBBZGQgSHR0cENsaWVudE1vZHVsZVxuICAgKiBdXG4gICAqIH0pXG4gICAqIGV4cG9ydCBjbGFzcyBBcHBNb2R1bGUge1xuICAgKiB9XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gaHR0cFxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwPzogSHR0cENsaWVudCkge1xuICB9XG5cbiAgcHJpdmF0ZSBfbGV2ZWwgPSAwO1xuXG4gIHB1YmxpYyBnZXQgbGV2ZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICB9XG5cbiAgQElucHV0KCdsZXZlbCcpXG4gIHB1YmxpYyBzZXQgbGV2ZWwobGV2ZWw6IGFueSkge1xuICAgICsrbGV2ZWw7XG4gICAgdGhpcy5fbGV2ZWwgPSBsZXZlbDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5lbGVtZW50SWQpIHtcbiAgICAgIHRoaXMuZWxlbWVudElkID0gdGhpcy5nZW5lcmF0ZUVsZW1lbnRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlRWxlbWVudElkKCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI2KSArIDk3KVxuICAgICAgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zbGljZSgyKVxuICAgICAgKyBEYXRlLm5vdygpLnRvU3RyaW5nKDE2KS5zbGljZSg0KTtcbiAgfVxuXG4gIGl0ZW1DbGljayhpdGVtOiBBY2NvcmRpb25JdGVtLCAkZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy4kb25JdGVtQ2xpY2soaXRlbSk7XG4gIH1cblxuICAkb25JdGVtQ2xpY2soaXRlbTogQWNjb3JkaW9uSXRlbSkge1xuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdChpdGVtKTtcbiAgfVxufVxuIl19