UNPKG

@logo-software/accordion

Version:

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

125 lines 24.7 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, EventEmitter, Input, Output } from '@angular/core'; /** * Item component determines Accordion Item's title and its content. Item's title attribute will be the display text of the tem. And its child DOM elements will be the content of the accordion item. * * <sub>app.component.ts</sub> * * ```html * <logo-accordion-item * (onInit)="accordionItemInit($event)" * (onClick)="accordionItemClick($event)" * [params]="{id: 'user-id-1'}" * [title]="'My Accordion Item'" * [isHidden]="false" * [isOpen]="false" * [icon]="'le-home'" * [selectorId]="'myUniqueId'" * [classes]="'my-own-theme'" * > * <div>Content of the Accordion Item</div> * </logo-accordion-item> * ``` */ export class ItemComponent { constructor() { /** * Viewable status of the accordion item. */ this.isHidden = false; /** * Open status of the accordion item. */ this.isOpen = false; /** * Icon css class of the item. This icon will be shown instead of the item header */ this.icon = null; /** * Css classes of the item. */ this.classes = null; /** * Unique Id for content selector */ this.selectorId = null; /** * Init event emitter that runs when the step is initialized. This will lets developer to trigger step loaded or not. */ this.onInit = new EventEmitter(); /** * Click event emmitter on item clicked. */ this.onClick = new EventEmitter(); } ngAfterViewInit() { this.onInit.emit(this); } accordionItemClick($event) { this.$onAccordionItemClick(this); } $onAccordionItemClick(item) { this.onClick.emit(item); } ngOnInit() { if (!this.selectorId) { this.selectorId = this.generateElementId(); } } generateElementId() { return String.fromCharCode(Math.floor(Math.random() * 26) + 97) + Math.random().toString(16).slice(2) + Date.now().toString(16).slice(4); } } ItemComponent.decorators = [ { type: Component, args: [{ selector: 'logo-accordion-item', template: ` <li [hidden]="isHidden" [ngClass]="classes" class="level-0 accordion-category"> <input [checked]="isOpen" hidden id="{{selectorId}}" type="checkbox"/> <label (click)="accordionItemClick()" class="label label-category" for="{{selectorId}}" > <div class="title-left"> <ng-content select="[titleLeft]"></ng-content> </div> <div *ngIf="!!icon" [ngClass]="icon" class="{{icon}}"></div> <div class="title"> <p class="large">{{title}}</p> </div> <div class="options"> <ng-content select="[option]"></ng-content> </div> <div class="arrow le-arrow_down"></div> </label> <div class="content"> <ng-content></ng-content> </div> </li> `, 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 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 li label:hover{background-color:rgba(var(--neutral-rgb),var(--ghost-hover));transition:color .1s ease-in}:host li label .title-left{line-height:normal}:host li label .title{flex-grow:1;font-weight:700;padding-left:10px;cursor:pointer}:host li label .options,:host li label .options ::ng-deep{white-space:nowrap}:host li label .arrow{width:14px;height:14px;display:inline-block}:host li .content{height:100%;max-height:0;opacity:0;transition:all .5s ease-out;padding:0 20px;margin:0;background-color:var(--white)}:host li input[type=checkbox]:checked+label>span.arrow{transform:rotate(180deg)}:host li input[type=checkbox]:checked+label+.content{max-height:none;opacity:1;transition:all .5s ease-out;padding-top:24px;padding-bottom:24px}"] },] } ]; ItemComponent.propDecorators = { title: [{ type: Input }], params: [{ type: Input }], isHidden: [{ type: Input }], isOpen: [{ type: Input }], icon: [{ type: Input }], classes: [{ type: Input }], selectorId: [{ type: Input }], onInit: [{ type: Output }], onClick: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2dvLXNvZnR3YXJlL2FjY29yZGlvbi9zcmMvbGliL2l0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBQ0gsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBOEJILE1BQU0sT0FBTyxhQUFhO0lBN0IxQjtRQXNDRTs7V0FFRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDbkM7O1dBRUc7UUFDTSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2pDOztXQUVHO1FBQ00sU0FBSSxHQUFXLElBQUksQ0FBQztRQUM3Qjs7V0FFRztRQUNNLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDaEM7O1dBRUc7UUFDTSxlQUFVLEdBQVcsSUFBSSxDQUFDO1FBQ25DOztXQUVHO1FBQ08sV0FBTSxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUNsRjs7V0FFRztRQUNPLFlBQU8sR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7SUF5QnJGLENBQUM7SUF2QkMsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFtQjtRQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQW1CO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO2NBQzNELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztjQUNuQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7WUF6RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JUOzthQUVGOzs7b0JBS0UsS0FBSztxQkFJTCxLQUFLO3VCQUlMLEtBQUs7cUJBSUwsS0FBSzttQkFJTCxLQUFLO3NCQUlMLEtBQUs7eUJBSUwsS0FBSztxQkFJTCxNQUFNO3NCQUlOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTE9HTyBZQVpJTElNIFNBTkFZxLAgVkUgVMSwQ0FSRVQgQS7Fni4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBTYXZlIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdywgeW91IG1heSBub3QgdXNlLCBjb3B5LCBtb2RpZnksXG4gKiBkaXN0cmlidXRlIG9yIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoaXMgbWF0ZXJpYWwgb3IgYW55IHBhcnRcbiAqIG9mIGl0IHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gY29uc2VudCBvZiBMT0dPIFlBWklMSU0gU0FOQVnEsCBWRSBUxLBDQVJFVCBBLsWeLiBMaW1pdGVkLlxuICogQW55IHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsIG11c3QgY29udGFpbiB0aGlzIG5vdGljZS5cbiAqL1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuLyoqXG4gKiBJdGVtIGNvbXBvbmVudCBkZXRlcm1pbmVzIEFjY29yZGlvbiBJdGVtJ3MgdGl0bGUgYW5kIGl0cyBjb250ZW50LiBJdGVtJ3MgdGl0bGUgYXR0cmlidXRlIHdpbGwgYmUgdGhlIGRpc3BsYXkgdGV4dCBvZiB0aGUgdGVtLiBBbmQgaXRzIGNoaWxkIERPTSBlbGVtZW50cyB3aWxsIGJlIHRoZSBjb250ZW50IG9mIHRoZSBhY2NvcmRpb24gaXRlbS5cbiAqXG4gKiA8c3ViPmFwcC5jb21wb25lbnQudHM8L3N1Yj5cbiAqXG4gKiBgYGBodG1sXG4gKiAgPGxvZ28tYWNjb3JkaW9uLWl0ZW1cbiAqICAgKG9uSW5pdCk9XCJhY2NvcmRpb25JdGVtSW5pdCgkZXZlbnQpXCJcbiAqICAgKG9uQ2xpY2spPVwiYWNjb3JkaW9uSXRlbUNsaWNrKCRldmVudClcIlxuICogICBbcGFyYW1zXT1cIntpZDogJ3VzZXItaWQtMSd9XCJcbiAqICAgW3RpdGxlXT1cIidNeSBBY2NvcmRpb24gSXRlbSdcIlxuICogICBbaXNIaWRkZW5dPVwiZmFsc2VcIlxuICogICBbaXNPcGVuXT1cImZhbHNlXCJcbiAqICAgW2ljb25dPVwiJ2xlLWhvbWUnXCJcbiAqICAgW3NlbGVjdG9ySWRdPVwiJ215VW5pcXVlSWQnXCJcbiAqICAgW2NsYXNzZXNdPVwiJ215LW93bi10aGVtZSdcIlxuICogID5cbiAqICAgIDxkaXY+Q29udGVudCBvZiB0aGUgQWNjb3JkaW9uIEl0ZW08L2Rpdj5cbiAqICA8L2xvZ28tYWNjb3JkaW9uLWl0ZW0+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbG9nby1hY2NvcmRpb24taXRlbScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGxpIFtoaWRkZW5dPVwiaXNIaWRkZW5cIiBbbmdDbGFzc109XCJjbGFzc2VzXCIgY2xhc3M9XCJsZXZlbC0wIGFjY29yZGlvbi1jYXRlZ29yeVwiPlxuICAgICAgPGlucHV0IFtjaGVja2VkXT1cImlzT3BlblwiIGhpZGRlbiBpZD1cInt7c2VsZWN0b3JJZH19XCIgdHlwZT1cImNoZWNrYm94XCIvPlxuICAgICAgPGxhYmVsXG4gICAgICAgIChjbGljayk9XCJhY2NvcmRpb25JdGVtQ2xpY2soKVwiXG4gICAgICAgIGNsYXNzPVwibGFiZWwgbGFiZWwtY2F0ZWdvcnlcIlxuICAgICAgICBmb3I9XCJ7e3NlbGVjdG9ySWR9fVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZS1sZWZ0XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3RpdGxlTGVmdF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiISFpY29uXCIgW25nQ2xhc3NdPVwiaWNvblwiIGNsYXNzPVwie3tpY29ufX1cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJsYXJnZVwiPnt7dGl0bGV9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29wdGlvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3cgbGUtYXJyb3dfZG93blwiPjwvZGl2PlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gIGAsXG4gIHN0eWxlVXJsczogWydpdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIGFjY29yZGlvbiBpdGVtXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAvKipcbiAgICogUGFyYW1zIG9mIHRoZSBhY2NvcmRpb24gaWYgbmVlZGVkLlxuICAgKi9cbiAgQElucHV0KCkgcGFyYW1zOiBQYXJhbXM7XG4gIC8qKlxuICAgKiBWaWV3YWJsZSBzdGF0dXMgb2YgdGhlIGFjY29yZGlvbiBpdGVtLlxuICAgKi9cbiAgQElucHV0KCkgaXNIaWRkZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIE9wZW4gc3RhdHVzIG9mIHRoZSBhY2NvcmRpb24gaXRlbS5cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogSWNvbiBjc3MgY2xhc3Mgb2YgdGhlIGl0ZW0uIFRoaXMgaWNvbiB3aWxsIGJlIHNob3duIGluc3RlYWQgb2YgdGhlIGl0ZW0gaGVhZGVyXG4gICAqL1xuICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSBudWxsO1xuICAvKipcbiAgICogQ3NzIGNsYXNzZXMgb2YgdGhlIGl0ZW0uXG4gICAqL1xuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmcgPSBudWxsO1xuICAvKipcbiAgICogVW5pcXVlIElkIGZvciBjb250ZW50IHNlbGVjdG9yXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3RvcklkOiBzdHJpbmcgPSBudWxsO1xuICAvKipcbiAgICogSW5pdCBldmVudCBlbWl0dGVyIHRoYXQgcnVucyB3aGVuIHRoZSBzdGVwIGlzIGluaXRpYWxpemVkLiBUaGlzIHdpbGwgbGV0cyBkZXZlbG9wZXIgdG8gdHJpZ2dlciBzdGVwIGxvYWRlZCBvciBub3QuXG4gICAqL1xuICBAT3V0cHV0KCkgb25Jbml0OiBFdmVudEVtaXR0ZXI8SXRlbUNvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEl0ZW1Db21wb25lbnQ+KCk7XG4gIC8qKlxuICAgKiBDbGljayBldmVudCBlbW1pdHRlciBvbiBpdGVtIGNsaWNrZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPEl0ZW1Db21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJdGVtQ29tcG9uZW50PigpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMpO1xuICB9XG5cbiAgYWNjb3JkaW9uSXRlbUNsaWNrKCRldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLiRvbkFjY29yZGlvbkl0ZW1DbGljayh0aGlzKTtcbiAgfVxuXG4gICRvbkFjY29yZGlvbkl0ZW1DbGljayhpdGVtOiBJdGVtQ29tcG9uZW50KSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoaXRlbSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0b3JJZCkge1xuICAgICAgdGhpcy5zZWxlY3RvcklkID0gdGhpcy5nZW5lcmF0ZUVsZW1lbnRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlRWxlbWVudElkKCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI2KSArIDk3KVxuICAgICAgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zbGljZSgyKVxuICAgICAgKyBEYXRlLm5vdygpLnRvU3RyaW5nKDE2KS5zbGljZSg0KTtcbiAgfVxufVxuIl19