UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

245 lines 21.9 kB
import { __decorate, __metadata } from "tslib"; import { Component, ElementRef, HostBinding, Input, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { IgxIconService } from './icon.service'; /** * **Ignite UI for Angular Icon** - * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/icon.html) * * The Ignite UI Icon makes it easy for developers to include material design icons directly in their markup. The icons * support custom colors and can be marked as active or disabled using the `isActive` property. This will change the appearance * of the icon. * * Example: * ```html * <igx-icon color="#00ff00" isActive="true">home</igx-icon> * ``` */ let NEXT_ID = 0; let IgxIconComponent = class IgxIconComponent { constructor(_el, iconService) { this._el = _el; this.iconService = iconService; /** * This allows you to change the value of `class.igx-icon`. By default it's `igx-icon`. *```typescript *@ViewChild("MyIcon") public icon: IgxIconComponent; *constructor(private cdRef:ChangeDetectorRef) {} *ngAfterViewInit() { * this.icon.cssClass = ""; * this.cdRef.detectChanges(); *} * ``` */ this.cssClass = 'igx-icon'; /** * This allows you to disable the `aria-hidden` attribute. By default it's applied. *```typescript *@ViewChild("MyIcon") public icon: IgxIconComponent; *constructor(private cdRef:ChangeDetectorRef) {} *ngAfterViewInit() { * this.icon.ariaHidden = false; * this.cdRef.detectChanges(); *} * ``` */ this.ariaHidden = true; /** * An @Input property that sets the value of the `id` attribute. *```html *<igx-icon id="igx-icon-1" fontSet="material" color="blue" [isActive]="false">settings</igx-icon> *``` */ this.id = `igx-icon-${NEXT_ID++}`; /** * An @Input property that allows you to disable the `active` property. By default it's applied. *```html *<igx-icon [isActive]="false" fontSet="material" color="blue">settings</igx-icon> *``` */ this.active = true; this.el = _el; this.font = this.iconService.defaultFontSet; this.iconService.registerFontSetAlias('material', 'material-icons'); } /** * @hidden */ ngOnInit() { this.updateIconClass(); } /** * An accessor that returns the value of the font property. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconFont = this.icon.getFontSet; * } * ``` */ get getFontSet() { return this.font; } /** * An accessor that returns the value of the active property. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconActive = this.icon.getActive; * } * ``` */ get getActive() { return this.active; } /** * An accessor that returns inactive property. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconActive = this.icon.getInactive; * } * ``` */ get getInactive() { return !this.active; } /** * An accessor that returns the opposite value of the `iconColor` property. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconColor = this.icon.getIconColor; * } * ``` */ get getIconColor() { return this.iconColor; } /** * An accessor that returns the value of the iconName property. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconName = this.icon.getIconName; * } * ``` */ get getIconName() { return this.iconName; } /** * An accessor that returns the key of the SVG image. * The key consists of the fontSet and the iconName separated by underscore. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let svgKey = this.icon.getSvgKey; * } * ``` */ get getSvgKey() { if (this.iconService.isSvgIconCached(this.iconName, this.font)) { return '#' + this.iconService.getSvgIconKey(this.iconName, this.font); } return null; } /** * An accessor that returns a TemplateRef to explicit, svg or no ligature. *```typescript *@ViewChild("MyIcon") *public icon: IgxIconComponent; *ngAfterViewInit() { * let iconTemplate = this.icon.template; * } * ``` */ get template() { if (this.iconName) { if (this.iconService.isSvgIconCached(this.iconName, this.font)) { return this.svgImage; } return this.noLigature; } return this.explicitLigature; } /** * @hidden */ updateIconClass() { const className = this.iconService.fontSetClassName(this.font); this.el.nativeElement.classList.add(className); if (this.iconName && !this.iconService.isSvgIconCached(this.iconName, this.font)) { this.el.nativeElement.classList.add(this.iconName); } } }; IgxIconComponent.ctorParameters = () => [ { type: ElementRef }, { type: IgxIconService } ]; __decorate([ ViewChild('noLigature', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxIconComponent.prototype, "noLigature", void 0); __decorate([ ViewChild('explicitLigature', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxIconComponent.prototype, "explicitLigature", void 0); __decorate([ ViewChild('svgImage', { read: TemplateRef, static: true }), __metadata("design:type", TemplateRef) ], IgxIconComponent.prototype, "svgImage", void 0); __decorate([ HostBinding('class.igx-icon'), __metadata("design:type", Object) ], IgxIconComponent.prototype, "cssClass", void 0); __decorate([ HostBinding('attr.aria-hidden'), __metadata("design:type", Object) ], IgxIconComponent.prototype, "ariaHidden", void 0); __decorate([ HostBinding('attr.id'), Input(), __metadata("design:type", Object) ], IgxIconComponent.prototype, "id", void 0); __decorate([ Input('fontSet'), __metadata("design:type", String) ], IgxIconComponent.prototype, "font", void 0); __decorate([ Input('isActive'), __metadata("design:type", Object) ], IgxIconComponent.prototype, "active", void 0); __decorate([ Input('color'), __metadata("design:type", String) ], IgxIconComponent.prototype, "iconColor", void 0); __decorate([ Input('name'), __metadata("design:type", String) ], IgxIconComponent.prototype, "iconName", void 0); __decorate([ HostBinding('class.igx-icon--inactive'), __metadata("design:type", Boolean), __metadata("design:paramtypes", []) ], IgxIconComponent.prototype, "getInactive", null); __decorate([ HostBinding('style.color'), __metadata("design:type", String), __metadata("design:paramtypes", []) ], IgxIconComponent.prototype, "getIconColor", null); IgxIconComponent = __decorate([ Component({ selector: 'igx-icon', template: "<ng-template #noLigature></ng-template>\n\n<ng-template #explicitLigature>\n <ng-content></ng-content>\n</ng-template>\n\n<ng-template #svgImage>\n <svg>\n <use [attr.href]=\"getSvgKey\"></use>\n </svg>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template\"></ng-container>\n" }), __metadata("design:paramtypes", [ElementRef, IgxIconService]) ], IgxIconComponent); export { IgxIconComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQU9oQixJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFnQjtJQTBGekIsWUFBb0IsR0FBZSxFQUFVLFdBQTJCO1FBQXBELFFBQUcsR0FBSCxHQUFHLENBQVk7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFoRnhFOzs7Ozs7Ozs7O1dBVUc7UUFFSSxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBRTdCOzs7Ozs7Ozs7O1dBVUc7UUFFSSxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXpCOzs7OztVQUtFO1FBR0ssT0FBRSxHQUFHLFlBQVksT0FBTyxFQUFFLEVBQUUsQ0FBQztRQVdwQzs7Ozs7VUFLRTtRQUVLLFdBQU0sR0FBRyxJQUFJLENBQUM7UUEyQmpCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQUks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QUFLLENBQUMsT0FBTyxDQUFDOzttREFDVTtBQVV6QjtJQURDLEtBQUssQ0FBQyxNQUFNLENBQUM7O2tEQUNVO0FBMkR4QjtJQURDLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQzs7O21EQUd2QztBQWFEO0lBREMsV0FBVyxDQUFDLGFBQWEsQ0FBQzs7O29EQUcxQjtBQS9KUSxnQkFBZ0I7SUFMNUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLFVBQVU7UUFDcEIsd1RBQWtDO0tBQ3JDLENBQUM7cUNBNEYyQixVQUFVLEVBQXVCLGNBQWM7R0ExRi9ELGdCQUFnQixDQW1PNUI7U0FuT1ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuL2ljb24uc2VydmljZSc7XG5cbi8qKlxuICogKipJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgSWNvbioqIC1cbiAqIFtEb2N1bWVudGF0aW9uXShodHRwczovL3d3dy5pbmZyYWdpc3RpY3MuY29tL3Byb2R1Y3RzL2lnbml0ZS11aS1hbmd1bGFyL2FuZ3VsYXIvY29tcG9uZW50cy9pY29uLmh0bWwpXG4gKlxuICogVGhlIElnbml0ZSBVSSBJY29uIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gaW5jbHVkZSBtYXRlcmlhbCBkZXNpZ24gaWNvbnMgZGlyZWN0bHkgaW4gdGhlaXIgbWFya3VwLiBUaGUgaWNvbnNcbiAqIHN1cHBvcnQgY3VzdG9tIGNvbG9ycyBhbmQgY2FuIGJlIG1hcmtlZCBhcyBhY3RpdmUgb3IgZGlzYWJsZWQgdXNpbmcgdGhlIGBpc0FjdGl2ZWAgcHJvcGVydHkuIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGFwcGVhcmFuY2VcbiAqIG9mIHRoZSBpY29uLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBodG1sXG4gKiA8aWd4LWljb24gY29sb3I9XCIjMDBmZjAwXCIgaXNBY3RpdmU9XCJ0cnVlXCI+aG9tZTwvaWd4LWljb24+XG4gKiBgYGBcbiAqL1xubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1pY29uJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2ljb24uY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4SWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnbm9MaWdhdHVyZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgbm9MaWdhdHVyZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnZXhwbGljaXRMaWdhdHVyZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByaXZhdGUgZXhwbGljaXRMaWdhdHVyZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnc3ZnSW1hZ2UnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcml2YXRlIHN2Z0ltYWdlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiAgVGhpcyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYGNsYXNzLmlneC1pY29uYC4gQnkgZGVmYXVsdCBpdCdzIGBpZ3gtaWNvbmAuXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpAVmlld0NoaWxkKFwiTXlJY29uXCIpIHB1YmxpYyBpY29uOiBJZ3hJY29uQ29tcG9uZW50O1xuICAgICAqY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjpDaGFuZ2VEZXRlY3RvclJlZikge31cbiAgICAgKm5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICB0aGlzLmljb24uY3NzQ2xhc3MgPSBcIlwiO1xuICAgICAqICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAqfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWljb24nKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtaWNvbic7XG5cbiAgICAvKipcbiAgICAgKiAgVGhpcyBhbGxvd3MgeW91IHRvIGRpc2FibGUgdGhlIGBhcmlhLWhpZGRlbmAgYXR0cmlidXRlLiBCeSBkZWZhdWx0IGl0J3MgYXBwbGllZC5cbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKkBWaWV3Q2hpbGQoXCJNeUljb25cIikgcHVibGljIGljb246IElneEljb25Db21wb25lbnQ7XG4gICAgICpjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOkNoYW5nZURldGVjdG9yUmVmKSB7fVxuICAgICAqbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgIHRoaXMuaWNvbi5hcmlhSGlkZGVuID0gZmFsc2U7XG4gICAgICogICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICp9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcbiAgICBwdWJsaWMgYXJpYUhpZGRlbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAqICBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUuXG4gICAgKmBgYGh0bWxcbiAgICAqPGlneC1pY29uIGlkPVwiaWd4LWljb24tMVwiIGZvbnRTZXQ9XCJtYXRlcmlhbFwiIGNvbG9yPVwiYmx1ZVwiIFtpc0FjdGl2ZV09XCJmYWxzZVwiPnNldHRpbmdzPC9pZ3gtaWNvbj5cbiAgICAqYGBgXG4gICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1pY29uLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAqICBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGZvbnRTZXRgLiBCeSBkZWZhdWx0IGl0J3MgXCJtYXRlcmlhbFwiLlxuICAgICpgYGBodG1sXG4gICAgKjxpZ3gtaWNvbiBmb250U2V0PVwibWF0ZXJpYWxcIiBjb2xvcj1cImJsdWVcIiBbaXNBY3RpdmVdPVwiZmFsc2VcIj5zZXR0aW5nczwvaWd4LWljb24+XG4gICAgKmBgYFxuICAgICovXG4gICAgQElucHV0KCdmb250U2V0JylcbiAgICBwdWJsaWMgZm9udDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgKiAgQW4gQElucHV0IHByb3BlcnR5IHRoYXQgYWxsb3dzIHlvdSB0byBkaXNhYmxlIHRoZSBgYWN0aXZlYCBwcm9wZXJ0eS4gQnkgZGVmYXVsdCBpdCdzIGFwcGxpZWQuXG4gICAgKmBgYGh0bWxcbiAgICAqPGlneC1pY29uIFtpc0FjdGl2ZV09XCJmYWxzZVwiIGZvbnRTZXQ9XCJtYXRlcmlhbFwiIGNvbG9yPVwiYmx1ZVwiPnNldHRpbmdzPC9pZ3gtaWNvbj5cbiAgICAqYGBgXG4gICAgKi9cbiAgICBASW5wdXQoJ2lzQWN0aXZlJylcbiAgICBwdWJsaWMgYWN0aXZlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICogIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBgaWNvbkNvbG9yYCBvZiB0aGUgaWNvbi5cbiAgICAqYGBgaHRtbFxuICAgICo8aWd4LWljb24gY29sb3I9XCJibHVlXCIgW2lzQWN0aXZlXT1cInRydWVcIiBmb250U2V0PVwibWF0ZXJpYWxcIj5zZXR0aW5nczwvaWd4LWljb24+XG4gICAgKmBgYFxuICAgICovXG4gICAgQElucHV0KCdjb2xvcicpXG4gICAgcHVibGljIGljb25Db2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgKiAgQW4gQElucHV0IHByb3BlcnR5IHRoYXQgYWxsb3dzIHlvdSB0byBzZXQgdGhlIGBpY29uTmFtZWAgb2YgdGhlIGljb24uXG4gICAgKiAgVGhlIGBpY29uTmFtZWAgY2FuIGJlIHNldCB1c2luZyB0aGUgYG5hbWVgIHByb3BlcnR5LlxuICAgICpgYGBodG1sXG4gICAgKjxpZ3gtaWNvbiBjb2xvcj1cImJsdWVcIiBbaXNBY3RpdmVdPVwidHJ1ZVwiIGZvbnRTZXQ9XCJtYXRlcmlhbFwiPnF1ZXN0aW9uX2Fuc3dlcjwvaWd4LWljb24+XG4gICAgKmBgYFxuICAgICovXG4gICAgQElucHV0KCduYW1lJylcbiAgICBwdWJsaWMgaWNvbk5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEFuIEVsZW1lbnRSZWYgcHJvcGVydHkgb2YgdGhlIGBpZ3gtaWNvbmAgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLCBwcml2YXRlIGljb25TZXJ2aWNlOiBJZ3hJY29uU2VydmljZSkge1xuICAgICAgICB0aGlzLmVsID0gX2VsO1xuICAgICAgICB0aGlzLmZvbnQgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGb250U2V0O1xuICAgICAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRm9udFNldEFsaWFzKCdtYXRlcmlhbCcsICdtYXRlcmlhbC1pY29ucycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVJY29uQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQW4gYWNjZXNzb3IgdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZm9udCBwcm9wZXJ0eS5cbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKkBWaWV3Q2hpbGQoXCJNeUljb25cIilcbiAgICAgKnB1YmxpYyBpY29uOiBJZ3hJY29uQ29tcG9uZW50O1xuICAgICAqbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgIGxldCBpY29uRm9udCA9IHRoaXMuaWNvbi5nZXRGb250U2V0O1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgZ2V0Rm9udFNldCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb250O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUgcHJvcGVydHkuXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpAVmlld0NoaWxkKFwiTXlJY29uXCIpXG4gICAgICpwdWJsaWMgaWNvbjogSWd4SWNvbkNvbXBvbmVudDtcbiAgICAgKm5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICBsZXQgaWNvbkFjdGl2ZSA9IHRoaXMuaWNvbi5nZXRBY3RpdmU7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGdldCBnZXRBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQW4gYWNjZXNzb3IgdGhhdCByZXR1cm5zIGluYWN0aXZlIHByb3BlcnR5LlxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqQFZpZXdDaGlsZChcIk15SWNvblwiKVxuICAgICAqcHVibGljIGljb246IElneEljb25Db21wb25lbnQ7XG4gICAgICpuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgbGV0IGljb25BY3RpdmUgPSB0aGlzLmljb24uZ2V0SW5hY3RpdmU7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWljb24tLWluYWN0aXZlJylcbiAgICBnZXQgZ2V0SW5hY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5hY3RpdmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFuIGFjY2Vzc29yIHRoYXQgcmV0dXJucyB0aGUgb3Bwb3NpdGUgdmFsdWUgb2YgdGhlIGBpY29uQ29sb3JgIHByb3BlcnR5LlxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqQFZpZXdDaGlsZChcIk15SWNvblwiKVxuICAgICAqcHVibGljIGljb246IElneEljb25Db21wb25lbnQ7XG4gICAgICpuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgbGV0IGljb25Db2xvciA9IHRoaXMuaWNvbi5nZXRJY29uQ29sb3I7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuY29sb3InKVxuICAgIGdldCBnZXRJY29uQ29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvbkNvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBpY29uTmFtZSBwcm9wZXJ0eS5cbiAgICAgKmBgYHR5cGVzY3JpcHRcbiAgICAgKkBWaWV3Q2hpbGQoXCJNeUljb25cIilcbiAgICAgKnB1YmxpYyBpY29uOiBJZ3hJY29uQ29tcG9uZW50O1xuICAgICAqbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICAgIGxldCBpY29uTmFtZSA9IHRoaXMuaWNvbi5nZXRJY29uTmFtZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IGdldEljb25OYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmljb25OYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIGtleSBvZiB0aGUgU1ZHIGltYWdlLlxuICAgICAqICBUaGUga2V5IGNvbnNpc3RzIG9mIHRoZSBmb250U2V0IGFuZCB0aGUgaWNvbk5hbWUgc2VwYXJhdGVkIGJ5IHVuZGVyc2NvcmUuXG4gICAgICpgYGB0eXBlc2NyaXB0XG4gICAgICpAVmlld0NoaWxkKFwiTXlJY29uXCIpXG4gICAgICpwdWJsaWMgaWNvbjogSWd4SWNvbkNvbXBvbmVudDtcbiAgICAgKm5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgKiAgICBsZXQgc3ZnS2V5ID0gdGhpcy5pY29uLmdldFN2Z0tleTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IGdldFN2Z0tleSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pY29uU2VydmljZS5pc1N2Z0ljb25DYWNoZWQodGhpcy5pY29uTmFtZSwgdGhpcy5mb250KSkge1xuICAgICAgICAgICAgcmV0dXJuICcjJyArIHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbktleSh0aGlzLmljb25OYW1lLCB0aGlzLmZvbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogICBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgYSBUZW1wbGF0ZVJlZiB0byBleHBsaWNpdCwgc3ZnIG9yIG5vIGxpZ2F0dXJlLlxuICAgICAqYGBgdHlwZXNjcmlwdFxuICAgICAqQFZpZXdDaGlsZChcIk15SWNvblwiKVxuICAgICAqcHVibGljIGljb246IElneEljb25Db21wb25lbnQ7XG4gICAgICpuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogICAgbGV0IGljb25UZW1wbGF0ZSA9IHRoaXMuaWNvbi50ZW1wbGF0ZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0IHRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIGlmICh0aGlzLmljb25OYW1lKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pY29uU2VydmljZS5pc1N2Z0ljb25DYWNoZWQodGhpcy5pY29uTmFtZSwgdGhpcy5mb250KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN2Z0ltYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub0xpZ2F0dXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGljaXRMaWdhdHVyZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVJY29uQ2xhc3MoKSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuaWNvblNlcnZpY2UuZm9udFNldENsYXNzTmFtZSh0aGlzLmZvbnQpO1xuICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmljb25OYW1lICYmICF0aGlzLmljb25TZXJ2aWNlLmlzU3ZnSWNvbkNhY2hlZCh0aGlzLmljb25OYW1lLCB0aGlzLmZvbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmljb25OYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==