UNPKG

@kushki/ng-suka

Version:

<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>

396 lines 29 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, HostBinding, Input, Output, EventEmitter, TemplateRef, ViewChild, ElementRef, ViewContainerRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { Overlay } from '@angular/cdk/overlay'; import { TemplatePortal } from '@angular/cdk/portal'; var CalendarDayPicker = /** @class */ (function () { /** * Creates an instance of `CalendarDayPicker`. */ function CalendarDayPicker(_overlay, _viewContainerRef) { this._overlay = _overlay; this._viewContainerRef = _viewContainerRef; this._selectedDays = []; this.baseClass = true; this.containerClass = true; /** * Set to `true` for a disabled color input. */ this.disabled = false; /** * Set to `true` for a loading color input component. */ this.skeleton = false; /** * Set to `true` for an invalid color input component. */ this.invalid = false; /** * Set to `true` for a valid color input component. */ this.valid = false; /** * The unique id for the color input component. */ this.id = "calendar-day-picker-" + CalendarDayPicker.calendarDayPickerCount; /** * Sets the value attribute on the `input` element. */ this.value = ''; /** * Sets the placeholder on the `input` element. */ this.placeholder = ''; /** * Emits event notifying other classes when a change in state occurs in the input. */ // tslint:disable-next-line: no-output-native this.change = new EventEmitter(); /** * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`. */ this.onTouched = (/** * @return {?} */ function () { }); /** * Method set in `registerOnChange` to propagate changes back to the form. */ this.propagateChange = (/** * @param {?} _ * @return {?} */ function (_) { }); CalendarDayPicker.calendarDayPickerCount++; } /** * This is the initial value set to the component * @param value The input value. */ /** * This is the initial value set to the component * @param {?} value The input value. * @return {?} */ CalendarDayPicker.prototype.writeValue = /** * This is the initial value set to the component * @param {?} value The input value. * @return {?} */ function (value) { this.value = value || ''; if (value) { this._selectedDays = JSON.parse('[' + value + ']'); } }; /** * Sets a method in order to propagate changes back to the form. */ /** * Sets a method in order to propagate changes back to the form. * @param {?} fn * @return {?} */ CalendarDayPicker.prototype.registerOnChange = /** * Sets a method in order to propagate changes back to the form. * @param {?} fn * @return {?} */ function (fn) { this.propagateChange = fn; }; /** * Registers a callback to be triggered when the control has been touched. * @param fn Callback to be triggered when the number input is touched. */ /** * Registers a callback to be triggered when the control has been touched. * @param {?} fn Callback to be triggered when the number input is touched. * @return {?} */ CalendarDayPicker.prototype.registerOnTouched = /** * Registers a callback to be triggered when the control has been touched. * @param {?} fn Callback to be triggered when the number input is touched. * @return {?} */ function (fn) { this.onTouched = fn; }; /** * Sets the disabled state through the model */ /** * Sets the disabled state through the model * @param {?} isDisabled * @return {?} */ CalendarDayPicker.prototype.setDisabledState = /** * Sets the disabled state through the model * @param {?} isDisabled * @return {?} */ function (isDisabled) { this.disabled = isDisabled; }; /** * Creates a class of `NumberChange` to emit the change in the `Number`. */ /** * Creates a class of `NumberChange` to emit the change in the `Number`. * @return {?} */ CalendarDayPicker.prototype.emitChangeEvent = /** * Creates a class of `NumberChange` to emit the change in the `Number`. * @return {?} */ function () { this.change.emit(this.value); this.propagateChange(this.value); }; /** * @param {?} days * @return {?} */ CalendarDayPicker.prototype.onInputChange = /** * @param {?} days * @return {?} */ function (days) { this.value = JSON.parse('[' + days + ']'); this.emitChangeEvent(); }; /** * @param {?} days * @return {?} */ CalendarDayPicker.prototype.onDaysChange = /** * @param {?} days * @return {?} */ function (days) { this.value = days.toString(); this._selectedDays = days; this.emitChangeEvent(); }; /** * Opens the color picker dialog */ /** * Opens the color picker dialog * @return {?} */ CalendarDayPicker.prototype.openCalendarDayOverlay = /** * Opens the color picker dialog * @return {?} */ function () { var _this = this; if (!this._overlayRef) { /** @type {?} */ var positionStrategy = this._overlay .position() .flexibleConnectedTo(this.origin) .withPositions([{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 8, }]); this._overlayRef = this._overlay.create({ hasBackdrop: true, backdropClass: 'cdk-overlay-transparent-backdrop', positionStrategy: positionStrategy, }); this._overlayRef.backdropClick().subscribe((/** * @return {?} */ function () { return _this._overlayRef.detach(); })); this._portal = new TemplatePortal(this.dialog, this._viewContainerRef); } this._overlayRef.attach(this._portal); }; /** * Closes the calendar day dialog */ /** * Closes the calendar day dialog * @return {?} */ CalendarDayPicker.prototype.closeCalendarDayOverlay = /** * Closes the calendar day dialog * @return {?} */ function () { this._overlayRef.detach(); }; /** * Checks if it is a template */ /** * Checks if it is a template * @param {?} value * @return {?} */ CalendarDayPicker.prototype.isTemplate = /** * Checks if it is a template * @param {?} value * @return {?} */ function (value) { return value instanceof TemplateRef; }; /** * Variable used for creating unique ids for color input components. */ CalendarDayPicker.calendarDayPickerCount = 0; CalendarDayPicker.decorators = [ { type: Component, args: [{ selector: 'suka-calendar-day-picker', template: "\n <label *ngIf=\"skeleton && label\" class=\"label skeleton\"></label>\n <label *ngIf=\"!skeleton && label\" [for]=\"id\" class=\"label\">\n <ng-container *ngIf=\"!isTemplate(label)\">{{label}}</ng-container>\n <ng-template *ngIf=\"isTemplate(label)\" [ngTemplateOutlet]=\"label\"></ng-template>\n </label>\n <div *ngIf=\"!skeleton && helperText\" class=\"form__helper-text\">\n <ng-container *ngIf=\"!isTemplate(helperText)\">{{helperText}}</ng-container>\n <ng-template *ngIf=\"isTemplate(helperText)\" [ngTemplateOutlet]=\"helperText\"></ng-template>\n </div>\n <div\n [attr.data-invalid]=\"(invalid ? true : null)\"\n [attr.data-valid]=\"(valid ? true : null)\"\n class=\"calendar-day-picker\"\n [ngClass]=\"{\n 'calendar-day-picker--nolabel': !label,\n 'calendar-day-picker--helpertext': helperText,\n 'skeleton' : skeleton,\n 'calendar-day-picker--disabled': disabled\n }\">\n <div class=\"calendar-day-picker__input-wrapper\">\n <input\n #origin\n type=\"text\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (focus)=\"openCalendarDayOverlay()\"\n (change)=\"onInputChange($event)\"/>\n\n <suka-icon *ngIf=\"!skeleton && invalid\" icon=\"alert-circle\" class=\"calendar-day-picker__invalid\"></suka-icon>\n <suka-icon *ngIf=\"!skeleton && valid\" icon=\"check\" class=\"calendar-day-picker__valid\"></suka-icon>\n </div>\n <div *ngIf=\"invalid\" class=\"form-requirement\">\n <ng-container *ngIf=\"!isTemplate(invalidText)\">{{invalidText}}</ng-container>\n <ng-template *ngIf=\"isTemplate(invalidText)\" [ngTemplateOutlet]=\"invalidText\"></ng-template>\n </div>\n </div>\n\n <ng-template #calendarDayOverlay>\n <suka-calendar-day-overlay\n [days]=\"_selectedDays\"\n (daysChange)=\"onDaysChange($event)\"\n >\n </suka-calendar-day-overlay>\n </ng-template>\n ", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: CalendarDayPicker, multi: true } ] }] } ]; /** @nocollapse */ CalendarDayPicker.ctorParameters = function () { return [ { type: Overlay }, { type: ViewContainerRef } ]; }; CalendarDayPicker.propDecorators = { baseClass: [{ type: HostBinding, args: ['class.calendar-day-picker',] }], containerClass: [{ type: HostBinding, args: ['class.form-item',] }], disabled: [{ type: Input }], skeleton: [{ type: Input }], invalid: [{ type: Input }], valid: [{ type: Input }], id: [{ type: Input }], required: [{ type: Input }], value: [{ type: Input }], placeholder: [{ type: Input }], label: [{ type: Input }], helperText: [{ type: Input }], invalidText: [{ type: Input }], change: [{ type: Output }], origin: [{ type: ViewChild, args: ['origin', { static: false },] }], dialog: [{ type: ViewChild, args: ['calendarDayOverlay', { static: false },] }] }; return CalendarDayPicker; }()); export { CalendarDayPicker }; if (false) { /** * Variable used for creating unique ids for color input components. * @type {?} */ CalendarDayPicker.calendarDayPickerCount; /** * @type {?} * @private */ CalendarDayPicker.prototype._overlayRef; /** * @type {?} * @private */ CalendarDayPicker.prototype._portal; /** @type {?} */ CalendarDayPicker.prototype._selectedDays; /** @type {?} */ CalendarDayPicker.prototype.baseClass; /** @type {?} */ CalendarDayPicker.prototype.containerClass; /** * Set to `true` for a disabled color input. * @type {?} */ CalendarDayPicker.prototype.disabled; /** * Set to `true` for a loading color input component. * @type {?} */ CalendarDayPicker.prototype.skeleton; /** * Set to `true` for an invalid color input component. * @type {?} */ CalendarDayPicker.prototype.invalid; /** * Set to `true` for a valid color input component. * @type {?} */ CalendarDayPicker.prototype.valid; /** * The unique id for the color input component. * @type {?} */ CalendarDayPicker.prototype.id; /** * Reflects the required attribute of the `input` element. * @type {?} */ CalendarDayPicker.prototype.required; /** * Sets the value attribute on the `input` element. * @type {?} */ CalendarDayPicker.prototype.value; /** * Sets the placeholder on the `input` element. * @type {?} */ CalendarDayPicker.prototype.placeholder; /** * Sets the text inside the `label` tag. * @type {?} */ CalendarDayPicker.prototype.label; /** * Sets the optional helper text. * @type {?} */ CalendarDayPicker.prototype.helperText; /** * Sets the invalid text. * @type {?} */ CalendarDayPicker.prototype.invalidText; /** * Emits event notifying other classes when a change in state occurs in the input. * @type {?} */ CalendarDayPicker.prototype.change; /** @type {?} */ CalendarDayPicker.prototype.origin; /** @type {?} */ CalendarDayPicker.prototype.dialog; /** * Called when number input is blurred. Needed to properly implement `ControlValueAccessor`. * @type {?} */ CalendarDayPicker.prototype.onTouched; /** * Method set in `registerOnChange` to propagate changes back to the form. * @type {?} */ CalendarDayPicker.prototype.propagateChange; /** * @type {?} * @private */ CalendarDayPicker.prototype._overlay; /** * @type {?} * @private */ CalendarDayPicker.prototype._viewContainerRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF5LXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3VzaGtpL25nLXN1a2EvIiwic291cmNlcyI6WyJsaWIvY2FsZW5kYXItZGF5LXBpY2tlci9jYWxlbmRhci1kYXktcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxZQUFZLEVBQTRCLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVLLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJEO0lBNkhFOztPQUVHO0lBQ0gsMkJBQ1UsUUFBaUIsRUFDakIsaUJBQW1DO1FBRG5DLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQS9EN0Msa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFFYSxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRTNCLG1CQUFjLEdBQUcsSUFBSSxDQUFDOzs7O1FBSTdDLGFBQVEsR0FBRyxLQUFLLENBQUM7Ozs7UUFJakIsYUFBUSxHQUFHLEtBQUssQ0FBQzs7OztRQUlqQixZQUFPLEdBQUcsS0FBSyxDQUFDOzs7O1FBSWhCLFVBQUssR0FBRyxLQUFLLENBQUM7Ozs7UUFJZCxPQUFFLEdBQUcseUJBQXVCLGlCQUFpQixDQUFDLHNCQUF3QixDQUFDOzs7O1FBUXZFLFVBQUssR0FBRyxFQUFFLENBQUM7Ozs7UUFJWCxnQkFBVyxHQUFHLEVBQUUsQ0FBQzs7Ozs7UUFpQmhCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDOzs7O1FB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SUFJMUIscUNBQTBCOzs7OztJQUkxQixvQ0FBeUI7Ozs7O0lBSXpCLGtDQUF1Qjs7Ozs7SUFJdkIsK0JBQWdGOzs7OztJQUloRixxQ0FBMkI7Ozs7O0lBSTNCLGtDQUFvQjs7Ozs7SUFJcEIsd0NBQTBCOzs7OztJQUkxQixrQ0FBMEM7Ozs7O0lBSTFDLHVDQUErQzs7Ozs7SUFJL0Msd0NBQWdEOzs7OztJQUtoRCxtQ0FBc0M7O0lBRXRDLG1DQUEyRDs7SUFDM0QsbUNBQTZFOzs7OztJQWlEN0Usc0NBQWlDOzs7OztJQUtqQyw0Q0FBa0M7Ozs7O0lBaERoQyxxQ0FBeUI7Ozs7O0lBQ3pCLDhDQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE92ZXJsYXlSZWYsIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdWthLWNhbGVuZGFyLWRheS1waWNrZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxsYWJlbCAqbmdJZj1cInNrZWxldG9uICYmIGxhYmVsXCIgY2xhc3M9XCJsYWJlbCBza2VsZXRvblwiPjwvbGFiZWw+XG4gICAgPGxhYmVsICpuZ0lmPVwiIXNrZWxldG9uICYmIGxhYmVsXCIgW2Zvcl09XCJpZFwiIGNsYXNzPVwibGFiZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShsYWJlbClcIj57e2xhYmVsfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUobGFiZWwpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiAqbmdJZj1cIiFza2VsZXRvbiAmJiBoZWxwZXJUZXh0XCIgY2xhc3M9XCJmb3JtX19oZWxwZXItdGV4dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbYXR0ci5kYXRhLWludmFsaWRdPVwiKGludmFsaWQgPyB0cnVlIDogbnVsbClcIlxuICAgICAgW2F0dHIuZGF0YS12YWxpZF09XCIodmFsaWQgPyB0cnVlIDogbnVsbClcIlxuICAgICAgY2xhc3M9XCJjYWxlbmRhci1kYXktcGlja2VyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2NhbGVuZGFyLWRheS1waWNrZXItLW5vbGFiZWwnOiAhbGFiZWwsXG4gICAgICAgICdjYWxlbmRhci1kYXktcGlja2VyLS1oZWxwZXJ0ZXh0JzogaGVscGVyVGV4dCxcbiAgICAgICAgJ3NrZWxldG9uJyA6IHNrZWxldG9uLFxuICAgICAgICAnY2FsZW5kYXItZGF5LXBpY2tlci0tZGlzYWJsZWQnOiBkaXNhYmxlZFxuICAgICAgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRheS1waWNrZXJfX2lucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgI29yaWdpblxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9wZW5DYWxlbmRhckRheU92ZXJsYXkoKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIi8+XG5cbiAgICAgICAgPHN1a2EtaWNvbiAqbmdJZj1cIiFza2VsZXRvbiAmJiBpbnZhbGlkXCIgaWNvbj1cImFsZXJ0LWNpcmNsZVwiIGNsYXNzPVwiY2FsZW5kYXItZGF5LXBpY2tlcl9faW52YWxpZFwiPjwvc3VrYS1pY29uPlxuICAgICAgICA8c3VrYS1pY29uICpuZ0lmPVwiIXNrZWxldG9uICYmIHZhbGlkXCIgaWNvbj1cImNoZWNrXCIgY2xhc3M9XCJjYWxlbmRhci1kYXktcGlja2VyX192YWxpZFwiPjwvc3VrYS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiZm9ybS1yZXF1aXJlbWVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCI+e3tpbnZhbGlkVGV4dH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW52YWxpZFRleHRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2NhbGVuZGFyRGF5T3ZlcmxheT5cbiAgICAgIDxzdWthLWNhbGVuZGFyLWRheS1vdmVybGF5XG4gICAgICAgIFtkYXlzXT1cIl9zZWxlY3RlZERheXNcIlxuICAgICAgICAoZGF5c0NoYW5nZSk9XCJvbkRheXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L3N1a2EtY2FsZW5kYXItZGF5LW92ZXJsYXk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQ2FsZW5kYXJEYXlQaWNrZXIsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckRheVBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFZhcmlhYmxlIHVzZWQgZm9yIGNyZWF0aW5nIHVuaXF1ZSBpZHMgZm9yIGNvbG9yIGlucHV0IGNvbXBvbmVudHMuXG4gICAqL1xuICBzdGF0aWMgY2FsZW5kYXJEYXlQaWNrZXJDb3VudCA9IDA7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWw8YW55PjtcblxuICBfc2VsZWN0ZWREYXlzOiBudW1iZXJbXSA9IFtdO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2FsZW5kYXItZGF5LXBpY2tlcicpIGJhc2VDbGFzcyA9IHRydWU7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb3JtLWl0ZW0nKSBjb250YWluZXJDbGFzcyA9IHRydWU7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRpc2FibGVkIGNvbG9yIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBjb2xvciBpbnB1dCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCBmb3IgYW4gaW52YWxpZCBjb2xvciBpbnB1dCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIHZhbGlkIGNvbG9yIGlucHV0IGNvbXBvbmVudC5cbiAgICovXG4gIEBJbnB1dCgpIHZhbGlkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGlkIGZvciB0aGUgY29sb3IgaW5wdXQgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgaWQgPSBgY2FsZW5kYXItZGF5LXBpY2tlci0ke0NhbGVuZGFyRGF5UGlja2VyLmNhbGVuZGFyRGF5UGlja2VyQ291bnR9YDtcbiAgLyoqXG4gICAqIFJlZmxlY3RzIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgYXR0cmlidXRlIG9uIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICAvKipcbiAgICogU2V0cyB0aGUgcGxhY2Vob2xkZXIgb24gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0ZXh0IGluc2lkZSB0aGUgYGxhYmVsYCB0YWcuXG4gICAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbmFsIGhlbHBlciB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgaGVscGVyVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGludmFsaWQgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogRW1pdHMgZXZlbnQgbm90aWZ5aW5nIG90aGVyIGNsYXNzZXMgd2hlbiBhIGNoYW5nZSBpbiBzdGF0ZSBvY2N1cnMgaW4gdGhlIGlucHV0LlxuICAgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgnb3JpZ2luJywgeyBzdGF0aWM6IGZhbHNlIH0pIG9yaWdpbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXJEYXlPdmVybGF5JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRpYWxvZzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBgQ2FsZW5kYXJEYXlQaWNrZXJgLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIENhbGVuZGFyRGF5UGlja2VyLmNhbGVuZGFyRGF5UGlja2VyQ291bnQrKztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlIHNldCB0byB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgaW5wdXQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZERheXMgPSBKU09OLnBhcnNlKCdbJyArIHZhbHVlICsgJ10nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIG1ldGhvZCBpbiBvcmRlciB0byBwcm9wYWdhdGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgdHJpZ2dlcmVkIHdoZW4gdGhlIGNvbnRyb2wgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICogQHBhcmFtIGZuIENhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBudW1iZXIgaW5wdXQgaXMgdG91Y2hlZC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSB0aHJvdWdoIHRoZSBtb2RlbFxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbnVtYmVyIGlucHV0IGlzIGJsdXJyZWQuIE5lZWRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYC5cbiAgICovXG4gIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4geyB9O1xuXG4gIC8qKlxuICAgKiBNZXRob2Qgc2V0IGluIGByZWdpc3Rlck9uQ2hhbmdlYCB0byBwcm9wYWdhdGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtLlxuICAgKi9cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY2xhc3Mgb2YgYE51bWJlckNoYW5nZWAgdG8gZW1pdCB0aGUgY2hhbmdlIGluIHRoZSBgTnVtYmVyYC5cbiAgICovXG4gIGVtaXRDaGFuZ2VFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZShkYXlzOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gSlNPTi5wYXJzZSgnWycgKyBkYXlzICsgJ10nKTtcbiAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgb25EYXlzQ2hhbmdlKGRheXM6IG51bWJlcltdKSB7XG4gICAgdGhpcy52YWx1ZSA9IGRheXMudG9TdHJpbmcoKTtcbiAgICB0aGlzLl9zZWxlY3RlZERheXMgPSBkYXlzO1xuICAgIHRoaXMuZW1pdENoYW5nZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNvbG9yIHBpY2tlciBkaWFsb2dcbiAgICovXG4gIG9wZW5DYWxlbmRhckRheU92ZXJsYXkoKSB7XG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLm9yaWdpbilcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoW3tcbiAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICBvZmZzZXRZOiA4LFxuICAgICAgICB9XSk7XG5cbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpKTtcbiAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmRpYWxvZywgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG5cbiAgICB9XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgY2FsZW5kYXIgZGF5IGRpYWxvZ1xuICAgKi9cbiAgY2xvc2VDYWxlbmRhckRheU92ZXJsYXkoKSB7XG4gICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgaXQgaXMgYSB0ZW1wbGF0ZVxuICAgKi9cbiAgcHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxufVxuIl19