@testgorilla/tgo-ui 2.23.36 → 2.23.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -56,6 +56,13 @@ export declare class MultiInputComponent implements ControlValueAccessor, OnInit
56
56
  * @memberof MultiInputComponent
57
57
  */
58
58
  label: string;
59
+ /**
60
+ *
61
+ * @description Defines the placeholder of the multi input
62
+ * @type {string}
63
+ * @memberof MultiInputComponent
64
+ */
65
+ placeholder: string;
59
66
  /**
60
67
  *
61
68
  * @description Allow decimal values in the multi input
@@ -154,7 +161,7 @@ export declare class MultiInputComponent implements ControlValueAccessor, OnInit
154
161
  private addValidation;
155
162
  private updateDisableState;
156
163
  static ɵfac: i0.ɵɵFactoryDeclaration<MultiInputComponent, [{ optional: true; self: true; }, { optional: true; }, null]>;
157
- static ɵcmp: i0.ɵɵComponentDeclaration<MultiInputComponent, "ui-multi-input", never, { "itemsList": { "alias": "itemsList"; "required": true; }; "itemTextField": { "alias": "itemTextField"; "required": true; }; "itemValueField": { "alias": "itemValueField"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "label": { "alias": "label"; "required": false; }; "allowDecimal": { "alias": "allowDecimal"; "required": false; }; "allowNegative": { "alias": "allowNegative"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "hideBuiltInErrors": { "alias": "hideBuiltInErrors"; "required": false; }; "hideLabelInErrors": { "alias": "hideLabelInErrors"; "required": false; }; "language": { "alias": "language"; "required": false; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
164
+ static ɵcmp: i0.ɵɵComponentDeclaration<MultiInputComponent, "ui-multi-input", never, { "itemsList": { "alias": "itemsList"; "required": true; }; "itemTextField": { "alias": "itemTextField"; "required": true; }; "itemValueField": { "alias": "itemValueField"; "required": true; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "allowDecimal": { "alias": "allowDecimal"; "required": false; }; "allowNegative": { "alias": "allowNegative"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "hideBuiltInErrors": { "alias": "hideBuiltInErrors"; "required": false; }; "hideLabelInErrors": { "alias": "hideLabelInErrors"; "required": false; }; "language": { "alias": "language"; "required": false; }; "maxCharacters": { "alias": "maxCharacters"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
158
165
  static ngAcceptInputType_disabled: unknown;
159
166
  static ngAcceptInputType_required: unknown;
160
167
  static ngAcceptInputType_allowDecimal: unknown;
@@ -0,0 +1,3 @@
1
+ export declare const sidePanelAnimationDuration = 150;
2
+ export declare const sidePanelAnimation: import("@angular/animations").AnimationTriggerMetadata[];
3
+ export declare const backdropAnimation: import("@angular/animations").AnimationTriggerMetadata[];
@@ -0,0 +1,21 @@
1
+ import { ElementRef, ViewContainerRef } from '@angular/core';
2
+ import { SidePanelAnimationState, SidePanelPosition } from './side-panel.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SidePanelComponent {
5
+ title: string;
6
+ showBackButton: boolean;
7
+ sidePanelPosition: import("@angular/core").WritableSignal<SidePanelPosition>;
8
+ sidePanelContainer: import("@angular/core").Signal<ViewContainerRef>;
9
+ sidePanel: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
10
+ backdrop: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
11
+ language: import("@testgorilla/tgo-ui").Language;
12
+ isOpen: import("@angular/core").WritableSignal<boolean>;
13
+ animation: import("@angular/core").Signal<SidePanelAnimationState.Open | SidePanelAnimationState.ClosedRight | SidePanelAnimationState.ClosedLeft>;
14
+ private sidePanelService;
15
+ private sidePanelConfig;
16
+ constructor();
17
+ open(): void;
18
+ close(): void;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidePanelComponent, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidePanelComponent, "ui-side-panel", never, {}, {}, never, never, false, never>;
21
+ }
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./side-panel.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@angular/material/tooltip";
5
+ import * as i4 from "../tooltip/tooltip.component.module";
6
+ import * as i5 from "../button/button.component.module";
7
+ import * as i6 from "../../pipes/ui-translate.pipe";
8
+ export declare class SidePanelComponentModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidePanelComponentModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SidePanelComponentModule, [typeof i1.SidePanelComponent], [typeof i2.CommonModule, typeof i3.MatTooltipModule, typeof i4.TooltipComponentModule, typeof i5.ButtonComponentModule, typeof i6.UiTranslatePipe], [typeof i1.SidePanelComponent]>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<SidePanelComponentModule>;
12
+ }
@@ -0,0 +1,15 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export type SidePanelPosition = 'left' | 'right';
3
+ export declare enum SidePanelAnimationState {
4
+ Open = "open",
5
+ Closed = "closed",
6
+ ClosedRight = "closedRight",
7
+ ClosedLeft = "closedLeft"
8
+ }
9
+ export declare class SidePanelConfig {
10
+ title: string;
11
+ position: SidePanelPosition;
12
+ showBackButton: boolean;
13
+ }
14
+ export declare const defaultSidePanelConfig: SidePanelConfig;
15
+ export declare const SIDE_PANEL_CONFIG: InjectionToken<SidePanelConfig>;
@@ -0,0 +1,20 @@
1
+ import { ApplicationRef, EnvironmentInjector, TemplateRef, Type } from '@angular/core';
2
+ import { SidePanelConfig } from './side-panel.model';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SidePanelService {
5
+ private appRef;
6
+ private injector;
7
+ private SidePanelComponentRef?;
8
+ private contentComponentRef?;
9
+ private embeddedViewRef?;
10
+ private defaultSidePanelConfig;
11
+ constructor(appRef: ApplicationRef, injector: EnvironmentInjector);
12
+ open(content: Type<any> | TemplateRef<any>, config: Partial<SidePanelConfig>): void;
13
+ destroyComponent(): void;
14
+ private createSidePanelInjector;
15
+ private createSidePanelComponent;
16
+ private loadComponent;
17
+ private loadTemplate;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<SidePanelService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<SidePanelService>;
20
+ }
@@ -1,6 +1,6 @@
1
1
  import { booleanAttribute, Component, EventEmitter, HostBinding, Inject, Input, Optional, Output, Self, } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
2
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { FormControl, Validators } from '@angular/forms';
4
4
  import { LanguageService } from '../../utils/localization/language.service';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/forms";
@@ -69,6 +69,13 @@ export class MultiInputComponent {
69
69
  * @memberof MultiInputComponent
70
70
  */
71
71
  this.label = '';
72
+ /**
73
+ *
74
+ * @description Defines the placeholder of the multi input
75
+ * @type {string}
76
+ * @memberof MultiInputComponent
77
+ */
78
+ this.placeholder = '';
72
79
  /**
73
80
  *
74
81
  * @description Allow decimal values in the multi input
@@ -250,11 +257,11 @@ export class MultiInputComponent {
250
257
  }
251
258
  }
252
259
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MultiInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: MultiInputComponent, selector: "ui-multi-input", inputs: { itemsList: "itemsList", itemTextField: "itemTextField", itemValueField: "itemValueField", value: "value", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], label: "label", allowDecimal: ["allowDecimal", "allowDecimal", booleanAttribute], allowNegative: ["allowNegative", "allowNegative", booleanAttribute], applicationTheme: "applicationTheme", errors: "errors", hideBuiltInErrors: ["hideBuiltInErrors", "hideBuiltInErrors", booleanAttribute], hideLabelInErrors: ["hideLabelInErrors", "hideLabelInErrors", booleanAttribute], language: "language", maxCharacters: "maxCharacters", fullWidth: "fullWidth" }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.theme": "this.applicationTheme", "class.full-width": "this.fullWidth", "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField\"\n [valueList]=\"itemsList\"\n [textField]=\"itemTextField\"\n [valueField]=\"itemValueField\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched(); checkFormErrors()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n [formControlName]=\"'value'\"\n [label]=\"label\"\n [required]=\"required\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n (focusout)=\"markAsTouched(); checkFormErrors()\"\n ></ui-field>\n </div>\n\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters && !errors?.length\">{{ getValueLength() }} / {{ maxCharacters }}</mat-hint>\n\n @if (errors?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors; track error) {\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Error' : 'Error-in-line'\"\n ></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n [language]=\"language\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host.ui-multi-input{position:relative!important}:host.ui-multi-input .ng-untouched,:host.ui-multi-input .ng-touched{width:fit-content}:host.ui-multi-input.full-width .ng-untouched{width:100%}:host.ui-multi-input .controls-wrapper{display:flex}:host.ui-multi-input ::ng-deep ui-validation-error .errors{display:flex}:host.ui-multi-input ::ng-deep .ui-dropdown{max-width:120px}:host.ui-multi-input ::ng-deep .ui-dropdown .mdc-notched-outline__trailing{border-right-color:transparent!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}:host.ui-multi-input ::ng-deep .ui-dropdown:hover .mdc-notched-outline__trailing,:host.ui-multi-input ::ng-deep .ui-dropdown .mat-mdc-form-field-focused .mdc-notched-outline__trailing{border-right-color:#242424}:host.ui-multi-input ::ng-deep .ui-field .mdc-notched-outline__leading{border-top-left-radius:0!important;border-bottom-left-radius:0!important}:host.ui-multi-input ::ng-deep .ui-field .mat-mdc-form-field-subscript-wrapper{position:absolute!important;left:0!important;top:48px!important}:host.ui-multi-input ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:48px!important;align-items:center!important;display:flex!important}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.info{display:block;color:#888;width:100%;text-align:right}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error{display:flex;gap:4px;color:#e02800;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error svg{color:#e02800}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint:before{display:none}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error{color:#e02800;font-size:12px;line-height:16px;letter-spacing:.4px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error .errors{display:flex;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error svg{margin-right:4px;color:#e02800;row-gap:0}:host.ui-multi-input .separator-line{border-left:1px solid var(--mdc-outlined-text-field-outline-color);height:40px;margin:0 12px -7px 8px}:host.ui-multi-input ::ng-deep .mat-mdc-select .mat-mdc-select-arrow-wrapper{display:none}:host.ui-multi-input ::ng-deep .mdc-text-field--outlined{padding-left:12px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i5.DropdownComponent, selector: "ui-dropdown", inputs: ["label", "name", "placeholder", "id", "value", "errors", "disabled", "valueList", "allowClear", "allowMultipleSelection", "required", "language", "showBottomContent", "applicationTheme", "hideBuiltInErrors", "hideLabelInErrors", "textField", "valueField", "hasError", "companyColor"], outputs: ["closed", "opened"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "touchedOn", "errorMessage", "label", "applicationTheme", "language"] }, { kind: "component", type: i7.FieldComponent, selector: "ui-field", inputs: ["fullWidth", "label", "fieldName", "placeholder", "id", "value", "errors", "disabled", "required", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "allowNegative", "language", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "pipe", type: i8.HasValidationErrorPipe, name: "hasValidationError" }] }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: MultiInputComponent, selector: "ui-multi-input", inputs: { itemsList: "itemsList", itemTextField: "itemTextField", itemValueField: "itemValueField", value: "value", disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], label: "label", placeholder: "placeholder", allowDecimal: ["allowDecimal", "allowDecimal", booleanAttribute], allowNegative: ["allowNegative", "allowNegative", booleanAttribute], applicationTheme: "applicationTheme", errors: "errors", hideBuiltInErrors: ["hideBuiltInErrors", "hideBuiltInErrors", booleanAttribute], hideLabelInErrors: ["hideLabelInErrors", "hideLabelInErrors", booleanAttribute], language: "language", maxCharacters: "maxCharacters", fullWidth: "fullWidth" }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.theme": "this.applicationTheme", "class.full-width": "this.fullWidth", "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField\"\n [valueList]=\"itemsList\"\n [textField]=\"itemTextField\"\n [valueField]=\"itemValueField\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched(); checkFormErrors()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n [formControlName]=\"'value'\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n (focusout)=\"markAsTouched(); checkFormErrors()\"\n ></ui-field>\n </div>\n\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters && !errors?.length\">{{ getValueLength() }} / {{ maxCharacters }}</mat-hint>\n\n @if (errors?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors; track error) {\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Error' : 'Error-in-line'\"\n ></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n [language]=\"language\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host.ui-multi-input{position:relative!important}:host.ui-multi-input .ng-untouched,:host.ui-multi-input .ng-touched{width:fit-content}:host.ui-multi-input.full-width .ng-untouched{width:100%}:host.ui-multi-input .controls-wrapper{display:flex}:host.ui-multi-input ::ng-deep ui-validation-error .errors{display:flex}:host.ui-multi-input ::ng-deep .ui-dropdown{max-width:120px}:host.ui-multi-input ::ng-deep .ui-dropdown .mdc-notched-outline__trailing{border-right-color:transparent!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}:host.ui-multi-input ::ng-deep .ui-dropdown:hover .mdc-notched-outline__trailing,:host.ui-multi-input ::ng-deep .ui-dropdown .mat-mdc-form-field-focused .mdc-notched-outline__trailing{border-right-color:#242424}:host.ui-multi-input ::ng-deep .ui-field .mdc-notched-outline__leading{border-top-left-radius:0!important;border-bottom-left-radius:0!important}:host.ui-multi-input ::ng-deep .ui-field .mat-mdc-form-field-subscript-wrapper{position:absolute!important;left:0!important;top:48px!important}:host.ui-multi-input ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:48px!important;align-items:center!important;display:flex!important}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.info{display:block;color:#888;width:100%;text-align:right}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error{display:flex;gap:4px;color:#e02800;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error svg{color:#e02800}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint:before{display:none}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error{color:#e02800;font-size:12px;line-height:16px;letter-spacing:.4px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error .errors{display:flex;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error svg{margin-right:4px;color:#e02800;row-gap:0}:host.ui-multi-input .separator-line{border-left:1px solid var(--mdc-outlined-text-field-outline-color);height:40px;margin:0 12px -7px 8px}:host.ui-multi-input ::ng-deep .mat-mdc-select .mat-mdc-select-arrow-wrapper{display:none}:host.ui-multi-input ::ng-deep .mdc-text-field--outlined{padding-left:12px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme"] }, { kind: "component", type: i5.DropdownComponent, selector: "ui-dropdown", inputs: ["label", "name", "placeholder", "id", "value", "errors", "disabled", "valueList", "allowClear", "allowMultipleSelection", "required", "language", "showBottomContent", "applicationTheme", "hideBuiltInErrors", "hideLabelInErrors", "textField", "valueField", "hasError", "companyColor"], outputs: ["closed", "opened"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.ValidationErrorComponent, selector: "ui-validation-error", inputs: ["ngControl", "touchedOn", "errorMessage", "label", "applicationTheme", "language"] }, { kind: "component", type: i7.FieldComponent, selector: "ui-field", inputs: ["fullWidth", "label", "fieldName", "placeholder", "id", "value", "errors", "disabled", "required", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "allowNegative", "language", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "pipe", type: i8.HasValidationErrorPipe, name: "hasValidationError" }] }); }
254
261
  }
255
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MultiInputComponent, decorators: [{
256
263
  type: Component,
257
- args: [{ selector: 'ui-multi-input', template: "<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField\"\n [valueList]=\"itemsList\"\n [textField]=\"itemTextField\"\n [valueField]=\"itemValueField\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched(); checkFormErrors()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n [formControlName]=\"'value'\"\n [label]=\"label\"\n [required]=\"required\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n (focusout)=\"markAsTouched(); checkFormErrors()\"\n ></ui-field>\n </div>\n\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters && !errors?.length\">{{ getValueLength() }} / {{ maxCharacters }}</mat-hint>\n\n @if (errors?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors; track error) {\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Error' : 'Error-in-line'\"\n ></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n [language]=\"language\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host.ui-multi-input{position:relative!important}:host.ui-multi-input .ng-untouched,:host.ui-multi-input .ng-touched{width:fit-content}:host.ui-multi-input.full-width .ng-untouched{width:100%}:host.ui-multi-input .controls-wrapper{display:flex}:host.ui-multi-input ::ng-deep ui-validation-error .errors{display:flex}:host.ui-multi-input ::ng-deep .ui-dropdown{max-width:120px}:host.ui-multi-input ::ng-deep .ui-dropdown .mdc-notched-outline__trailing{border-right-color:transparent!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}:host.ui-multi-input ::ng-deep .ui-dropdown:hover .mdc-notched-outline__trailing,:host.ui-multi-input ::ng-deep .ui-dropdown .mat-mdc-form-field-focused .mdc-notched-outline__trailing{border-right-color:#242424}:host.ui-multi-input ::ng-deep .ui-field .mdc-notched-outline__leading{border-top-left-radius:0!important;border-bottom-left-radius:0!important}:host.ui-multi-input ::ng-deep .ui-field .mat-mdc-form-field-subscript-wrapper{position:absolute!important;left:0!important;top:48px!important}:host.ui-multi-input ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:48px!important;align-items:center!important;display:flex!important}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.info{display:block;color:#888;width:100%;text-align:right}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error{display:flex;gap:4px;color:#e02800;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error svg{color:#e02800}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint:before{display:none}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error{color:#e02800;font-size:12px;line-height:16px;letter-spacing:.4px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error .errors{display:flex;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error svg{margin-right:4px;color:#e02800;row-gap:0}:host.ui-multi-input .separator-line{border-left:1px solid var(--mdc-outlined-text-field-outline-color);height:40px;margin:0 12px -7px 8px}:host.ui-multi-input ::ng-deep .mat-mdc-select .mat-mdc-select-arrow-wrapper{display:none}:host.ui-multi-input ::ng-deep .mdc-text-field--outlined{padding-left:12px!important}\n"] }]
264
+ args: [{ selector: 'ui-multi-input', template: "<div [formGroup]=\"multiInputForm\">\n <div class=\"controls-wrapper\">\n <ui-dropdown\n [hasError]=\"controlHasError\"\n [formControlName]=\"itemValueField\"\n [valueList]=\"itemsList\"\n [textField]=\"itemTextField\"\n [valueField]=\"itemValueField\"\n [showBottomContent]=\"false\"\n [allowClear]=\"false\"\n (closed)=\"markAsTouched(); checkFormErrors()\"\n ></ui-dropdown>\n\n <ui-field\n [hasError]=\"controlHasError\"\n [formControlName]=\"'value'\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [hideBuiltInErrors]=\"true\"\n [showBottomContent]=\"false\"\n [allowOnlyDigits]=\"true\"\n [fullWidth]=\"fullWidth\"\n (focusout)=\"markAsTouched(); checkFormErrors()\"\n ></ui-field>\n </div>\n\n <mat-hint class=\"info\" *ngIf=\"!controlHasError && maxCharacters && !errors?.length\">{{ getValueLength() }} / {{ maxCharacters }}</mat-hint>\n\n @if (errors?.length || (ngControl?.errors | hasValidationError)) {\n <mat-hint class=\"error\">\n @for (error of errors; track error) {\n <ui-icon\n [applicationTheme]=\"applicationTheme\"\n [name]=\"applicationTheme === 'classic' ? 'Error' : 'Error-in-line'\"\n ></ui-icon>{{ error }}\n }\n @if ((ngControl?.errors | hasValidationError) && !hideBuiltInErrors) {\n <ui-validation-error\n [touchedOn]=\"!controlHasError\"\n [ngControl]=\"ngControl\"\n [label]=\"hideLabelInErrors ? null : label\"\n [language]=\"language\"\n ></ui-validation-error>\n }\n </mat-hint>\n }\n\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host.ui-multi-input{position:relative!important}:host.ui-multi-input .ng-untouched,:host.ui-multi-input .ng-touched{width:fit-content}:host.ui-multi-input.full-width .ng-untouched{width:100%}:host.ui-multi-input .controls-wrapper{display:flex}:host.ui-multi-input ::ng-deep ui-validation-error .errors{display:flex}:host.ui-multi-input ::ng-deep .ui-dropdown{max-width:120px}:host.ui-multi-input ::ng-deep .ui-dropdown .mdc-notched-outline__trailing{border-right-color:transparent!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important}:host.ui-multi-input ::ng-deep .ui-dropdown:hover .mdc-notched-outline__trailing,:host.ui-multi-input ::ng-deep .ui-dropdown .mat-mdc-form-field-focused .mdc-notched-outline__trailing{border-right-color:#242424}:host.ui-multi-input ::ng-deep .ui-field .mdc-notched-outline__leading{border-top-left-radius:0!important;border-bottom-left-radius:0!important}:host.ui-multi-input ::ng-deep .ui-field .mat-mdc-form-field-subscript-wrapper{position:absolute!important;left:0!important;top:48px!important}:host.ui-multi-input ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:0!important;padding-bottom:0!important;min-height:48px!important;align-items:center!important;display:flex!important}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.info{display:block;color:#888;width:100%;text-align:right}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error{display:flex;gap:4px;color:#e02800;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint.error svg{color:#e02800}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint:before{display:none}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error{color:#e02800;font-size:12px;line-height:16px;letter-spacing:.4px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error .errors{display:flex;align-items:center;padding:4px 0 10px}:host.ui-multi-input ::ng-deep .mat-mdc-form-field-hint ui-validation-error svg{margin-right:4px;color:#e02800;row-gap:0}:host.ui-multi-input .separator-line{border-left:1px solid var(--mdc-outlined-text-field-outline-color);height:40px;margin:0 12px -7px 8px}:host.ui-multi-input ::ng-deep .mat-mdc-select .mat-mdc-select-arrow-wrapper{display:none}:host.ui-multi-input ::ng-deep .mdc-text-field--outlined{padding-left:12px!important}\n"] }]
258
265
  }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
259
266
  type: Optional
260
267
  }, {
@@ -283,6 +290,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
283
290
  args: [{ transform: booleanAttribute }]
284
291
  }], label: [{
285
292
  type: Input
293
+ }], placeholder: [{
294
+ type: Input
286
295
  }], allowDecimal: [{
287
296
  type: Input,
288
297
  args: [{ transform: booleanAttribute }]
@@ -316,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
316
325
  }], class: [{
317
326
  type: HostBinding
318
327
  }] } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL211bHRpLWlucHV0L211bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9tdWx0aS1pbnB1dC9tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFzRCxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7O0FBUTVFLE1BQU0sT0FBTyxtQkFBbUI7SUF5QjlCOzs7OztPQUtHO0lBQ0gsSUFBYSxLQUFLLENBQUMsQ0FBa0I7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQXlIRCxZQUNnQyxTQUFvQixFQUN5QixlQUFpQyxFQUMzRixFQUFlO1FBRkYsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN5QixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDM0YsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQTlKbEM7Ozs7O1dBS0c7UUFDd0IsY0FBUyxHQUE2QyxF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QkFBZ0IsRUFBRTtnQkFRRSxpQkFBaUI7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUTdCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFTRyxTQUFTO3NCQURqQixXQUFXO3VCQUFDLGtCQUFrQjs7c0JBQzlCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFFUSxLQUFLO3NCQUFuQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvY2FsaXphdGlvbi9sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE11bHRpSW5wdXRWYWx1ZSB9IGZyb20gJy4vbXVsdGktaW5wdXQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1tdWx0aS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tdWx0aS1pbnB1dC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBMaXN0IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZHJvcGRvd24gbGlzdFxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbCB8IG51bWJlcj5bXX1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGl0ZW1zTGlzdDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVsbCB8IG51bWJlcj5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGZpZWxkIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgZHJvcGRvd25cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGl0ZW1UZXh0RmllbGQgPSAnJztcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB2YWx1ZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGRyb2Rkb3duXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpdGVtVmFsdWVGaWVsZCA9ICcnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIFZhbHVlIG9mIHRoZSBtdWx0aSBpbnB1dFxuICAgKiBAdHlwZSB7TXVsdGlJbnB1dFZhbHVlfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IHZhbHVlKHY6IE11bHRpSW5wdXRWYWx1ZSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB0aGlzLmFkZERyb3Bkb3duQ29udHJvbCgpO1xuICAgIHRoaXMubXVsdGlJbnB1dEZvcm0ucGF0Y2hWYWx1ZSh2KTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGlzYWJsZXMgdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIGlmIHRoZSBtdWx0aSBpbnB1dCBpcyByZXF1aXJlZFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgbGFiZWwgb2YgdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gQWxsb3cgZGVjaW1hbCB2YWx1ZXMgaW4gdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93RGVjaW1hbCA9IHRydWU7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvdyBuZWdhdGl2ZSB2YWx1ZXMgaW4gdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93TmVnYXRpdmUgPSB0cnVlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIHRoZW1lIG9mIHRoZSBhcHBsaWNhdGlvblxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aGVtZScpXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGVycm9ycyBvZiB0aGUgbXVsdGkgaW5wdXRcbiAgICogQHR5cGUge3N0cmluZ1tdfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gSGlkZSBidWlsdCBpbiBlcnJvcnMgZm9yIFJlYWN0aXZlIEZvcm1zXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVCdWlsdEluRXJyb3JzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBIaWRlIGxhYmVsIGluIGVycm9yc1xuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoaWRlTGFiZWxJbkVycm9ycyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGxhbmd1YWdlIHRvIGJlIHVzZWRcbiAgICogQHR5cGUge0xhbmd1YWdlfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFuZ3VhZ2UgPSBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIG1heGltdW0gY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSBtdWx0aSBpbnB1dFxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbWF4Q2hhcmFjdGVycyA9IDA7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgd2lkdGggb2YgdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mdWxsLXdpZHRoJylcbiAgQElucHV0KCkgZnVsbFdpZHRoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUlucHV0VmFsdWU+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCkgY2xhc3MgPSAndWktbXVsdGktaW5wdXQnO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNoYW5nZSA9IChfOiBhbnkpOiB2b2lkID0+IHt9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCk6IHZvaWQgPT4ge307XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IE11bHRpSW5wdXRWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNob3dFcnJvciA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBtdWx0aUlucHV0Rm9ybSA9IHRoaXMuZmIuZ3JvdXA8TXVsdGlJbnB1dFZhbHVlPih7XG4gICAgdmFsdWU6IG51bGwsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHJvdGVjdGVkIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWZhdWx0QXBwVGhlbWUpIHtcbiAgICAgIHRoaXMuYXBwbGljYXRpb25UaGVtZSA9IHRoaXMuZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cblxuICAgIHRoaXMubXVsdGlJbnB1dEZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQoZm9ybVZhbHVlIGFzIE11bHRpSW5wdXRWYWx1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tGb3JtRXJyb3JzKCk7XG5cbiAgICAgICAgaWYgKCEoZm9ybVZhbHVlIGFzIGFueSkudmFsdWUgJiYgIShmb3JtVmFsdWUgYXMgYW55KVt0aGlzLml0ZW1WYWx1ZUZpZWxkXSkge1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZERyb3Bkb3duQ29udHJvbCgpO1xuICAgIHRoaXMuYWRkVmFsaWRhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMuaGFzUmVxdWlyZWRWYWxpZGF0b3IpIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sPy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgdGhpcy5kcm9wZG93bkNvbnRyb2w/LmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddKSB7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVTdGF0ZSh0aGlzLmRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBNdWx0aUlucHV0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5hZGREcm9wZG93bkNvbnRyb2woKTtcbiAgICB0aGlzLm11bHRpSW5wdXRGb3JtLnBhdGNoVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy51cGRhdGVEaXNhYmxlU3RhdGUoaXNEaXNhYmxlZCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVDaGFuZ2VkKHZhbHVlOiBNdWx0aUlucHV0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IE11bHRpSW5wdXRWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBoYXNSZXF1aXJlZFZhbGlkYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbC5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGRyb3Bkb3duQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aUlucHV0Rm9ybS5nZXQodGhpcy5pdGVtVmFsdWVGaWVsZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGlucHV0Q29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2w8bnVtYmVyIHwgbnVsbD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5tdWx0aUlucHV0Rm9ybS5nZXQoJ3ZhbHVlJykgYXMgYW55O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRm9ybUVycm9ycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IC4uLnRoaXMuaW5wdXRDb250cm9sPy5lcnJvcnMsIC4uLnRoaXMuZHJvcGRvd25Db250cm9sPy5lcnJvcnMgfSk7XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gISEodGhpcy5pbnB1dENvbnRyb2w/LmVycm9ycyB8fCB0aGlzLmRyb3Bkb3duQ29udHJvbD8uZXJyb3JzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXJrQXNUb3VjaGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiAoKHRoaXMuaW5wdXRDb250cm9sPy50b3VjaGVkICYmIHRoaXMuZHJvcGRvd25Db250cm9sPy50b3VjaGVkKSB8fCAoIXRoaXMuaW5wdXRDb250cm9sPy52YWx1ZSAmJiAhdGhpcy5kcm9wZG93bkNvbnRyb2w/LnZhbHVlKSkpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkRHJvcGRvd25Db250cm9sKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aUlucHV0Rm9ybS52YWx1ZVt0aGlzLml0ZW1WYWx1ZUZpZWxkXSkge1xuICAgICAgdGhpcy5tdWx0aUlucHV0Rm9ybS5hZGRDb250cm9sKHRoaXMuaXRlbVZhbHVlRmllbGQsIG5ldyBGb3JtQ29udHJvbChudWxsKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlU3RhdGUodGhpcy5kaXNhYmxlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBjb250cm9sSGFzRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmdDb250cm9sXG4gICAgICA/ICh0aGlzLnNob3dFcnJvciAmJiAhIXRoaXMubmdDb250cm9sLmNvbnRyb2w/LnRvdWNoZWQpXG4gICAgICAgIHx8ICghdGhpcy5pbnB1dENvbnRyb2w/LnZhbGlkICYmICEhdGhpcy5pbnB1dENvbnRyb2w/LnRvdWNoZWQpXG4gICAgICAgIHx8ICghdGhpcy5kcm9wZG93bkNvbnRyb2w/LnZhbGlkICYmICEhdGhpcy5kcm9wZG93bkNvbnRyb2w/LnRvdWNoZWQpXG4gICAgICA6IHRoaXMuc2hvd0Vycm9yXG4gICAgICB8fCAhIXRoaXMuZXJyb3JzLmxlbmd0aFxuICAgICAgfHwgKCF0aGlzLmlucHV0Q29udHJvbD8udmFsaWQgJiYgISF0aGlzLmlucHV0Q29udHJvbD8udG91Y2hlZClcbiAgICAgIHx8ICghdGhpcy5kcm9wZG93bkNvbnRyb2w/LnZhbGlkICYmICEhdGhpcy5kcm9wZG93bkNvbnRyb2w/LnRvdWNoZWQpXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VmFsdWVMZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dENvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpLmxlbmd0aCB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRWYWxpZGF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1heENoYXJhY3RlcnMpIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sPy5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4Q2hhcmFjdGVycykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGlzYWJsZVN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlKSB7XG4gICAgICB0aGlzLm11bHRpSW5wdXRGb3JtLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11bHRpSW5wdXRGb3JtLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwibXVsdGlJbnB1dEZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xzLXdyYXBwZXJcIj5cbiAgICA8dWktZHJvcGRvd25cbiAgICAgIFtoYXNFcnJvcl09XCJjb250cm9sSGFzRXJyb3JcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJpdGVtVmFsdWVGaWVsZFwiXG4gICAgICBbdmFsdWVMaXN0XT1cIml0ZW1zTGlzdFwiXG4gICAgICBbdGV4dEZpZWxkXT1cIml0ZW1UZXh0RmllbGRcIlxuICAgICAgW3ZhbHVlRmllbGRdPVwiaXRlbVZhbHVlRmllbGRcIlxuICAgICAgW3Nob3dCb3R0b21Db250ZW50XT1cImZhbHNlXCJcbiAgICAgIFthbGxvd0NsZWFyXT1cImZhbHNlXCJcbiAgICAgIChjbG9zZWQpPVwibWFya0FzVG91Y2hlZCgpOyBjaGVja0Zvcm1FcnJvcnMoKVwiXG4gICAgPjwvdWktZHJvcGRvd24+XG5cbiAgICA8dWktZmllbGRcbiAgICAgIFtoYXNFcnJvcl09XCJjb250cm9sSGFzRXJyb3JcIlxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCIndmFsdWUnXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2hpZGVCdWlsdEluRXJyb3JzXT1cInRydWVcIlxuICAgICAgW3Nob3dCb3R0b21Db250ZW50XT1cImZhbHNlXCJcbiAgICAgIFthbGxvd09ubHlEaWdpdHNdPVwidHJ1ZVwiXG4gICAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXG4gICAgICAoZm9jdXNvdXQpPVwibWFya0FzVG91Y2hlZCgpOyBjaGVja0Zvcm1FcnJvcnMoKVwiXG4gICAgPjwvdWktZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxtYXQtaGludCBjbGFzcz1cImluZm9cIiAqbmdJZj1cIiFjb250cm9sSGFzRXJyb3IgJiYgbWF4Q2hhcmFjdGVycyAmJiAhZXJyb3JzPy5sZW5ndGhcIj57eyBnZXRWYWx1ZUxlbmd0aCgpIH19IC8ge3sgbWF4Q2hhcmFjdGVycyB9fTwvbWF0LWhpbnQ+XG5cbiAgQGlmIChlcnJvcnM/Lmxlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpKSB7XG4gICAgPG1hdC1oaW50IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgIEBmb3IgKGVycm9yIG9mIGVycm9yczsgdHJhY2sgZXJyb3IpIHtcbiAgICAgICAgPHVpLWljb25cbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnRXJyb3InIDogJ0Vycm9yLWluLWxpbmUnXCJcbiAgICAgICAgPjwvdWktaWNvbj57eyBlcnJvciB9fVxuICAgICAgfVxuICAgICAgQGlmICgobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpICYmICFoaWRlQnVpbHRJbkVycm9ycykge1xuICAgICAgICA8dWktdmFsaWRhdGlvbi1lcnJvclxuICAgICAgICAgIFt0b3VjaGVkT25dPVwiIWNvbnRyb2xIYXNFcnJvclwiXG4gICAgICAgICAgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICAgIFtsYWJlbF09XCJoaWRlTGFiZWxJbkVycm9ycyA/IG51bGwgOiBsYWJlbFwiXG4gICAgICAgICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCJcbiAgICAgICAgPjwvdWktdmFsaWRhdGlvbi1lcnJvcj5cbiAgICAgIH1cbiAgICA8L21hdC1oaW50PlxuICB9XG5cbjwvZGl2PlxuIl19
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL211bHRpLWlucHV0L211bHRpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9tdWx0aS1pbnB1dC9tdWx0aS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFzRCxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7Ozs7O0FBUTVFLE1BQU0sT0FBTyxtQkFBbUI7SUF5QjlCOzs7OztPQUtHO0lBQ0gsSUFBYSxLQUFLLENBQUMsQ0FBa0I7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQWlJRCxZQUNnQyxTQUFvQixFQUN5QixlQUFpQyxFQUMzRixFQUFlO1FBRkYsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN5QixvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFDM0YsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQXRLbEM7Ozs7O1dBS0c7UUFDd0IsY0FBUyxHQUE2QyxF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TUFBTTtzQkFBZCxLQUFLO2dCQVFrQyxpQkFBaUI7c0JBQXhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUUUsaUJBQWlCO3NCQUF4RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVE3QixRQUFRO3NCQUFoQixLQUFLO2dCQVFHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBU0csU0FBUztzQkFEakIsV0FBVzt1QkFBQyxrQkFBa0I7O3NCQUM5QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRVEsS0FBSztzQkFBbkIsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLCBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9sb2NhbGl6YXRpb24vbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBNdWx0aUlucHV0VmFsdWUgfSBmcm9tICcuL211bHRpLWlucHV0Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktbXVsdGktaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbXVsdGktaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbXVsdGktaW5wdXQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gTGlzdCBvZiBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGRyb3Bkb3duIGxpc3RcbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCBudW1iZXI+W119XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpdGVtc0xpc3Q6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGwgfCBudW1iZXI+W10gPSBbXTtcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBmaWVsZCB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGRyb3Bkb3duXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBpdGVtVGV4dEZpZWxkID0gJyc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdmFsdWUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBkcm9kZG93blxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgaXRlbVZhbHVlRmllbGQgPSAnJztcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBWYWx1ZSBvZiB0aGUgbXVsdGkgaW5wdXRcbiAgICogQHR5cGUge011bHRpSW5wdXRWYWx1ZX1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2OiBNdWx0aUlucHV0VmFsdWUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5hZGREcm9wZG93bkNvbnRyb2woKTtcbiAgICB0aGlzLm11bHRpSW5wdXRGb3JtLnBhdGNoVmFsdWUodik7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERpc2FibGVzIHRoZSBtdWx0aSBpbnB1dFxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIE11bHRpSW5wdXRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyBpZiB0aGUgbXVsdGkgaW5wdXQgaXMgcmVxdWlyZWRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIERlZmluZXMgdGhlIGxhYmVsIG9mIHRoZSBtdWx0aSBpbnB1dFxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAgIC8qKlxuICAgKlxuICAgKiBAZGVzY3JpcHRpb24gRGVmaW5lcyB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBcbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGxvdyBkZWNpbWFsIHZhbHVlcyBpbiB0aGUgbXVsdGkgaW5wdXRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dEZWNpbWFsID0gdHJ1ZTtcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIEFsbG93IG5lZ2F0aXZlIHZhbHVlcyBpbiB0aGUgbXVsdGkgaW5wdXRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYWxsb3dOZWdhdGl2ZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgdGhlbWUgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZW1lJylcbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgZXJyb3JzIG9mIHRoZSBtdWx0aSBpbnB1dFxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBIaWRlIGJ1aWx0IGluIGVycm9ycyBmb3IgUmVhY3RpdmUgRm9ybXNcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGlkZUJ1aWx0SW5FcnJvcnMgPSBmYWxzZTtcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIEhpZGUgbGFiZWwgaW4gZXJyb3JzXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgTXVsdGlJbnB1dENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhpZGVMYWJlbEluRXJyb3JzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbGFuZ3VhZ2UgdG8gYmUgdXNlZFxuICAgKiBAdHlwZSB7TGFuZ3VhZ2V9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBsYW5ndWFnZSA9IExhbmd1YWdlU2VydmljZS5kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgbWF4aW11bSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIG11bHRpIGlucHV0XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtYXhDaGFyYWN0ZXJzID0gMDtcblxuICAvKipcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uIFRoZSB3aWR0aCBvZiB0aGUgbXVsdGkgaW5wdXRcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBNdWx0aUlucHV0Q29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZ1bGwtd2lkdGgnKVxuICBASW5wdXQoKSBmdWxsV2lkdGg6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE11bHRpSW5wdXRWYWx1ZT4oKTtcblxuICBASG9zdEJpbmRpbmcoKSBjbGFzcyA9ICd1aS1tdWx0aS1pbnB1dCc7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uVG91Y2ggPSAoKTogdm9pZCA9PiB7fTtcblxuICBwcml2YXRlIF92YWx1ZTogTXVsdGlJbnB1dFZhbHVlIHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgc2hvd0Vycm9yID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG11bHRpSW5wdXRGb3JtID0gdGhpcy5mYi5ncm91cDxNdWx0aUlucHV0VmFsdWU+KHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdCgnQ0FOT1BZVUlfREVGQVVMVF9BUFBMSUNBVElPTl9USEVNRScpIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEFwcFRoZW1lOiBBcHBsaWNhdGlvblRoZW1lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICApIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gdGhpcy5kZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuXG4gICAgdGhpcy5tdWx0aUlucHV0Rm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZShmb3JtVmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZChmb3JtVmFsdWUgYXMgTXVsdGlJbnB1dFZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGVja0Zvcm1FcnJvcnMoKTtcblxuICAgICAgICBpZiAoIShmb3JtVmFsdWUgYXMgYW55KS52YWx1ZSAmJiAhKGZvcm1WYWx1ZSBhcyBhbnkpW3RoaXMuaXRlbVZhbHVlRmllbGRdKSB7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkRHJvcGRvd25Db250cm9sKCk7XG4gICAgdGhpcy5hZGRWYWxpZGF0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5oYXNSZXF1aXJlZFZhbGlkYXRvcikge1xuICAgICAgdGhpcy5pbnB1dENvbnRyb2w/LmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB0aGlzLmRyb3Bkb3duQ29udHJvbD8uYWRkVmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlRGlzYWJsZVN0YXRlKHRoaXMuZGlzYWJsZWQpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IE11bHRpSW5wdXRWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmFkZERyb3Bkb3duQ29udHJvbCgpO1xuICAgIHRoaXMubXVsdGlJbnB1dEZvcm0ucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVTdGF0ZShpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWx1ZUNoYW5nZWQodmFsdWU6IE11bHRpSW5wdXRWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogTXVsdGlJbnB1dFZhbHVlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGhhc1JlcXVpcmVkVmFsaWRhdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubmdDb250cm9sLmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZHJvcGRvd25Db250cm9sKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCBudWxsPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRGb3JtLmdldCh0aGlzLml0ZW1WYWx1ZUZpZWxkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaW5wdXRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbDxudW1iZXIgfCBudWxsPiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLm11bHRpSW5wdXRGb3JtLmdldCgndmFsdWUnKSBhcyBhbnk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tGb3JtRXJyb3JzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8uc2V0RXJyb3JzKHsgLi4udGhpcy5pbnB1dENvbnRyb2w/LmVycm9ycywgLi4udGhpcy5kcm9wZG93bkNvbnRyb2w/LmVycm9ycyB9KTtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSAhISh0aGlzLmlucHV0Q29udHJvbD8uZXJyb3JzIHx8IHRoaXMuZHJvcGRvd25Db250cm9sPy5lcnJvcnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sICYmICgodGhpcy5pbnB1dENvbnRyb2w/LnRvdWNoZWQgJiYgdGhpcy5kcm9wZG93bkNvbnRyb2w/LnRvdWNoZWQpIHx8ICghdGhpcy5pbnB1dENvbnRyb2w/LnZhbHVlICYmICF0aGlzLmRyb3Bkb3duQ29udHJvbD8udmFsdWUpKSkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGREcm9wZG93bkNvbnRyb2woKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpSW5wdXRGb3JtLnZhbHVlW3RoaXMuaXRlbVZhbHVlRmllbGRdKSB7XG4gICAgICB0aGlzLm11bHRpSW5wdXRGb3JtLmFkZENvbnRyb2wodGhpcy5pdGVtVmFsdWVGaWVsZCwgbmV3IEZvcm1Db250cm9sKG51bGwpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURpc2FibGVTdGF0ZSh0aGlzLmRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGNvbnRyb2xIYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2xcbiAgICAgID8gKHRoaXMuc2hvd0Vycm9yICYmICEhdGhpcy5uZ0NvbnRyb2wuY29udHJvbD8udG91Y2hlZClcbiAgICAgICAgfHwgKCF0aGlzLmlucHV0Q29udHJvbD8udmFsaWQgJiYgISF0aGlzLmlucHV0Q29udHJvbD8udG91Y2hlZClcbiAgICAgICAgfHwgKCF0aGlzLmRyb3Bkb3duQ29udHJvbD8udmFsaWQgJiYgISF0aGlzLmRyb3Bkb3duQ29udHJvbD8udG91Y2hlZClcbiAgICAgIDogdGhpcy5zaG93RXJyb3JcbiAgICAgIHx8ICEhdGhpcy5lcnJvcnMubGVuZ3RoXG4gICAgICB8fCAoIXRoaXMuaW5wdXRDb250cm9sPy52YWxpZCAmJiAhIXRoaXMuaW5wdXRDb250cm9sPy50b3VjaGVkKVxuICAgICAgfHwgKCF0aGlzLmRyb3Bkb3duQ29udHJvbD8udmFsaWQgJiYgISF0aGlzLmRyb3Bkb3duQ29udHJvbD8udG91Y2hlZClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRWYWx1ZUxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmlucHV0Q29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCkubGVuZ3RoIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIGFkZFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubWF4Q2hhcmFjdGVycykge1xuICAgICAgdGhpcy5pbnB1dENvbnRyb2w/LmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhDaGFyYWN0ZXJzKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNhYmxlU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIHRoaXMubXVsdGlJbnB1dEZvcm0uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXVsdGlJbnB1dEZvcm0uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJtdWx0aUlucHV0Rm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbHMtd3JhcHBlclwiPlxuICAgIDx1aS1kcm9wZG93blxuICAgICAgW2hhc0Vycm9yXT1cImNvbnRyb2xIYXNFcnJvclwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIml0ZW1WYWx1ZUZpZWxkXCJcbiAgICAgIFt2YWx1ZUxpc3RdPVwiaXRlbXNMaXN0XCJcbiAgICAgIFt0ZXh0RmllbGRdPVwiaXRlbVRleHRGaWVsZFwiXG4gICAgICBbdmFsdWVGaWVsZF09XCJpdGVtVmFsdWVGaWVsZFwiXG4gICAgICBbc2hvd0JvdHRvbUNvbnRlbnRdPVwiZmFsc2VcIlxuICAgICAgW2FsbG93Q2xlYXJdPVwiZmFsc2VcIlxuICAgICAgKGNsb3NlZCk9XCJtYXJrQXNUb3VjaGVkKCk7IGNoZWNrRm9ybUVycm9ycygpXCJcbiAgICA+PC91aS1kcm9wZG93bj5cblxuICAgIDx1aS1maWVsZFxuICAgICAgW2hhc0Vycm9yXT1cImNvbnRyb2xIYXNFcnJvclwiXG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIid2YWx1ZSdcIlxuICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgW2hpZGVCdWlsdEluRXJyb3JzXT1cInRydWVcIlxuICAgICAgW3Nob3dCb3R0b21Db250ZW50XT1cImZhbHNlXCJcbiAgICAgIFthbGxvd09ubHlEaWdpdHNdPVwidHJ1ZVwiXG4gICAgICBbZnVsbFdpZHRoXT1cImZ1bGxXaWR0aFwiXG4gICAgICAoZm9jdXNvdXQpPVwibWFya0FzVG91Y2hlZCgpOyBjaGVja0Zvcm1FcnJvcnMoKVwiXG4gICAgPjwvdWktZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxtYXQtaGludCBjbGFzcz1cImluZm9cIiAqbmdJZj1cIiFjb250cm9sSGFzRXJyb3IgJiYgbWF4Q2hhcmFjdGVycyAmJiAhZXJyb3JzPy5sZW5ndGhcIj57eyBnZXRWYWx1ZUxlbmd0aCgpIH19IC8ge3sgbWF4Q2hhcmFjdGVycyB9fTwvbWF0LWhpbnQ+XG5cbiAgQGlmIChlcnJvcnM/Lmxlbmd0aCB8fCAobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpKSB7XG4gICAgPG1hdC1oaW50IGNsYXNzPVwiZXJyb3JcIj5cbiAgICAgIEBmb3IgKGVycm9yIG9mIGVycm9yczsgdHJhY2sgZXJyb3IpIHtcbiAgICAgICAgPHVpLWljb25cbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICBbbmFtZV09XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYycgPyAnRXJyb3InIDogJ0Vycm9yLWluLWxpbmUnXCJcbiAgICAgICAgPjwvdWktaWNvbj57eyBlcnJvciB9fVxuICAgICAgfVxuICAgICAgQGlmICgobmdDb250cm9sPy5lcnJvcnMgfCBoYXNWYWxpZGF0aW9uRXJyb3IpICYmICFoaWRlQnVpbHRJbkVycm9ycykge1xuICAgICAgICA8dWktdmFsaWRhdGlvbi1lcnJvclxuICAgICAgICAgIFt0b3VjaGVkT25dPVwiIWNvbnRyb2xIYXNFcnJvclwiXG4gICAgICAgICAgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICAgIFtsYWJlbF09XCJoaWRlTGFiZWxJbkVycm9ycyA/IG51bGwgOiBsYWJlbFwiXG4gICAgICAgICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCJcbiAgICAgICAgPjwvdWktdmFsaWRhdGlvbi1lcnJvcj5cbiAgICAgIH1cbiAgICA8L21hdC1oaW50PlxuICB9XG5cbjwvZGl2PlxuIl19
@@ -0,0 +1,26 @@
1
+ import { animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { SidePanelAnimationState } from './side-panel.model';
3
+ export const sidePanelAnimationDuration = 150;
4
+ export const sidePanelAnimation = [
5
+ trigger('slideInOut', [
6
+ state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),
7
+ state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),
8
+ state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),
9
+ transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [
10
+ animate(`${sidePanelAnimationDuration}ms ease-in-out`),
11
+ ]),
12
+ transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [
13
+ animate(`${sidePanelAnimationDuration}ms ease-in-out`),
14
+ ]),
15
+ ]),
16
+ ];
17
+ export const backdropAnimation = [
18
+ trigger('fadeInOut', [
19
+ state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),
20
+ state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),
21
+ transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [
22
+ animate(`${sidePanelAnimationDuration}ms ease-in-out`),
23
+ ]),
24
+ ]),
25
+ ];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5hbmltYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3NpZGUtcGFuZWwvc2lkZS1wYW5lbC5hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsR0FBRyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7UUFDcEIsS0FBSyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDL0UsS0FBSyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUN6RixLQUFLLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3pGLFVBQVUsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLElBQUksUUFBUSx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN2RixPQUFPLENBQUMsR0FBRywwQkFBMEIsZ0JBQWdCLENBQUM7U0FDdkQsQ0FBQztRQUNGLFVBQVUsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLElBQUksUUFBUSx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0RixPQUFPLENBQUMsR0FBRywwQkFBMEIsZ0JBQWdCLENBQUM7U0FDdkQsQ0FBQztLQUNILENBQUM7Q0FDSCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDL0IsT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUNuQixLQUFLLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsRSxLQUFLLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxVQUFVLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLFFBQVEsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEYsT0FBTyxDQUFDLEdBQUcsMEJBQTBCLGdCQUFnQixDQUFDO1NBQ3ZELENBQUM7S0FDSCxDQUFDO0NBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU2lkZVBhbmVsQW5pbWF0aW9uU3RhdGUgfSBmcm9tICcuL3NpZGUtcGFuZWwubW9kZWwnO1xuXG5leHBvcnQgY29uc3Qgc2lkZVBhbmVsQW5pbWF0aW9uRHVyYXRpb24gPSAxNTA7XG5cbmV4cG9ydCBjb25zdCBzaWRlUGFuZWxBbmltYXRpb24gPSBbXG4gIHRyaWdnZXIoJ3NsaWRlSW5PdXQnLCBbXG4gICAgc3RhdGUoYCR7U2lkZVBhbmVsQW5pbWF0aW9uU3RhdGUuT3Blbn1gLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcbiAgICBzdGF0ZShgJHtTaWRlUGFuZWxBbmltYXRpb25TdGF0ZS5DbG9zZWRSaWdodH1gLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pKSxcbiAgICBzdGF0ZShgJHtTaWRlUGFuZWxBbmltYXRpb25TdGF0ZS5DbG9zZWRMZWZ0fWAsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknIH0pKSxcbiAgICB0cmFuc2l0aW9uKGAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLk9wZW59IDw9PiAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLkNsb3NlZFJpZ2h0fWAsIFtcbiAgICAgIGFuaW1hdGUoYCR7c2lkZVBhbmVsQW5pbWF0aW9uRHVyYXRpb259bXMgZWFzZS1pbi1vdXRgKSxcbiAgICBdKSxcbiAgICB0cmFuc2l0aW9uKGAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLk9wZW59IDw9PiAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLkNsb3NlZExlZnR9YCwgW1xuICAgICAgYW5pbWF0ZShgJHtzaWRlUGFuZWxBbmltYXRpb25EdXJhdGlvbn1tcyBlYXNlLWluLW91dGApLFxuICAgIF0pLFxuICBdKSxcbl07XG5cbmV4cG9ydCBjb25zdCBiYWNrZHJvcEFuaW1hdGlvbiA9IFtcbiAgdHJpZ2dlcignZmFkZUluT3V0JywgW1xuICAgIHN0YXRlKGAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLk9wZW59YCwgc3R5bGUoeyBvcGFjaXR5OiAwLjI1IH0pKSxcbiAgICBzdGF0ZShgJHtTaWRlUGFuZWxBbmltYXRpb25TdGF0ZS5DbG9zZWR9YCwgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcbiAgICB0cmFuc2l0aW9uKGAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLk9wZW59IDw9PiAke1NpZGVQYW5lbEFuaW1hdGlvblN0YXRlLkNsb3NlZH1gLCBbXG4gICAgICBhbmltYXRlKGAke3NpZGVQYW5lbEFuaW1hdGlvbkR1cmF0aW9ufW1zIGVhc2UtaW4tb3V0YCksXG4gICAgXSksXG4gIF0pLFxuXTtcbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild, ViewContainerRef, } from '@angular/core';
2
+ import { LanguageService } from '../../utils/localization/language.service';
3
+ import { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';
4
+ import { SidePanelAnimationState, SidePanelConfig } from './side-panel.model';
5
+ import { SidePanelService } from './side-panel.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../button/button.component";
8
+ import * as i2 from "../../pipes/ui-translate.pipe";
9
+ export class SidePanelComponent {
10
+ constructor() {
11
+ this.title = '';
12
+ this.showBackButton = false;
13
+ this.sidePanelPosition = signal('right');
14
+ this.sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });
15
+ this.sidePanel = viewChild.required('sidePanel');
16
+ this.backdrop = viewChild.required('sidePanelBackdrop');
17
+ this.language = LanguageService.defaultLanguage;
18
+ this.isOpen = signal(false);
19
+ this.animation = computed(() => {
20
+ if (this.isOpen()) {
21
+ return SidePanelAnimationState.Open;
22
+ }
23
+ return this.sidePanelPosition() === 'left'
24
+ ? SidePanelAnimationState.ClosedLeft
25
+ : SidePanelAnimationState.ClosedRight;
26
+ });
27
+ this.sidePanelService = inject(SidePanelService);
28
+ this.sidePanelConfig = inject(SidePanelConfig);
29
+ const { position, showBackButton, title } = this.sidePanelConfig;
30
+ this.sidePanelPosition.set(position);
31
+ this.showBackButton = showBackButton;
32
+ this.title = title;
33
+ }
34
+ open() {
35
+ setTimeout(() => {
36
+ this.isOpen.set(true);
37
+ });
38
+ }
39
+ close() {
40
+ this.isOpen.set(false);
41
+ setTimeout(() => {
42
+ this.sidePanelService.destroyComponent();
43
+ }, sidePanelAnimationDuration);
44
+ }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.7", type: SidePanelComponent, selector: "ui-side-panel", viewQueries: [{ propertyName: "sidePanelContainer", first: true, predicate: ["sidePanelContainer"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "sidePanel", first: true, predicate: ["sidePanel"], descendants: true, isSignal: true }, { propertyName: "backdrop", first: true, predicate: ["sidePanelBackdrop"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"side-panel-backdrop\" #sidePanelBackdrop (click)=\"close()\" [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"></div>\n<div class=\"side-panel\" #sidePanel [@slideInOut]=\"animation()\">\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (showBackButton) {\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK') | uiTranslate : language\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title\">{{ title }}</span>\n </div>\n\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE') | uiTranslate : language\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n </div>\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;width:600px;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:1000;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}@media (max-width: 600px){.side-panel{width:100%}}.side-panel-title-container{display:flex;align-items:center;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:999;opacity:0}.side-panel-title{font-weight:900;font-size:24px;display:block;display:-webkit-box;max-height:3em;line-height:1.5em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{margin-top:40px;overflow:auto}.side-panel-header{position:sticky;height:30px;display:flex;justify-content:space-between}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "language", "preventDefault", "tooltipPosition"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: i2.UiTranslatePipe, name: "uiTranslate" }], animations: [sidePanelAnimation, backdropAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'ui-side-panel', animations: [sidePanelAnimation, backdropAnimation], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"side-panel-backdrop\" #sidePanelBackdrop (click)=\"close()\" [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"></div>\n<div class=\"side-panel\" #sidePanel [@slideInOut]=\"animation()\">\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (showBackButton) {\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"close()\"\n [tooltip]=\"('COMMON.BACK') | uiTranslate : language\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title\">{{ title }}</span>\n </div>\n\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE') | uiTranslate : language\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n </div>\n\n <div class=\"side-panel-content\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.side-panel{position:fixed;top:0;bottom:0;width:600px;background-color:#fff;padding:32px;box-shadow:2px 24px 48px 8px #00000014;z-index:1000;display:flex;flex-direction:column;will-change:transform;transform:translate(100%)}@media (max-width: 600px){.side-panel{width:100%}}.side-panel-title-container{display:flex;align-items:center;gap:8px}.side-panel.left{left:0}.side-panel.right{right:0}.side-panel-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;z-index:999;opacity:0}.side-panel-title{font-weight:900;font-size:24px;display:block;display:-webkit-box;max-height:3em;line-height:1.5em;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:normal}.side-panel-content{margin-top:40px;overflow:auto}.side-panel-header{position:sticky;height:30px;display:flex;justify-content:space-between}\n"] }]
51
+ }], ctorParameters: () => [] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvc2lkZS1wYW5lbC9zaWRlLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9zaWRlLXBhbmVsL3NpZGUtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUVSLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVN4RCxNQUFNLE9BQU8sa0JBQWtCO0lBd0I3QjtRQXZCQSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsc0JBQWlCLEdBQUcsTUFBTSxDQUFvQixPQUFPLENBQUMsQ0FBQztRQUV2RCx1QkFBa0IsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMxRixjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNkIsV0FBVyxDQUFDLENBQUM7UUFDeEUsYUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQTZCLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsYUFBUSxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUM7UUFDM0MsV0FBTSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVoQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNsQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUN0QyxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxNQUFNO2dCQUN4QyxDQUFDLENBQUMsdUJBQXVCLENBQUMsVUFBVTtnQkFDcEMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVLLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBR2hELE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDakUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSTtRQUNGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OEdBMUNVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDBKQUt5QyxnQkFBZ0Isc1FDM0J4RixnK0JBNkJBLDhqSERWYyxDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDOzsyRkFHeEMsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLGVBQWUsY0FHYixDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLG1CQUNsQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYWxpemF0aW9uL2xhbmd1YWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgYmFja2Ryb3BBbmltYXRpb24sIHNpZGVQYW5lbEFuaW1hdGlvbiwgc2lkZVBhbmVsQW5pbWF0aW9uRHVyYXRpb24gfSBmcm9tICcuL3NpZGUtcGFuZWwuYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTaWRlUGFuZWxBbmltYXRpb25TdGF0ZSwgU2lkZVBhbmVsQ29uZmlnLCBTaWRlUGFuZWxQb3NpdGlvbiB9IGZyb20gJy4vc2lkZS1wYW5lbC5tb2RlbCc7XG5pbXBvcnQgeyBTaWRlUGFuZWxTZXJ2aWNlIH0gZnJvbSAnLi9zaWRlLXBhbmVsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaWRlLXBhbmVsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFtzaWRlUGFuZWxBbmltYXRpb24sIGJhY2tkcm9wQW5pbWF0aW9uXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIHRpdGxlID0gJyc7XG4gIHNob3dCYWNrQnV0dG9uID0gZmFsc2U7XG4gIHNpZGVQYW5lbFBvc2l0aW9uID0gc2lnbmFsPFNpZGVQYW5lbFBvc2l0aW9uPigncmlnaHQnKTtcblxuICBzaWRlUGFuZWxDb250YWluZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQoJ3NpZGVQYW5lbENvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KTtcbiAgc2lkZVBhbmVsID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+Pignc2lkZVBhbmVsJyk7XG4gIGJhY2tkcm9wID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+Pignc2lkZVBhbmVsQmFja2Ryb3AnKTtcbiAgbGFuZ3VhZ2UgPSBMYW5ndWFnZVNlcnZpY2UuZGVmYXVsdExhbmd1YWdlO1xuICBpc09wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGFuaW1hdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuIFNpZGVQYW5lbEFuaW1hdGlvblN0YXRlLk9wZW47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2lkZVBhbmVsUG9zaXRpb24oKSA9PT0gJ2xlZnQnXG4gICAgICA/IFNpZGVQYW5lbEFuaW1hdGlvblN0YXRlLkNsb3NlZExlZnRcbiAgICAgIDogU2lkZVBhbmVsQW5pbWF0aW9uU3RhdGUuQ2xvc2VkUmlnaHQ7XG4gIH0pO1xuXG4gIHByaXZhdGUgc2lkZVBhbmVsU2VydmljZSA9IGluamVjdChTaWRlUGFuZWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBzaWRlUGFuZWxDb25maWcgPSBpbmplY3QoU2lkZVBhbmVsQ29uZmlnKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCBzaG93QmFja0J1dHRvbiwgdGl0bGUgfSA9IHRoaXMuc2lkZVBhbmVsQ29uZmlnO1xuICAgIHRoaXMuc2lkZVBhbmVsUG9zaXRpb24uc2V0KHBvc2l0aW9uKTtcbiAgICB0aGlzLnNob3dCYWNrQnV0dG9uID0gc2hvd0JhY2tCdXR0b247XG4gICAgdGhpcy50aXRsZSA9IHRpdGxlO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldCh0cnVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNpZGVQYW5lbFNlcnZpY2UuZGVzdHJveUNvbXBvbmVudCgpO1xuICAgIH0sIHNpZGVQYW5lbEFuaW1hdGlvbkR1cmF0aW9uKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNpZGUtcGFuZWwtYmFja2Ryb3BcIiAjc2lkZVBhbmVsQmFja2Ryb3AgKGNsaWNrKT1cImNsb3NlKClcIiBbQGZhZGVJbk91dF09XCJpc09wZW4oKSA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+PC9kaXY+XG48ZGl2IGNsYXNzPVwic2lkZS1wYW5lbFwiICNzaWRlUGFuZWwgW0BzbGlkZUluT3V0XT1cImFuaW1hdGlvbigpXCI+XG4gIDxkaXYgY2xhc3M9XCJzaWRlLXBhbmVsLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLXBhbmVsLXRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgQGlmIChzaG93QmFja0J1dHRvbikge1xuICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2ljb24tYnV0dG9uJ1wiXG4gICAgICAgICAgW2ljb25OYW1lXT1cIidBcnJvdy1jaGV2cm9uLWxlZnQtZmlsbGVkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgICAgIFt0b29sdGlwXT1cIignQ09NTU9OLkJBQ0snKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2VcIlxuICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICA+PC91aS1idXR0b24+XG4gICAgICB9XG4gICAgICA8c3BhbiBjbGFzcz1cInNpZGUtcGFuZWwtdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDx1aS1idXR0b25cbiAgICAgIFt2YXJpYW50XT1cIidpY29uLWJ1dHRvbidcIlxuICAgICAgW2ljb25OYW1lXT1cIidDbG9zZSdcIlxuICAgICAgW3Rvb2x0aXBdPVwiKCdDT01NT04uQ0xPU0UnKSB8IHVpVHJhbnNsYXRlIDogbGFuZ3VhZ2VcIlxuICAgICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgPjwvdWktYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2lkZS1wYW5lbC1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAjc2lkZVBhbmVsQ29udGFpbmVyPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,22 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { MatTooltipModule } from '@angular/material/tooltip';
4
+ import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
5
+ import { ButtonComponentModule } from '../button/button.component.module';
6
+ import { TooltipComponentModule } from '../tooltip/tooltip.component.module';
7
+ import { SidePanelComponent } from './side-panel.component';
8
+ import * as i0 from "@angular/core";
9
+ export class SidePanelComponentModule {
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponentModule, declarations: [SidePanelComponent], imports: [CommonModule, MatTooltipModule, TooltipComponentModule, ButtonComponentModule, UiTranslatePipe], exports: [SidePanelComponent] }); }
12
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponentModule, imports: [CommonModule, MatTooltipModule, TooltipComponentModule, ButtonComponentModule] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelComponentModule, decorators: [{
15
+ type: NgModule,
16
+ args: [{
17
+ declarations: [SidePanelComponent],
18
+ exports: [SidePanelComponent],
19
+ imports: [CommonModule, MatTooltipModule, TooltipComponentModule, ButtonComponentModule, UiTranslatePipe],
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5jb21wb25lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3NpZGUtcGFuZWwvc2lkZS1wYW5lbC5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFRNUQsTUFBTSxPQUFPLHdCQUF3Qjs4R0FBeEIsd0JBQXdCOytHQUF4Qix3QkFBd0IsaUJBSnBCLGtCQUFrQixhQUV2QixZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxhQUQ5RixrQkFBa0I7K0dBR2pCLHdCQUF3QixZQUZ6QixZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCOzsyRkFFNUUsd0JBQXdCO2tCQUxwQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQyxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQztpQkFDMUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFVpVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgU2lkZVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9zaWRlLXBhbmVsLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2lkZVBhbmVsQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1NpZGVQYW5lbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIFRvb2x0aXBDb21wb25lbnRNb2R1bGUsIEJ1dHRvbkNvbXBvbmVudE1vZHVsZSwgVWlUcmFuc2xhdGVQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZVBhbmVsQ29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export var SidePanelAnimationState;
3
+ (function (SidePanelAnimationState) {
4
+ SidePanelAnimationState["Open"] = "open";
5
+ SidePanelAnimationState["Closed"] = "closed";
6
+ SidePanelAnimationState["ClosedRight"] = "closedRight";
7
+ SidePanelAnimationState["ClosedLeft"] = "closedLeft";
8
+ })(SidePanelAnimationState || (SidePanelAnimationState = {}));
9
+ export class SidePanelConfig {
10
+ }
11
+ export const defaultSidePanelConfig = {
12
+ position: 'right',
13
+ showBackButton: false,
14
+ title: '',
15
+ };
16
+ export const SIDE_PANEL_CONFIG = new InjectionToken('SIDE_PANEL_CONFIG', {
17
+ providedIn: 'root',
18
+ factory: () => defaultSidePanelConfig,
19
+ });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9zaWRlLXBhbmVsL3NpZGUtcGFuZWwubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLENBQU4sSUFBWSx1QkFLWDtBQUxELFdBQVksdUJBQXVCO0lBQ2pDLHdDQUFhLENBQUE7SUFDYiw0Q0FBaUIsQ0FBQTtJQUNqQixzREFBMkIsQ0FBQTtJQUMzQixvREFBeUIsQ0FBQTtBQUMzQixDQUFDLEVBTFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUtsQztBQUVELE1BQU0sT0FBTyxlQUFlO0NBSTNCO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW9CO0lBQ3JELFFBQVEsRUFBRSxPQUFPO0lBQ2pCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFrQixtQkFBbUIsRUFBRTtJQUN4RixVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsc0JBQXNCO0NBQ3RDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IHR5cGUgU2lkZVBhbmVsUG9zaXRpb24gPSAnbGVmdCcgfCAncmlnaHQnO1xuXG5leHBvcnQgZW51bSBTaWRlUGFuZWxBbmltYXRpb25TdGF0ZSB7XG4gIE9wZW4gPSAnb3BlbicsXG4gIENsb3NlZCA9ICdjbG9zZWQnLFxuICBDbG9zZWRSaWdodCA9ICdjbG9zZWRSaWdodCcsXG4gIENsb3NlZExlZnQgPSAnY2xvc2VkTGVmdCcsXG59XG5cbmV4cG9ydCBjbGFzcyBTaWRlUGFuZWxDb25maWcge1xuICB0aXRsZTogc3RyaW5nO1xuICBwb3NpdGlvbjogU2lkZVBhbmVsUG9zaXRpb247XG4gIHNob3dCYWNrQnV0dG9uOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFNpZGVQYW5lbENvbmZpZzogU2lkZVBhbmVsQ29uZmlnID0ge1xuICBwb3NpdGlvbjogJ3JpZ2h0JyxcbiAgc2hvd0JhY2tCdXR0b246IGZhbHNlLFxuICB0aXRsZTogJycsXG59O1xuXG5leHBvcnQgY29uc3QgU0lERV9QQU5FTF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48U2lkZVBhbmVsQ29uZmlnPignU0lERV9QQU5FTF9DT05GSUcnLCB7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZmFjdG9yeTogKCkgPT4gZGVmYXVsdFNpZGVQYW5lbENvbmZpZyxcbn0pO1xuIl19
@@ -0,0 +1,77 @@
1
+ import { createComponent, inject, Injectable, Injector, TemplateRef, } from '@angular/core';
2
+ import { SidePanelComponent } from './side-panel.component';
3
+ import { SIDE_PANEL_CONFIG, SidePanelConfig } from './side-panel.model';
4
+ import * as i0 from "@angular/core";
5
+ export class SidePanelService {
6
+ constructor(appRef, injector) {
7
+ this.appRef = appRef;
8
+ this.injector = injector;
9
+ this.defaultSidePanelConfig = inject(SIDE_PANEL_CONFIG);
10
+ }
11
+ open(content, config) {
12
+ const panelConfig = { ...this.defaultSidePanelConfig, ...config };
13
+ if (!this.SidePanelComponentRef) {
14
+ const injector = this.createSidePanelInjector(panelConfig);
15
+ const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);
16
+ this.SidePanelComponentRef = SidePanelComponentRef;
17
+ }
18
+ if (content instanceof TemplateRef) {
19
+ this.loadTemplate(content);
20
+ }
21
+ else {
22
+ this.loadComponent(content);
23
+ }
24
+ this.SidePanelComponentRef.instance.open();
25
+ }
26
+ destroyComponent() {
27
+ if (this.SidePanelComponentRef) {
28
+ this.appRef.detachView(this.SidePanelComponentRef.hostView);
29
+ this.SidePanelComponentRef.destroy();
30
+ this.SidePanelComponentRef = undefined;
31
+ }
32
+ if (this.contentComponentRef) {
33
+ this.contentComponentRef.destroy();
34
+ this.contentComponentRef = undefined;
35
+ }
36
+ }
37
+ createSidePanelInjector(config) {
38
+ return Injector.create({
39
+ providers: [{ provide: SidePanelConfig, useValue: config }],
40
+ parent: this.injector,
41
+ });
42
+ }
43
+ createSidePanelComponent(position, injector) {
44
+ const sidePanelComponentRef = createComponent(SidePanelComponent, {
45
+ environmentInjector: this.appRef.injector,
46
+ elementInjector: injector,
47
+ });
48
+ this.appRef.attachView(sidePanelComponentRef.hostView);
49
+ const sidePanelEl = sidePanelComponentRef.hostView.rootNodes[0];
50
+ sidePanelEl.querySelector('.side-panel')?.classList.add(position);
51
+ document.body.appendChild(sidePanelEl);
52
+ return sidePanelComponentRef;
53
+ }
54
+ loadComponent(component) {
55
+ const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;
56
+ if (viewContainerRef) {
57
+ viewContainerRef().clear();
58
+ this.contentComponentRef = viewContainerRef().createComponent(component);
59
+ }
60
+ }
61
+ loadTemplate(template) {
62
+ const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;
63
+ if (viewContainerRef) {
64
+ viewContainerRef().clear();
65
+ this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);
66
+ }
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelService, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelService, providedIn: 'root' }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SidePanelService, decorators: [{
72
+ type: Injectable,
73
+ args: [{
74
+ providedIn: 'root',
75
+ }]
76
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1wYW5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL3NpZGUtcGFuZWwvc2lkZS1wYW5lbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxlQUFlLEVBR2YsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsV0FBVyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQXFCLE1BQU0sb0JBQW9CLENBQUM7O0FBSzNGLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0IsWUFBb0IsTUFBc0IsRUFBVSxRQUE2QjtRQUE3RCxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBRnpFLDJCQUFzQixHQUFvQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUVRLENBQUM7SUFFckYsSUFBSSxDQUFDLE9BQXFDLEVBQUUsTUFBZ0M7UUFDMUUsTUFBTSxXQUFXLEdBQW9CLEVBQUUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVuRixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNu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bXBvbmVudFJlZixcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIGluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpZGVQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vc2lkZS1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU0lERV9QQU5FTF9DT05GSUcsIFNpZGVQYW5lbENvbmZpZywgU2lkZVBhbmVsUG9zaXRpb24gfSBmcm9tICcuL3NpZGUtcGFuZWwubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZVBhbmVsU2VydmljZSB7XG4gIHByaXZhdGUgU2lkZVBhbmVsQ29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPFNpZGVQYW5lbENvbXBvbmVudD47XG4gIHByaXZhdGUgY29udGVudENvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+O1xuICBwcml2YXRlIGVtYmVkZGVkVmlld1JlZj86IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICBwcml2YXRlIGRlZmF1bHRTaWRlUGFuZWxDb25maWc6IFNpZGVQYW5lbENvbmZpZyA9IGluamVjdChTSURFX1BBTkVMX0NPTkZJRyk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLCBwcml2YXRlIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yKSB7fVxuXG4gIG9wZW4oY29udGVudDogVHlwZTxhbnk+IHwgVGVtcGxhdGVSZWY8YW55PiwgY29uZmlnOiBQYXJ0aWFsPFNpZGVQYW5lbENvbmZpZz4pOiB2b2lkIHtcbiAgICBjb25zdCBwYW5lbENvbmZpZzogU2lkZVBhbmVsQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRTaWRlUGFuZWxDb25maWcsIC4uLmNvbmZpZyB9O1xuXG4gICAgaWYgKCF0aGlzLlNpZGVQYW5lbENvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNyZWF0ZVNpZGVQYW5lbEluamVjdG9yKHBhbmVsQ29uZmlnKTtcbiAgICAgIGNvbnN0IFNpZGVQYW5lbENvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlU2lkZVBhbmVsQ29tcG9uZW50KHBhbmVsQ29uZmlnLnBvc2l0aW9uLCBpbmplY3Rvcik7XG4gICAgICB0aGlzLlNpZGVQYW5lbENvbXBvbmVudFJlZiA9IFNpZGVQYW5lbENvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICB0aGlzLmxvYWRUZW1wbGF0ZShjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkQ29tcG9uZW50KGNvbnRlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuU2lkZVBhbmVsQ29tcG9uZW50UmVmLmluc3RhbmNlLm9wZW4oKTtcbiAgfVxuXG4gIGRlc3Ryb3lDb21wb25lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuU2lkZVBhbmVsQ29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuU2lkZVBhbmVsQ29tcG9uZW50UmVmLmhvc3RWaWV3KTtcbiAgICAgIHRoaXMuU2lkZVBhbmVsQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuU2lkZVBhbmVsQ29tcG9uZW50UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRlbnRDb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29udGVudENvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbnRlbnRDb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTaWRlUGFuZWxJbmplY3Rvcihjb25maWc6IFNpZGVQYW5lbENvbmZpZyk6IEluamVjdG9yIHtcbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU2lkZVBhbmVsQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1dLFxuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTaWRlUGFuZWxDb21wb25lbnQocG9zaXRpb246IFNpZGVQYW5lbFBvc2l0aW9uLCBpbmplY3RvcjogSW5qZWN0b3IpOiBDb21wb25lbnRSZWY8U2lkZVBhbmVsQ29tcG9uZW50PiB7XG4gICAgY29uc3Qgc2lkZVBhbmVsQ29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KFNpZGVQYW5lbENvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBSZWYuaW5qZWN0b3IsXG4gICAgICBlbGVtZW50SW5qZWN0b3I6IGluamVjdG9yLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhzaWRlUGFuZWxDb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuXG4gICAgY29uc3Qgc2lkZVBhbmVsRWwgPSAoc2lkZVBhbmVsQ29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgc2lkZVBhbmVsRWwucXVlcnlTZWxlY3RvcignLnNpZGUtcGFuZWwnKT8uY2xhc3NMaXN0LmFkZChwb3NpdGlvbik7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNpZGVQYW5lbEVsKTtcblxuICAgIHJldHVybiBzaWRlUGFuZWxDb21wb25lbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5TaWRlUGFuZWxDb21wb25lbnRSZWY/Lmluc3RhbmNlLnNpZGVQYW5lbENvbnRhaW5lcjtcbiAgICBpZiAodmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdmlld0NvbnRhaW5lclJlZigpLmNsZWFyKCk7XG4gICAgICB0aGlzLmNvbnRlbnRDb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmKCkuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2FkVGVtcGxhdGUodGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5TaWRlUGFuZWxDb21wb25lbnRSZWY/Lmluc3RhbmNlLnNpZGVQYW5lbENvbnRhaW5lcjtcbiAgICBpZiAodmlld0NvbnRhaW5lclJlZikge1xuICAgICAgdmlld0NvbnRhaW5lclJlZigpLmNsZWFyKCk7XG4gICAgICB0aGlzLmVtYmVkZGVkVmlld1JlZiA9IHZpZXdDb250YWluZXJSZWYoKS5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGUpO1xuICAgIH1cbiAgfVxufVxuIl19