sidesys-generic-ui 2.4.2 → 2.4.4

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.
Files changed (49) hide show
  1. package/esm2022/lib/icon-material/s-icon-material.component.mjs +2 -2
  2. package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +3 -3
  3. package/esm2022/lib/input/components/color/s-color.component.mjs +7 -4
  4. package/esm2022/lib/input/components/input/s-input-model.mjs +3 -1
  5. package/esm2022/lib/input/components/input/s-input.component.mjs +16 -23
  6. package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +19 -3
  7. package/esm2022/lib/input/components/input-textarea/s-input-textarea.component.mjs +3 -3
  8. package/esm2022/lib/input/components/slider/s-slider.component.mjs +208 -0
  9. package/esm2022/lib/input/components/time/s-time.component.mjs +3 -3
  10. package/esm2022/lib/input/index.mjs +2 -2
  11. package/esm2022/lib/input/input.module.mjs +6 -6
  12. package/esm2022/lib/list-simple/s-list-simple.component.mjs +2 -2
  13. package/esm2022/lib/modal/modal-confirm/modal-confirm.component.mjs +4 -4
  14. package/esm2022/lib/modal/modal-confirm/models/modal-confirm.interface.mjs +1 -1
  15. package/esm2022/lib/select/select/s-select.component.mjs +10 -9
  16. package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +3 -3
  17. package/esm2022/lib/select/select-multiple-old/s-select-multiple-old.component.mjs +2 -2
  18. package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +2 -2
  19. package/esm2022/lib/table-complete/table-complete.component.mjs +14 -5
  20. package/esm2022/lib/table-double/table-double.component.mjs +207 -53
  21. package/esm2022/lib/table-double/table-double.model.mjs +1 -1
  22. package/esm2022/lib/table-double-complete/table-double-complete.component.mjs +256 -0
  23. package/esm2022/lib/table-double-complete/table-double-complete.model.mjs +2 -0
  24. package/esm2022/lib/table-t/s-tablet.component.mjs +7 -4
  25. package/esm2022/lib/table-t/table-actions-buttons/table-actions-buttons.component.mjs +2 -2
  26. package/esm2022/lib/tabs/models/configTabs.interface.mjs +1 -1
  27. package/esm2022/lib/tabs/s-tabs.component.mjs +3 -3
  28. package/esm2022/public-api.mjs +2 -1
  29. package/fesm2022/sidesys-generic-ui.mjs +600 -164
  30. package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
  31. package/lib/input/components/color/s-color.component.d.ts +2 -1
  32. package/lib/input/components/input/s-input-model.d.ts +2 -0
  33. package/lib/input/components/input/s-input.component.d.ts +2 -2
  34. package/lib/input/components/input-number/s-input-number.component.d.ts +2 -0
  35. package/lib/input/components/slider/s-slider.component.d.ts +48 -0
  36. package/lib/input/index.d.ts +1 -1
  37. package/lib/input/input.module.d.ts +2 -2
  38. package/lib/modal/modal-confirm/models/modal-confirm.interface.d.ts +1 -1
  39. package/lib/table-complete/table-complete.component.d.ts +4 -0
  40. package/lib/table-double/table-double.component.d.ts +45 -22
  41. package/lib/table-double/table-double.model.d.ts +24 -3
  42. package/lib/table-double-complete/table-double-complete.component.d.ts +38 -0
  43. package/lib/table-double-complete/table-double-complete.model.d.ts +37 -0
  44. package/lib/table-t/s-tablet.component.d.ts +2 -1
  45. package/lib/tabs/models/configTabs.interface.d.ts +4 -0
  46. package/package.json +1 -1
  47. package/public-api.d.ts +2 -0
  48. package/esm2022/lib/input/components/range/s-range.component.mjs +0 -196
  49. package/lib/input/components/range/s-range.component.d.ts +0 -45
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef, } from '@angular/core';
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { THEME } from '../../../enums/theme.enum';
4
4
  import { ICON_THEME } from '../../enums/icon-theme.enum';
@@ -18,18 +18,18 @@ export class SInputComponent extends ControlValueAccessorDirective {
18
18
  this.blur = new EventEmitter();
19
19
  this.focus = new EventEmitter();
20
20
  this.iconSymbol = false;
21
- this.ICON_THEME = ICON_THEME;
22
21
  this.showPassword = false;
23
22
  this.INPUT_TYPE = INPUT_TYPE;
24
23
  this.THEME = THEME;
24
+ this.ICON_THEME = ICON_THEME;
25
25
  this.isFocused = false;
26
26
  }
27
27
  onInput(event) {
28
- this.patternError();
29
28
  const input = event.target;
30
29
  this.value = input.value;
31
30
  this.onChange(this.value);
32
31
  this.onTouched();
32
+ this.patternError();
33
33
  }
34
34
  registerOnChange(fn) {
35
35
  if (!this.config.useFormControl) {
@@ -40,25 +40,18 @@ export class SInputComponent extends ControlValueAccessorDirective {
40
40
  return this.config.theme === 'yellow' ? 'symbol' : 'icon';
41
41
  }
42
42
  showIconType() {
43
- this.iconType = this.config.type
44
- ? this.getIconByType(this.config.type)
45
- : undefined;
43
+ this.iconType = this.config.type ? this.getIconByType(this.config.type) : undefined;
46
44
  return !!this.iconType;
47
45
  }
48
46
  getIconByType(type) {
49
- return type in ICON_INPUT
50
- ? ICON_INPUT[type]
51
- : undefined;
47
+ return type in ICON_INPUT ? ICON_INPUT[type] : undefined;
52
48
  }
53
49
  patternError() {
54
- if (this.config.type === INPUT_TYPE.URL &&
55
- !INPUTS_REGEX.URL.test(this.control?.value || this.value)) {
56
- this.errorPattern = 'Formato de url invalido.';
57
- return;
58
- }
59
- if (this.config.type === INPUT_TYPE.EMAIL &&
60
- !INPUTS_REGEX.EMAIL.test(this.control?.value || this.value)) {
61
- this.errorPattern = 'Formato de email invalido.';
50
+ const value = this.control?.value || this.value;
51
+ if ((this.config.type === INPUT_TYPE.SEARCH && !INPUTS_REGEX.SEARCH.test(value)) ||
52
+ (this.config.type === INPUT_TYPE.URL && !INPUTS_REGEX.URL.test(value)) ||
53
+ (this.config.type === INPUT_TYPE.EMAIL && !INPUTS_REGEX.EMAIL.test(value))) {
54
+ this.errorPattern = 'validation.invalidData';
62
55
  return;
63
56
  }
64
57
  this.errorPattern = undefined;
@@ -68,16 +61,16 @@ export class SInputComponent extends ControlValueAccessorDirective {
68
61
  this.showPassword = !this.showPassword;
69
62
  }
70
63
  clickHelp() {
71
- this.clickHelpIconEvent.next();
64
+ this.clickHelpIconEvent.emit();
72
65
  }
73
66
  onBlur(event) {
74
67
  this.patternError();
75
68
  this.isFocused = false;
76
- this.blur.next(event);
69
+ this.blur.emit(event);
77
70
  }
78
71
  onFocus(event) {
79
72
  this.isFocused = true;
80
- this.focus.next(event);
73
+ this.focus.emit(event);
81
74
  }
82
75
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
83
76
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SInputComponent, selector: "s-input", inputs: { config: "config" }, outputs: { clickHelpIconEvent: "clickHelpIconEvent", blur: "blur", focus: "focus" }, providers: [
@@ -86,7 +79,7 @@ export class SInputComponent extends ControlValueAccessorDirective {
86
79
  useExisting: forwardRef(() => SInputComponent),
87
80
  multi: true,
88
81
  },
89
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"s-input\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-input__label\">\n {{ config.label }}\n <span class=\"s-input__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-input__content {{ config.size }} theme-{{ config.theme }} {{\n config.classAdd\n }}\"\n [ngClass]=\"{\n 'disabled-active':\n config.disabled || (control && control.status === 'DISABLED'),\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && errorPattern && control.touched) ||\n config.theme === THEME.RED ||\n config.errorText,\n }\">\n <div *ngIf=\"showIconType()\" class=\"content-left\">\n <s-icon-mat class=\"icon\">{{ iconType }}</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n maxlength=\"{{ config.maxlength }}\"\n [type]=\"config.type\"\n [formControl]=\"control\"\n (input)=\"patternError()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [type]=\"config.type\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div *ngIf=\"config?.type === 'password'\" class=\"content-right\">\n <s-icon-mat\n [type]=\"iconSymbol ? 'symbol' : 'icon'\"\n class=\"icon cursor\"\n (click)=\"changeShowPassword()\"\n >{{ showPassword ? 'visibility' : 'visibility_off' }}\n </s-icon-mat>\n </div>\n <div\n *ngIf=\"config?.theme !== THEME.DEFAULT && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n config.showHelp &&\n (config.theme === THEME.DEFAULT || config.theme !== undefined)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched) &&\n !(\n (config.type === INPUT_TYPE.URL && config.errorText) ||\n (config.type === INPUT_TYPE.EMAIL && config.errorText)\n )\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\">\n {{ config.errorText }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n config.type !== INPUT_TYPE.SEARCH &&\n !errorPattern &&\n !config.errorText\n \"\n theme=\"red\">\n {{ errorPattern }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !errorPattern &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</div>\n", styles: [".s-input__label{font-size:.875rem;color:var(--secondary-600)}.s-input__required{color:var(--primary-600)}.s-input__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.188rem 0;background-color:var(--neutrals-1200)}.s-input__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input__content input:-webkit-autofill,.s-input__content input:-webkit-autofill:hover,.s-input__content input:-webkit-autofill:focus,.s-input__content input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1.875rem var(--neutrals-1200) inset!important}.s-input__content input:focus,.s-input__content input:focus-visible{outline:none}.s-input__content .icon{width:1.25rem;cursor:default}.s-input__content .icon span{display:flex}.s-input__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input__content .content-left-url{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;border-right:.063rem solid var(--secondary-500);padding-right:.5rem;color:var(--secondary-500);font-size:.9rem}.s-input__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input__content.sm input{height:1.3rem;font-size:.75rem}.s-input__content.sm .icon{width:1.25rem;cursor:default}.s-input__content.sm .icon span{font-size:1.2em;display:flex}.s-input__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);pointer-events:none}.s-input__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input__content.disabled-active .content-left{color:var(--neutrals-800)!important}.s-input__content.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input__content.theme-red{border:.063rem solid var(--red-500)}.s-input__content.theme-red .icon.report span{color:var(--red-600)}.s-input__content.theme-green{border:.063rem solid var(--green-500)}.s-input__content.theme-green .icon.report span{color:var(--green-600)}.s-input__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input__content:has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i5.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }], encapsulation: i0.ViewEncapsulation.None }); }
82
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"s-input\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-input__label\">\n {{ config.label }}\n <span class=\"s-input__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-input__content {{ config.size }} theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || (control && control.status === 'DISABLED'),\n readonly: config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n errorPattern ||\n config.theme === THEME.RED ||\n config.errorText,\n }\">\n <div *ngIf=\"showIconType()\" class=\"content-left\">\n <s-icon-mat class=\"icon\">{{ iconType }}</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n [placeholder]=\"config.placeholder ?? ''\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [maxlength]=\"config.maxlength ?? null\"\n [formControl]=\"control\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n [placeholder]=\"config.placeholder ?? ''\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div *ngIf=\"config?.type === 'password'\" class=\"content-right\">\n <s-icon-mat [type]=\"iconSymbol ? 'symbol' : 'icon'\" class=\"icon cursor\" (click)=\"changeShowPassword()\"\n >{{ showPassword ? 'visibility' : 'visibility_off' }}\n </s-icon-mat>\n </div>\n <div *ngIf=\"config?.theme !== THEME.DEFAULT && config.theme !== undefined\" class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{ ICON_THEME[config.theme] }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"config.showHelp && (config.theme === THEME.DEFAULT || config.theme !== undefined)\"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched) &&\n !((config.type === INPUT_TYPE.URL && config.errorText) || (config.type === INPUT_TYPE.EMAIL && config.errorText))\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control *ngIf=\"!config.hideErrorText && config.errorText\" theme=\"red\">\n {{ config.errorText }}\n </s-error-control>\n <s-error-control *ngIf=\"!config.hideErrorText && errorPattern && !config.errorText\" theme=\"red\">\n {{ errorPattern }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !errorPattern &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) || (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</div>\n", styles: [":host{align-self:flex-start}.s-input s-error-control .label-content{line-height:normal}.s-input__label{font-size:.875rem;color:var(--secondary-600)}.s-input__required{color:var(--primary-600)}.s-input__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.188rem 0;background-color:var(--neutrals-1200)}.s-input__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input__content input:-webkit-autofill,.s-input__content input:-webkit-autofill:hover,.s-input__content input:-webkit-autofill:focus,.s-input__content input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1.875rem var(--neutrals-1200) inset!important}.s-input__content input:focus,.s-input__content input:focus-visible{outline:none}.s-input__content .icon{width:1.25rem;cursor:default}.s-input__content .icon span{display:flex}.s-input__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input__content .content-left-url{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;border-right:.063rem solid var(--secondary-500);padding-right:.5rem;color:var(--secondary-500);font-size:.9rem}.s-input__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input__content.sm input{height:1.3rem;font-size:.75rem}.s-input__content.sm .icon{width:1.25rem;cursor:default}.s-input__content.sm .icon span{font-size:1.2em;display:flex}.s-input__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);pointer-events:none}.s-input__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input__content.disabled-active .content-left{color:var(--neutrals-800)!important}.s-input__content.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input__content.readonly{background-color:var(--neutrals-1100)}.s-input__content.readonly input{background-color:var(--neutrals-1100);cursor:default;color:var(--secondary-600)}.s-input__content.theme-red{border:.063rem solid var(--red-500)}.s-input__content.theme-red .icon.report span{color:var(--red-600)}.s-input__content.theme-green{border:.063rem solid var(--green-500)}.s-input__content.theme-green .icon.report span{color:var(--green-600)}.s-input__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input__content:has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i5.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }], encapsulation: i0.ViewEncapsulation.None }); }
90
83
  }
91
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputComponent, decorators: [{
92
85
  type: Component,
@@ -96,7 +89,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
96
89
  useExisting: forwardRef(() => SInputComponent),
97
90
  multi: true,
98
91
  },
99
- ], template: "<div class=\"s-input\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-input__label\">\n {{ config.label }}\n <span class=\"s-input__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-input__content {{ config.size }} theme-{{ config.theme }} {{\n config.classAdd\n }}\"\n [ngClass]=\"{\n 'disabled-active':\n config.disabled || (control && control.status === 'DISABLED'),\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && errorPattern && control.touched) ||\n config.theme === THEME.RED ||\n config.errorText,\n }\">\n <div *ngIf=\"showIconType()\" class=\"content-left\">\n <s-icon-mat class=\"icon\">{{ iconType }}</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n maxlength=\"{{ config.maxlength }}\"\n [type]=\"config.type\"\n [formControl]=\"control\"\n (input)=\"patternError()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [type]=\"config.type\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div *ngIf=\"config?.type === 'password'\" class=\"content-right\">\n <s-icon-mat\n [type]=\"iconSymbol ? 'symbol' : 'icon'\"\n class=\"icon cursor\"\n (click)=\"changeShowPassword()\"\n >{{ showPassword ? 'visibility' : 'visibility_off' }}\n </s-icon-mat>\n </div>\n <div\n *ngIf=\"config?.theme !== THEME.DEFAULT && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n config.showHelp &&\n (config.theme === THEME.DEFAULT || config.theme !== undefined)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched) &&\n !(\n (config.type === INPUT_TYPE.URL && config.errorText) ||\n (config.type === INPUT_TYPE.EMAIL && config.errorText)\n )\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\">\n {{ config.errorText }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n config.type !== INPUT_TYPE.SEARCH &&\n !errorPattern &&\n !config.errorText\n \"\n theme=\"red\">\n {{ errorPattern }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !errorPattern &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</div>\n", styles: [".s-input__label{font-size:.875rem;color:var(--secondary-600)}.s-input__required{color:var(--primary-600)}.s-input__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.188rem 0;background-color:var(--neutrals-1200)}.s-input__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input__content input:-webkit-autofill,.s-input__content input:-webkit-autofill:hover,.s-input__content input:-webkit-autofill:focus,.s-input__content input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1.875rem var(--neutrals-1200) inset!important}.s-input__content input:focus,.s-input__content input:focus-visible{outline:none}.s-input__content .icon{width:1.25rem;cursor:default}.s-input__content .icon span{display:flex}.s-input__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input__content .content-left-url{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;border-right:.063rem solid var(--secondary-500);padding-right:.5rem;color:var(--secondary-500);font-size:.9rem}.s-input__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input__content.sm input{height:1.3rem;font-size:.75rem}.s-input__content.sm .icon{width:1.25rem;cursor:default}.s-input__content.sm .icon span{font-size:1.2em;display:flex}.s-input__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);pointer-events:none}.s-input__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input__content.disabled-active .content-left{color:var(--neutrals-800)!important}.s-input__content.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input__content.theme-red{border:.063rem solid var(--red-500)}.s-input__content.theme-red .icon.report span{color:var(--red-600)}.s-input__content.theme-green{border:.063rem solid var(--green-500)}.s-input__content.theme-green .icon.report span{color:var(--green-600)}.s-input__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input__content:has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"] }]
92
+ ], template: "<div class=\"s-input\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-input__label\">\n {{ config.label }}\n <span class=\"s-input__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-input__content {{ config.size }} theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || (control && control.status === 'DISABLED'),\n readonly: config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n errorPattern ||\n config.theme === THEME.RED ||\n config.errorText,\n }\">\n <div *ngIf=\"showIconType()\" class=\"content-left\">\n <s-icon-mat class=\"icon\">{{ iconType }}</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n [placeholder]=\"config.placeholder ?? ''\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [maxlength]=\"config.maxlength ?? null\"\n [formControl]=\"control\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n [id]=\"config.id\"\n [placeholder]=\"config.placeholder ?? ''\"\n [readOnly]=\"config.readOnly || config.disabled\"\n type=\"{{ type }}\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div *ngIf=\"config?.type === 'password'\" class=\"content-right\">\n <s-icon-mat [type]=\"iconSymbol ? 'symbol' : 'icon'\" class=\"icon cursor\" (click)=\"changeShowPassword()\"\n >{{ showPassword ? 'visibility' : 'visibility_off' }}\n </s-icon-mat>\n </div>\n <div *ngIf=\"config?.theme !== THEME.DEFAULT && config.theme !== undefined\" class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{ ICON_THEME[config.theme] }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"config.showHelp && (config.theme === THEME.DEFAULT || config.theme !== undefined)\"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched) &&\n !((config.type === INPUT_TYPE.URL && config.errorText) || (config.type === INPUT_TYPE.EMAIL && config.errorText))\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control *ngIf=\"!config.hideErrorText && config.errorText\" theme=\"red\">\n {{ config.errorText }}\n </s-error-control>\n <s-error-control *ngIf=\"!config.hideErrorText && errorPattern && !config.errorText\" theme=\"red\">\n {{ errorPattern }}\n </s-error-control>\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !errorPattern &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) || (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</div>\n", styles: [":host{align-self:flex-start}.s-input s-error-control .label-content{line-height:normal}.s-input__label{font-size:.875rem;color:var(--secondary-600)}.s-input__required{color:var(--primary-600)}.s-input__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.188rem 0;background-color:var(--neutrals-1200)}.s-input__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input__content input:-webkit-autofill,.s-input__content input:-webkit-autofill:hover,.s-input__content input:-webkit-autofill:focus,.s-input__content input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1.875rem var(--neutrals-1200) inset!important}.s-input__content input:focus,.s-input__content input:focus-visible{outline:none}.s-input__content .icon{width:1.25rem;cursor:default}.s-input__content .icon span{display:flex}.s-input__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input__content .content-left-url{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;border-right:.063rem solid var(--secondary-500);padding-right:.5rem;color:var(--secondary-500);font-size:.9rem}.s-input__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input__content.sm input{height:1.3rem;font-size:.75rem}.s-input__content.sm .icon{width:1.25rem;cursor:default}.s-input__content.sm .icon span{font-size:1.2em;display:flex}.s-input__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);pointer-events:none}.s-input__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input__content.disabled-active .content-left{color:var(--neutrals-800)!important}.s-input__content.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input__content.readonly{background-color:var(--neutrals-1100)}.s-input__content.readonly input{background-color:var(--neutrals-1100);cursor:default;color:var(--secondary-600)}.s-input__content.theme-red{border:.063rem solid var(--red-500)}.s-input__content.theme-red .icon.report span{color:var(--red-600)}.s-input__content.theme-green{border:.063rem solid var(--green-500)}.s-input__content.theme-green .icon.report span{color:var(--green-600)}.s-input__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input__content:has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input__content:has(input:focus).theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"] }]
100
93
  }], propDecorators: { config: [{
101
94
  type: Input
102
95
  }], clickHelpIconEvent: [{
@@ -106,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
106
99
  }], focus: [{
107
100
  type: Output
108
101
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9pbnB1dC9jb21wb25lbnRzL2lucHV0L3MtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC9zLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7OztBQWUvRSxNQUFNLE9BQU8sZUFBbUIsU0FBUSw2QkFBZ0M7SUFieEU7O1FBY1csV0FBTSxHQUFXLElBQUksTUFBTSxFQUFFLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM5QyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUzQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsaUJBQVks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QUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQW5GVSxlQUFlO21HQUFmLGVBQWUscUpBUmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ3pCSCwyOEhBeUhBOzs0RkQ5RmEsZUFBZTtrQkFiM0IsU0FBUzsrQkFDRSxTQUFTLGlCQUdKLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7NEJBQzlDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRIRU1FIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvdGhlbWUuZW51bSc7XG5pbXBvcnQgeyBJQ09OX1RIRU1FIH0gZnJvbSAnLi4vLi4vZW51bXMvaWNvbi10aGVtZS5lbnVtJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJQ09OX0lOUFVULCBJTlBVVF9UWVBFLCBJTlBVVFNfUkVHRVgsIFNJbnB1dCB9IGZyb20gJy4vcy1pbnB1dC1tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcy1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU0lucHV0Q29tcG9uZW50PFQ+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VD4ge1xuICBASW5wdXQoKSBjb25maWc6IFNJbnB1dCA9IG5ldyBTSW5wdXQoKTtcbiAgQE91dHB1dCgpIGNsaWNrSGVscEljb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpY29uU3ltYm9sOiBib29sZWFuID0gZmFsc2U7XG4gIGljb25UeXBlPzogc3RyaW5nO1xuICBJQ09OX1RIRU1FID0gSUNPTl9USEVNRTtcbiAgc2hvd1Bhc3N3b3JkID0gZmFsc2U7XG4gIHR5cGUhOiBJTlBVVF9UWVBFO1xuICBlcnJvclBhdHRlcm4hOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIElOUFVUX1RZUEUgPSBJTlBVVF9UWVBFO1xuICBUSEVNRSA9IFRIRU1FO1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGF0dGVybkVycm9yKCk7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy51c2VGb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb25UeXBlKCk6ICdzeW1ib2wnIHwgJ2ljb24nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGhlbWUgPT09ICd5ZWxsb3cnID8gJ3N5bWJvbCcgOiAnaWNvbic7XG4gIH1cblxuICBzaG93SWNvblR5cGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5pY29uVHlwZSA9IHRoaXMuY29uZmlnLnR5cGVcbiAgICAgID8gdGhpcy5nZXRJY29uQnlUeXBlKHRoaXMuY29uZmlnLnR5cGUpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gISF0aGlzLmljb25UeXBlO1xuICB9XG5cbiAgZ2V0SWNvbkJ5VHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0eXBlIGluIElDT05fSU5QVVRcbiAgICAgID8gSUNPTl9JTlBVVFt0eXBlIGFzIGtleW9mIHR5cGVvZiBJQ09OX0lOUFVUXVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwYXR0ZXJuRXJyb3IoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcudHlwZSA9PT0gSU5QVVRfVFlQRS5VUkwgJiZcbiAgICAgICFJTlBVVFNfUkVHRVguVVJMLnRlc3QodGhpcy5jb250cm9sPy52YWx1ZSB8fCB0aGlzLnZhbHVlKVxuICAgICkge1xuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gPSAnRm9ybWF0byBkZSB1cmwgaW52YWxpZG8uJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWcudHlwZSA9PT0gSU5QVVRfVFlQRS5FTUFJTCAmJlxuICAgICAgIUlOUFVUU19SRUdFWC5FTUFJTC50ZXN0KHRoaXMuY29udHJvbD8udmFsdWUgfHwgdGhpcy52YWx1ZSlcbiAgICApIHtcbiAgICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gJ0Zvcm1hdG8gZGUgZW1haWwgaW52YWxpZG8uJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lcnJvclBhdHRlcm4gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFuZ2VTaG93UGFzc3dvcmQoKSB7XG4gICAgdGhpcy50eXBlID0gdGhpcy5zaG93UGFzc3dvcmQgPyBJTlBVVF9UWVBFLlBBU1NXT1JEIDogSU5QVVRfVFlQRS5URVhUO1xuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xuICB9XG5cbiAgY2xpY2tIZWxwKCkge1xuICAgIHRoaXMuY2xpY2tIZWxwSWNvbkV2ZW50Lm5leHQoKTtcbiAgfVxuXG4gIG9uQmx1cihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wYXR0ZXJuRXJyb3IoKTtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicy1pbnB1dFwiPlxuICA8bGFiZWwgW2Zvcl09XCJjb25maWcuaWRcIiAqbmdJZj1cImNvbmZpZz8ubGFiZWxcIiBjbGFzcz1cInMtaW5wdXRfX2xhYmVsXCI+XG4gICAge3sgY29uZmlnLmxhYmVsIH19XG4gICAgPHNwYW4gY2xhc3M9XCJzLWlucHV0X19yZXF1aXJlZFwiICpuZ0lmPVwiY29uZmlnPy5yZXF1aXJlZFwiPio8L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cInMtaW5wdXRfX2NvbnRlbnQge3sgY29uZmlnLnNpemUgfX0gdGhlbWUte3sgY29uZmlnLnRoZW1lIH19IHt7XG4gICAgICBjb25maWcuY2xhc3NBZGRcbiAgICB9fVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2Rpc2FibGVkLWFjdGl2ZSc6XG4gICAgICAgIGNvbmZpZy5kaXNhYmxlZCB8fCAoY29udHJvbCAmJiBjb250cm9sLnN0YXR1cyA9PT0gJ0RJU0FCTEVEJyksXG4gICAgICAndGhlbWUtcmVkJzpcbiAgICAgICAgKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChpc0ZvY3VzZWQgfHwgY29udHJvbC50b3VjaGVkKSkgfHxcbiAgICAgICAgKGNvbnRyb2wgJiYgZXJyb3JQYXR0ZXJuICYmIGNvbnRyb2wudG91Y2hlZCkgfHxcbiAgICAgICAgY29uZmlnLnRoZW1lID09PSBUSEVNRS5SRUQgfHxcbiAgICAgICAgY29uZmlnLmVycm9yVGV4dCxcbiAgICB9XCI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dJY29uVHlwZSgpXCIgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cbiAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPnt7IGljb25UeXBlIH19PC9zLWljb24tbWF0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2w7IGVsc2Ugbm90VXNlRm9ybUNvbnRyb2xcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBbaWRdPVwiY29uZmlnLmlkXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbmZpZy5wbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgW3JlYWRPbmx5XT1cImNvbmZpZy5yZWFkT25seSB8fCBjb25maWcuZGlzYWJsZWRcIlxuICAgICAgICAgIHR5cGU9XCJ7eyB0eXBlIH19XCJcbiAgICAgICAgICBtYXg9XCJ7eyBjb25maWcubWF4IH19XCJcbiAgICAgICAgICBtaW49XCJ7eyBjb25maWcubWluIH19XCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCJ7eyBjb25maWcubWF4bGVuZ3RoIH19XCJcbiAgICAgICAgICBbdHlwZV09XCJjb25maWcudHlwZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIChpbnB1dCk9XCJwYXR0ZXJuRXJyb3IoKVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vdFVzZUZvcm1Db250cm9sPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgIFtpZF09XCJjb25maWcuaWRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29uZmlnLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwiY29uZmlnLnJlYWRPbmx5IHx8IGNvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgICAgdHlwZT1cInt7IHR5cGUgfX1cIlxuICAgICAgICAgIG1heD1cInt7IGNvbmZpZy5tYXggfX1cIlxuICAgICAgICAgIG1pbj1cInt7IGNvbmZpZy5taW4gfX1cIlxuICAgICAgICAgIFt0eXBlXT1cImNvbmZpZy50eXBlXCJcbiAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCIgLz5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImNvbmZpZz8udHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgPHMtaWNvbi1tYXRcbiAgICAgICAgW3R5cGVdPVwiaWNvblN5bWJvbCA/ICdzeW1ib2wnIDogJ2ljb24nXCJcbiAgICAgICAgY2xhc3M9XCJpY29uIGN1cnNvclwiXG4gICAgICAgIChjbGljayk9XCJjaGFuZ2VTaG93UGFzc3dvcmQoKVwiXG4gICAgICAgID57eyBzaG93UGFzc3dvcmQgPyAndmlzaWJpbGl0eScgOiAndmlzaWJpbGl0eV9vZmYnIH19XG4gICAgICA8L3MtaWNvbi1tYXQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJjb25maWc/LnRoZW1lICE9PSBUSEVNRS5ERUZBVUxUICYmIGNvbmZpZy50aGVtZSAhPT0gdW5kZWZpbmVkXCJcbiAgICAgIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiZ2V0SWNvblR5cGUoKVwiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e1xuICAgICAgICBJQ09OX1RIRU1FW2NvbmZpZy50aGVtZV1cbiAgICAgIH19PC9zLWljb24tbWF0PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGNvbmZpZy5zaG93SGVscCAmJlxuICAgICAgICAoY29uZmlnLnRoZW1lID09PSBUSEVNRS5ERUZBVUxUIHx8IGNvbmZpZy50aGVtZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSGVscCgpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiXG4gICAgICAgID5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXRcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxzLXZhbGlkYXRpb24tZXJyb3JcbiAgICAqbmdJZj1cIlxuICAgICAgIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmXG4gICAgICBjb250cm9sICYmXG4gICAgICBjb250cm9sLmludmFsaWQgJiZcbiAgICAgIChpc0ZvY3VzZWQgfHwgY29udHJvbC50b3VjaGVkKSAmJlxuICAgICAgIShcbiAgICAgICAgKGNvbmZpZy50eXBlID09PSBJTlBVVF9UWVBFLlVSTCAmJiBjb25maWcuZXJyb3JUZXh0KSB8fFxuICAgICAgICAoY29uZmlnLnR5cGUgPT09IElOUFVUX1RZUEUuRU1BSUwgJiYgY29uZmlnLmVycm9yVGV4dClcbiAgICAgIClcbiAgICBcIlxuICAgIFtjdXN0b21FcnJvck1lc3NhZ2VzXT1cImNvbmZpZy5lcnJvck1lc3NhZ2VzID8/IHVuZGVmaW5lZFwiXG4gICAgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPlxuICA8L3MtdmFsaWRhdGlvbi1lcnJvcj5cbiAgPHMtZXJyb3ItY29udHJvbFxuICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmIGNvbmZpZy5lcnJvclRleHRcIlxuICAgIHRoZW1lPVwicmVkXCI+XG4gICAge3sgY29uZmlnLmVycm9yVGV4dCB9fVxuICA8L3MtZXJyb3ItY29udHJvbD5cbiAgPHMtZXJyb3ItY29udHJvbFxuICAgICpuZ0lmPVwiXG4gICAgICAhY29uZmlnLmhpZGVFcnJvclRleHQgJiZcbiAgICAgIGNvbmZpZy50eXBlICE9PSBJTlBVVF9UWVBFLlNFQVJDSCAmJlxuICAgICAgIWVycm9yUGF0dGVybiAmJlxuICAgICAgIWNvbmZpZy5lcnJvclRleHRcbiAgICBcIlxuICAgIHRoZW1lPVwicmVkXCI+XG4gICAge3sgZXJyb3JQYXR0ZXJuIH19XG4gIDwvcy1lcnJvci1jb250cm9sPlxuICA8cy1lcnJvci1jb250cm9sXG4gICAgKm5nSWY9XCJcbiAgICAgICFjb25maWcuaGlkZUVycm9yVGV4dCAmJlxuICAgICAgIWVycm9yUGF0dGVybiAmJlxuICAgICAgIWNvbmZpZy5lcnJvclRleHQgJiZcbiAgICAgICgoY29udHJvbCAmJiBjb250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddICYmICFjb250cm9sLnRvdWNoZWQpIHx8XG4gICAgICAgIChjb250cm9sICYmICFjb250cm9sLmVycm9ycykpICYmXG4gICAgICAhKGlzRm9jdXNlZCAmJiBjb250cm9sLmludmFsaWQpXG4gICAgXCI+XG4gICAge3sgY29uZmlnLmhlbHBUZXh0IHx8ICcnIH19XG4gIDwvcy1lcnJvci1jb250cm9sPlxuPC9kaXY+XG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9pbnB1dC9jb21wb25lbnRzL2lucHV0L3MtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC9zLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBZS9FLE1BQU0sT0FBTyxlQUFtQixTQUFRLDZCQUFnQztJQWJ4RTs7UUFjVyxXQUFNLEdBQVcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzlDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHckIsZUFBVSxH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Q0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0ExRVUsZUFBZTttR0FBZixlQUFlLHFKQVJmO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQzlDLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpRENsQkgsc3BIQTRGQTs7NEZEeEVhLGVBQWU7a0JBYjNCLFNBQVM7K0JBQ0UsU0FBUyxpQkFHSixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVEhFTUUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy90aGVtZS5lbnVtJztcbmltcG9ydCB7IElDT05fVEhFTUUgfSBmcm9tICcuLi8uLi9lbnVtcy9pY29uLXRoZW1lLmVudW0nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IElDT05fSU5QVVQsIElOUFVUX1RZUEUsIElOUFVUU19SRUdFWCwgU0lucHV0IH0gZnJvbSAnLi9zLWlucHV0LW1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncy1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcy1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTSW5wdXRDb21wb25lbnQ8VD4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUPiB7XG4gIEBJbnB1dCgpIGNvbmZpZzogU0lucHV0ID0gbmV3IFNJbnB1dCgpO1xuICBAT3V0cHV0KCkgY2xpY2tIZWxwSWNvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGljb25TeW1ib2wgPSBmYWxzZTtcbiAgaWNvblR5cGU/OiBzdHJpbmc7XG4gIHNob3dQYXNzd29yZCA9IGZhbHNlO1xuICB0eXBlITogSU5QVVRfVFlQRTtcbiAgZXJyb3JQYXR0ZXJuPzogc3RyaW5nO1xuICBJTlBVVF9UWVBFID0gSU5QVVRfVFlQRTtcbiAgVEhFTUUgPSBUSEVNRTtcbiAgSUNPTl9USEVNRSA9IElDT05fVEhFTUU7XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWUgYXMgYW55O1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnBhdHRlcm5FcnJvcigpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy51c2VGb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIGdldEljb25UeXBlKCk6ICdzeW1ib2wnIHwgJ2ljb24nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGhlbWUgPT09ICd5ZWxsb3cnID8gJ3N5bWJvbCcgOiAnaWNvbic7XG4gIH1cblxuICBzaG93SWNvblR5cGUoKTogYm9vbGVhbiB7XG4gICAgdGhpcy5pY29uVHlwZSA9IHRoaXMuY29uZmlnLnR5cGUgPyB0aGlzLmdldEljb25CeVR5cGUodGhpcy5jb25maWcudHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICEhdGhpcy5pY29uVHlwZTtcbiAgfVxuXG4gIGdldEljb25CeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdHlwZSBpbiBJQ09OX0lOUFVUID8gSUNPTl9JTlBVVFt0eXBlIGFzIGtleW9mIHR5cGVvZiBJQ09OX0lOUFVUXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHBhdHRlcm5FcnJvcigpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udHJvbD8udmFsdWUgfHwgdGhpcy52YWx1ZTtcbiAgICBpZiAoXG4gICAgICAodGhpcy5jb25maWcudHlwZSA9PT0gSU5QVVRfVFlQRS5TRUFSQ0ggJiYgIUlOUFVUU19SRUdFWC5TRUFSQ0gudGVzdCh2YWx1ZSkpIHx8XG4gICAgICAodGhpcy5jb25maWcudHlwZSA9PT0gSU5QVVRfVFlQRS5VUkwgJiYgIUlOUFVUU19SRUdFWC5VUkwudGVzdCh2YWx1ZSkpIHx8XG4gICAgICAodGhpcy5jb25maWcudHlwZSA9PT0gSU5QVVRfVFlQRS5FTUFJTCAmJiAhSU5QVVRTX1JFR0VYLkVNQUlMLnRlc3QodmFsdWUpKVxuICAgICkge1xuICAgICAgdGhpcy5lcnJvclBhdHRlcm4gPSAndmFsaWRhdGlvbi5pbnZhbGlkRGF0YSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZXJyb3JQYXR0ZXJuID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgY2hhbmdlU2hvd1Bhc3N3b3JkKCkge1xuICAgIHRoaXMudHlwZSA9IHRoaXMuc2hvd1Bhc3N3b3JkID8gSU5QVVRfVFlQRS5QQVNTV09SRCA6IElOUFVUX1RZUEUuVEVYVDtcbiAgICB0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcbiAgfVxuXG4gIGNsaWNrSGVscCgpIHtcbiAgICB0aGlzLmNsaWNrSGVscEljb25FdmVudC5lbWl0KCk7XG4gIH1cblxuICBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucGF0dGVybkVycm9yKCk7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5mb2N1cy5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInMtaW5wdXRcIj5cbiAgPGxhYmVsIFtmb3JdPVwiY29uZmlnLmlkXCIgKm5nSWY9XCJjb25maWc/LmxhYmVsXCIgY2xhc3M9XCJzLWlucHV0X19sYWJlbFwiPlxuICAgIHt7IGNvbmZpZy5sYWJlbCB9fVxuICAgIDxzcGFuIGNsYXNzPVwicy1pbnB1dF9fcmVxdWlyZWRcIiAqbmdJZj1cImNvbmZpZz8ucmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzLWlucHV0X19jb250ZW50IHt7IGNvbmZpZy5zaXplIH19IHRoZW1lLXt7IGNvbmZpZy50aGVtZSB9fSB7eyBjb25maWcuY2xhc3NBZGQgfX1cIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdkaXNhYmxlZC1hY3RpdmUnOiBjb25maWcuZGlzYWJsZWQgfHwgKGNvbnRyb2wgJiYgY29udHJvbC5zdGF0dXMgPT09ICdESVNBQkxFRCcpLFxuICAgICAgcmVhZG9ubHk6IGNvbmZpZy5yZWFkT25seSxcbiAgICAgICd0aGVtZS1yZWQnOlxuICAgICAgICAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGlzRm9jdXNlZCB8fCBjb250cm9sLnRvdWNoZWQpKSB8fFxuICAgICAgICBlcnJvclBhdHRlcm4gfHxcbiAgICAgICAgY29uZmlnLnRoZW1lID09PSBUSEVNRS5SRUQgfHxcbiAgICAgICAgY29uZmlnLmVycm9yVGV4dCxcbiAgICB9XCI+XG4gICAgPGRpdiAqbmdJZj1cInNob3dJY29uVHlwZSgpXCIgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cbiAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPnt7IGljb25UeXBlIH19PC9zLWljb24tbWF0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2w7IGVsc2Ugbm90VXNlRm9ybUNvbnRyb2xcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBbaWRdPVwiY29uZmlnLmlkXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgICBbcmVhZE9ubHldPVwiY29uZmlnLnJlYWRPbmx5IHx8IGNvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgICAgdHlwZT1cInt7IHR5cGUgfX1cIlxuICAgICAgICAgIG1heD1cInt7IGNvbmZpZy5tYXggfX1cIlxuICAgICAgICAgIG1pbj1cInt7IGNvbmZpZy5taW4gfX1cIlxuICAgICAgICAgIFttYXhsZW5ndGhdPVwiY29uZmlnLm1heGxlbmd0aCA/PyBudWxsXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI25vdFVzZUZvcm1Db250cm9sPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgIFtpZF09XCJjb25maWcuaWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJjb25maWcucmVhZE9ubHkgfHwgY29uZmlnLmRpc2FibGVkXCJcbiAgICAgICAgICB0eXBlPVwie3sgdHlwZSB9fVwiXG4gICAgICAgICAgbWF4PVwie3sgY29uZmlnLm1heCB9fVwiXG4gICAgICAgICAgbWluPVwie3sgY29uZmlnLm1pbiB9fVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LnR5cGUgPT09ICdwYXNzd29yZCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImljb25TeW1ib2wgPyAnc3ltYm9sJyA6ICdpY29uJ1wiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIiAoY2xpY2spPVwiY2hhbmdlU2hvd1Bhc3N3b3JkKClcIlxuICAgICAgICA+e3sgc2hvd1Bhc3N3b3JkID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJyB9fVxuICAgICAgPC9zLWljb24tbWF0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJjb25maWc/LnRoZW1lICE9PSBUSEVNRS5ERUZBVUxUICYmIGNvbmZpZy50aGVtZSAhPT0gdW5kZWZpbmVkXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJnZXRJY29uVHlwZSgpXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7IElDT05fVEhFTUVbY29uZmlnLnRoZW1lXSB9fTwvcy1pY29uLW1hdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImNvbmZpZy5zaG93SGVscCAmJiAoY29uZmlnLnRoZW1lID09PSBUSEVNRS5ERUZBVUxUIHx8IGNvbmZpZy50aGVtZSAhPT0gdW5kZWZpbmVkKVwiXG4gICAgICBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0hlbHAoKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cy12YWxpZGF0aW9uLWVycm9yXG4gICAgKm5nSWY9XCJcbiAgICAgICFjb25maWcuaGlkZUVycm9yVGV4dCAmJlxuICAgICAgY29udHJvbCAmJlxuICAgICAgY29udHJvbC5pbnZhbGlkICYmXG4gICAgICAoaXNGb2N1c2VkIHx8IGNvbnRyb2wudG91Y2hlZCkgJiZcbiAgICAgICEoKGNvbmZpZy50eXBlID09PSBJTlBVVF9UWVBFLlVSTCAmJiBjb25maWcuZXJyb3JUZXh0KSB8fCAoY29uZmlnLnR5cGUgPT09IElOUFVUX1RZUEUuRU1BSUwgJiYgY29uZmlnLmVycm9yVGV4dCkpXG4gICAgXCJcbiAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJjb25maWcuZXJyb3JNZXNzYWdlcyA/PyB1bmRlZmluZWRcIlxuICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIj5cbiAgPC9zLXZhbGlkYXRpb24tZXJyb3I+XG4gIDxzLWVycm9yLWNvbnRyb2wgKm5nSWY9XCIhY29uZmlnLmhpZGVFcnJvclRleHQgJiYgY29uZmlnLmVycm9yVGV4dFwiIHRoZW1lPVwicmVkXCI+XG4gICAge3sgY29uZmlnLmVycm9yVGV4dCB9fVxuICA8L3MtZXJyb3ItY29udHJvbD5cbiAgPHMtZXJyb3ItY29udHJvbCAqbmdJZj1cIiFjb25maWcuaGlkZUVycm9yVGV4dCAmJiBlcnJvclBhdHRlcm4gJiYgIWNvbmZpZy5lcnJvclRleHRcIiB0aGVtZT1cInJlZFwiPlxuICAgIHt7IGVycm9yUGF0dGVybiB9fVxuICA8L3MtZXJyb3ItY29udHJvbD5cbiAgPHMtZXJyb3ItY29udHJvbFxuICAgICpuZ0lmPVwiXG4gICAgICAhY29uZmlnLmhpZGVFcnJvclRleHQgJiZcbiAgICAgICFlcnJvclBhdHRlcm4gJiZcbiAgICAgICFjb25maWcuZXJyb3JUZXh0ICYmXG4gICAgICAoKGNvbnRyb2wgJiYgY29udHJvbC5lcnJvcnM/LlsncmVxdWlyZWQnXSAmJiAhY29udHJvbC50b3VjaGVkKSB8fCAoY29udHJvbCAmJiAhY29udHJvbC5lcnJvcnMpKSAmJlxuICAgICAgIShpc0ZvY3VzZWQgJiYgY29udHJvbC5pbnZhbGlkKVxuICAgIFwiPlxuICAgIHt7IGNvbmZpZy5oZWxwVGV4dCB8fCAnJyB9fVxuICA8L3MtZXJyb3ItY29udHJvbD5cbjwvZGl2PlxuIl19
@@ -95,6 +95,22 @@ export class SInputNumberComponent extends ControlValueAccessorDirective {
95
95
  this.isFocused = true;
96
96
  this.focus.next(event);
97
97
  }
98
+ canDecrease() {
99
+ if (this.config.disabled || this.config.readOnly)
100
+ return false;
101
+ if (this.config.min === undefined)
102
+ return true;
103
+ const currentValue = this.getValue();
104
+ return currentValue > this.config.min;
105
+ }
106
+ canIncrease() {
107
+ if (this.config.disabled || this.config.readOnly)
108
+ return false;
109
+ if (this.config.max === undefined)
110
+ return true;
111
+ const currentValue = this.getValue();
112
+ return currentValue < this.config.max;
113
+ }
98
114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
99
115
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SInputNumberComponent, selector: "s-input-number", inputs: { config: "config" }, outputs: { clickHelpIconEvent: "clickHelpIconEvent", blur: "blur", focus: "focus" }, providers: [
100
116
  {
@@ -102,7 +118,7 @@ export class SInputNumberComponent extends ControlValueAccessorDirective {
102
118
  useExisting: forwardRef(() => SInputNumberComponent),
103
119
  multi: true
104
120
  }
105
- ], usesInheritance: true, ngImport: i0, template: "<section class=\"s-input-number\">\n <label *ngIf=\"config.label\" class=\"s-input-number__label\" for=\"config.id\">\n {{ config.label }}\n <span class=\"s-input-number__required\" *ngIf=\"config.required\">*</span>\n </label>\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button\n [disabled]=\"config.disabled ?? false\"\n (click)=\"numberDecrease()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"s-input-number__button\">\n <s-icon-mat>remove</s-icon-mat>\n </s-button>\n </div>\n <div\n class=\"s-input-number__content {{ config.size }}\n theme-{{ config.theme }} {{ config.classAdd }} w-100\"\n [ngClass]=\"{\n 'disabled-active': config.disabled,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\">\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [formControl]=\"getControl()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div\n *ngIf=\"config.theme !== 'default' && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n (config?.theme === 'default' && config.showHelp) ||\n (config?.theme === undefined && config.showHelp)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button\n [disabled]=\"config.disabled ?? false\"\n (click)=\"numberIncrement()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"button-input-626\"\n ><s-icon-mat>add</s-icon-mat></s-button\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</section>\n", styles: [".s-input-number{margin-bottom:.5rem}.s-input-number__label{font-size:.875rem;color:var(--secondary-600)}.s-input-number__required{color:var(--primary-600)}.s-input-number__button{font-size:.93rem;font-weight:700}.s-input-number__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.18rem 0;background-color:var(--neutrals-1200)}.s-input-number__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input-number__content input:focus,.s-input-number__content input:focus-visible{outline:none}.s-input-number__content input:-webkit-autofill,.s-input-number__content input:-webkit-autofill:hover,.s-input-number__content input:-webkit-autofill:focus,.s-input-number__content input:-webkit-autofill:active{-webkit-box-shadow:0rem 0rem 0rem 1.875rem var(--neutrals-1200) inset!important}.s-input-number__content input::-webkit-outer-spin-button,.s-input-number__content input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.s-input-number__content input[type=number]{-moz-appearance:textfield}.s-input-number__content .icon{width:1.25rem;cursor:default}.s-input-number__content .icon span{display:flex}.s-input-number__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input-number__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input-number__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input-number__content.theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);outline:0}.s-input-number__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input-number__content.disabled-active.content-left{color:var(--neutrals-800)!important}.s-input-number__content.disabled-active.content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input-number__content.theme-red{border:.063rem solid var(--red-500)}.s-input-number__content.theme-red .icon.report span{color:var(--red-600)}.s-input-number__content.theme-green{border:.063rem solid var(--green-500)}.s-input-number__content.theme-green .icon.report span{color:var(--green-600)}.s-input-number__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input-number__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input-number__content .sm input{height:1.3rem;font-size:.75rem}.s-input-number__content .sm .icon{width:1.25rem;cursor:default}.s-input-number__content .sm .icon span{font-size:1.2em;display:flex}.s-input-number__content:not(.disabled-active):has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme", "active"] }, { kind: "component", type: i5.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i6.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }], encapsulation: i0.ViewEncapsulation.None }); }
121
+ ], usesInheritance: true, ngImport: i0, template: "<section class=\"s-input-number\">\n <label *ngIf=\"config.label\" class=\"s-input-number__label\" for=\"config.id\">\n {{ config.label }}\n <span class=\"s-input-number__required\" *ngIf=\"config.required\">*</span>\n </label>\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button\n [disabled]=\"!canDecrease()\"\n (click)=\"numberDecrease()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"s-input-number__button\">\n <s-icon-mat>remove</s-icon-mat>\n </s-button>\n </div>\n <div\n class=\"s-input-number__content {{ config.size }}\n theme-{{ config.theme }} {{ config.classAdd }} w-100\"\n [ngClass]=\"{\n 'disabled-active': config.disabled,\n 'readonly': config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\">\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [formControl]=\"getControl()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div\n *ngIf=\"config.theme !== 'default' && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n (config?.theme === 'default' && config.showHelp) ||\n (config?.theme === undefined && config.showHelp)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button\n [disabled]=\"!canIncrease()\"\n (click)=\"numberIncrement()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"button-input-626\"\n ><s-icon-mat>add</s-icon-mat></s-button\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</section>\n", styles: [".s-input-number{margin-bottom:.5rem}.s-input-number__label{font-size:.875rem;color:var(--secondary-600)}.s-input-number__required{color:var(--primary-600)}.s-input-number__button{font-size:.93rem;font-weight:700}.s-input-number__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.18rem 0;background-color:var(--neutrals-1200)}.s-input-number__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input-number__content input:focus,.s-input-number__content input:focus-visible{outline:none}.s-input-number__content input:-webkit-autofill,.s-input-number__content input:-webkit-autofill:hover,.s-input-number__content input:-webkit-autofill:focus,.s-input-number__content input:-webkit-autofill:active{-webkit-box-shadow:0rem 0rem 0rem 1.875rem var(--neutrals-1200) inset!important}.s-input-number__content input::-webkit-outer-spin-button,.s-input-number__content input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.s-input-number__content input[type=number]{-moz-appearance:textfield}.s-input-number__content .icon{width:1.25rem;cursor:default}.s-input-number__content .icon span{display:flex}.s-input-number__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input-number__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input-number__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input-number__content.theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);outline:0}.s-input-number__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input-number__content.disabled-active.content-left{color:var(--neutrals-800)!important}.s-input-number__content.disabled-active.content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input-number__content.readonly{background-color:var(--neutrals-1100)}.s-input-number__content.readonly input{background-color:var(--neutrals-1100);cursor:default;color:var(--secondary-600)}.s-input-number__content.theme-red{border:.063rem solid var(--red-500)}.s-input-number__content.theme-red .icon.report span{color:var(--red-600)}.s-input-number__content.theme-green{border:.063rem solid var(--green-500)}.s-input-number__content.theme-green .icon.report span{color:var(--green-600)}.s-input-number__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input-number__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input-number__content .sm input{height:1.3rem;font-size:.75rem}.s-input-number__content .sm .icon{width:1.25rem;cursor:default}.s-input-number__content .sm .icon span{font-size:1.2em;display:flex}.s-input-number__content:not(.disabled-active):has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme", "active"] }, { kind: "component", type: i5.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i6.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }], encapsulation: i0.ViewEncapsulation.None }); }
106
122
  }
107
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputNumberComponent, decorators: [{
108
124
  type: Component,
@@ -112,7 +128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
112
128
  useExisting: forwardRef(() => SInputNumberComponent),
113
129
  multi: true
114
130
  }
115
- ], template: "<section class=\"s-input-number\">\n <label *ngIf=\"config.label\" class=\"s-input-number__label\" for=\"config.id\">\n {{ config.label }}\n <span class=\"s-input-number__required\" *ngIf=\"config.required\">*</span>\n </label>\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button\n [disabled]=\"config.disabled ?? false\"\n (click)=\"numberDecrease()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"s-input-number__button\">\n <s-icon-mat>remove</s-icon-mat>\n </s-button>\n </div>\n <div\n class=\"s-input-number__content {{ config.size }}\n theme-{{ config.theme }} {{ config.classAdd }} w-100\"\n [ngClass]=\"{\n 'disabled-active': config.disabled,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\">\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [formControl]=\"getControl()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div\n *ngIf=\"config.theme !== 'default' && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n (config?.theme === 'default' && config.showHelp) ||\n (config?.theme === undefined && config.showHelp)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button\n [disabled]=\"config.disabled ?? false\"\n (click)=\"numberIncrement()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"button-input-626\"\n ><s-icon-mat>add</s-icon-mat></s-button\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</section>\n", styles: [".s-input-number{margin-bottom:.5rem}.s-input-number__label{font-size:.875rem;color:var(--secondary-600)}.s-input-number__required{color:var(--primary-600)}.s-input-number__button{font-size:.93rem;font-weight:700}.s-input-number__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.18rem 0;background-color:var(--neutrals-1200)}.s-input-number__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input-number__content input:focus,.s-input-number__content input:focus-visible{outline:none}.s-input-number__content input:-webkit-autofill,.s-input-number__content input:-webkit-autofill:hover,.s-input-number__content input:-webkit-autofill:focus,.s-input-number__content input:-webkit-autofill:active{-webkit-box-shadow:0rem 0rem 0rem 1.875rem var(--neutrals-1200) inset!important}.s-input-number__content input::-webkit-outer-spin-button,.s-input-number__content input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.s-input-number__content input[type=number]{-moz-appearance:textfield}.s-input-number__content .icon{width:1.25rem;cursor:default}.s-input-number__content .icon span{display:flex}.s-input-number__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input-number__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input-number__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input-number__content.theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);outline:0}.s-input-number__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input-number__content.disabled-active.content-left{color:var(--neutrals-800)!important}.s-input-number__content.disabled-active.content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input-number__content.theme-red{border:.063rem solid var(--red-500)}.s-input-number__content.theme-red .icon.report span{color:var(--red-600)}.s-input-number__content.theme-green{border:.063rem solid var(--green-500)}.s-input-number__content.theme-green .icon.report span{color:var(--green-600)}.s-input-number__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input-number__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input-number__content .sm input{height:1.3rem;font-size:.75rem}.s-input-number__content .sm .icon{width:1.25rem;cursor:default}.s-input-number__content .sm .icon span{font-size:1.2em;display:flex}.s-input-number__content:not(.disabled-active):has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"] }]
131
+ ], template: "<section class=\"s-input-number\">\n <label *ngIf=\"config.label\" class=\"s-input-number__label\" for=\"config.id\">\n {{ config.label }}\n <span class=\"s-input-number__required\" *ngIf=\"config.required\">*</span>\n </label>\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button\n [disabled]=\"!canDecrease()\"\n (click)=\"numberDecrease()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"s-input-number__button\">\n <s-icon-mat>remove</s-icon-mat>\n </s-button>\n </div>\n <div\n class=\"s-input-number__content {{ config.size }}\n theme-{{ config.theme }} {{ config.classAdd }} w-100\"\n [ngClass]=\"{\n 'disabled-active': config.disabled,\n 'readonly': config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\">\n <div class=\"content-center\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [formControl]=\"getControl()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-container>\n <ng-template #notUseFormControl>\n <input\n autocomplete=\"off\"\n placeholder=\"{{ config.placeholder }}\"\n [readOnly]=\"config.readOnly || config.disabled\"\n [id]=\"config.id ? config.id : ''\"\n [type]=\"'number'\"\n max=\"{{ config.max }}\"\n min=\"{{ config.min }}\"\n [step]=\"config.step\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\" />\n </ng-template>\n </div>\n <div\n *ngIf=\"config.theme !== 'default' && config.theme !== undefined\"\n class=\"content-right\">\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{\n ICON_THEME[config.theme]\n }}</s-icon-mat>\n </div>\n <div\n *ngIf=\"\n (config?.theme === 'default' && config.showHelp) ||\n (config?.theme === undefined && config.showHelp)\n \"\n class=\"content-right\">\n <s-icon-mat (click)=\"clickHelp()\" class=\"icon cursor\"\n >help_outline</s-icon-mat\n >\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button\n [disabled]=\"!canIncrease()\"\n (click)=\"numberIncrement()\"\n [size]=\"config.size ?? 'md'\"\n [pill]=\"true\"\n [invert]=\"true\"\n class=\"button-input-626\"\n ><s-icon-mat>add</s-icon-mat></s-button\n >\n </div>\n </div>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}\n </s-error-control>\n</section>\n", styles: [".s-input-number{margin-bottom:.5rem}.s-input-number__label{font-size:.875rem;color:var(--secondary-600)}.s-input-number__required{color:var(--primary-600)}.s-input-number__button{font-size:.93rem;font-weight:700}.s-input-number__content{display:flex;border:.063rem solid var(--primary-500);border-radius:.25rem;padding:0 .5rem;margin:.18rem 0;background-color:var(--neutrals-1200)}.s-input-number__content input{width:100%;border:0rem;color:var(--secondary-600);writing-mode:unset;height:2.25rem;font-size:inherit;background-color:var(--neutrals-1200)}.s-input-number__content input:focus,.s-input-number__content input:focus-visible{outline:none}.s-input-number__content input:-webkit-autofill,.s-input-number__content input:-webkit-autofill:hover,.s-input-number__content input:-webkit-autofill:focus,.s-input-number__content input:-webkit-autofill:active{-webkit-box-shadow:0rem 0rem 0rem 1.875rem var(--neutrals-1200) inset!important}.s-input-number__content input::-webkit-outer-spin-button,.s-input-number__content input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.s-input-number__content input[type=number]{-moz-appearance:textfield}.s-input-number__content .icon{width:1.25rem;cursor:default}.s-input-number__content .icon span{display:flex}.s-input-number__content .content-center{width:100%;background-color:var(--neutrals-1200)}.s-input-number__content .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:.5rem;color:var(--primary-600)}.s-input-number__content .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:.5rem;color:var(--secondary-600)}.s-input-number__content.theme-green:has(input:focus){border:.063rem solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-yellow:has(input:focus){border:.063rem solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.theme-red:has(input:focus){border:.063rem solid var(--red-500);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}.s-input-number__content.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800);outline:0}.s-input-number__content.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.s-input-number__content.disabled-active.content-left{color:var(--neutrals-800)!important}.s-input-number__content.disabled-active.content-right s-icon-mat span{color:var(--neutrals-800)!important}.s-input-number__content.readonly{background-color:var(--neutrals-1100)}.s-input-number__content.readonly input{background-color:var(--neutrals-1100);cursor:default;color:var(--secondary-600)}.s-input-number__content.theme-red{border:.063rem solid var(--red-500)}.s-input-number__content.theme-red .icon.report span{color:var(--red-600)}.s-input-number__content.theme-green{border:.063rem solid var(--green-500)}.s-input-number__content.theme-green .icon.report span{color:var(--green-600)}.s-input-number__content.theme-yellow{border:.063rem solid var(--yellow-500)}.s-input-number__content.theme-yellow .icon.report span{color:var(--yellow-600)}.s-input-number__content .sm input{height:1.3rem;font-size:.75rem}.s-input-number__content .sm .icon{width:1.25rem;cursor:default}.s-input-number__content .sm .icon span{font-size:1.2em;display:flex}.s-input-number__content:not(.disabled-active):has(input:focus){border:.063rem solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .063rem .125rem 0 var(--blue-alpha-100)}\n"] }]
116
132
  }], propDecorators: { config: [{
117
133
  type: Input
118
134
  }], clickHelpIconEvent: [{
@@ -122,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
122
138
  }], focus: [{
123
139
  type: Output
124
140
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7O0FBR2xHLE1BQU0sT0FBTyxZQUFZO0lBb0J2QixZQUFZLE1BQThCO1FBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWVELE1BQU0sT0FBTyxxQkFBeUIsU0FBUSw2QkFBZ0M7SUFiOUU7O1FBZVcsV0FBTSxHQUFpQixJQUFJLFlBQVksQ0FBQztRQUN2Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzlDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzNDLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxjQUFTLEdBQVksS0FBSyxDQUFDO0tBeUU1QjtJQXZFQyxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUQsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUztnQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLFlBQVksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBSSxDQUFDLENBQUM7Z0JBQy9FLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELFFBQVEsQ0FBQyxRQUFnQjtRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7K0dBbEZVLHFCQUFxQjttR0FBckIscUJBQXFCLDRKQVJyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpRENqREgsODJIQWtIQTs7NEZEL0RhLHFCQUFxQjtrQkFiakMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBSVEsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3RoZW1lLmVudW0nO1xuaW1wb3J0IHsgSUNPTl9USEVNRSB9IGZyb20gJy4uLy4uL2VudW1zL2ljb24tdGhlbWUuZW51bSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSU5QVVRfU0laRSB9IGZyb20gJy4uLy4uL2VudW1zL3NpemUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBTSW5wdXROdW1iZXIge1xuICBjbGFzc0FkZD86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBlcnJvck1lc3NhZ2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgZXJyb3JUZXh0Pzogc3RyaW5nO1xuICBoZWxwVGV4dD86IHN0cmluZztcbiAgaGlkZUVycm9yVGV4dD86IGJvb2xlYW47XG4gIGlkPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgbWF4PzogbnVtYmVyO1xuICBtaW4/OiBudW1iZXI7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc2hvd0hlbHA/OiBib29sZWFuO1xuICBzaXplPzogSU5QVVRfU0laRTtcbiAgc3RlcD86IG51bWJlcjtcbiAgdGhlbWU/OiBUSEVNRTtcbiAgdXNlRm9ybUNvbnRyb2w/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFBhcnRpYWw8U0lucHV0TnVtYmVyPikge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29uZmlnKTtcbiAgICBpZiAoIXRoaXMuaWQpIHtcbiAgICAgIHRoaXMuaWQgPSAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCkpLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy50aGVtZSkge1xuICAgICAgdGhpcy50aGVtZSA9IFRIRU1FLkRFRkFVTFQ7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtaW5wdXQtbnVtYmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3MtaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXROdW1iZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU0lucHV0TnVtYmVyQ29tcG9uZW50PFQ+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VD4ge1xuXG4gIEBJbnB1dCgpIGNvbmZpZzogU0lucHV0TnVtYmVyID0gbmV3IFNJbnB1dE51bWJlcjtcbiAgQE91dHB1dCgpIGNsaWNrSGVscEljb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgaW5wdXROdW1iZXI6IG51bWJlciA9IDA7XG4gIGluY29uU3ltYm9sOiBib29sZWFuID0gZmFsc2U7XG4gIElDT05fVEhFTUUgPSBJQ09OX1RIRU1FO1xuICBudW1iZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKDApO1xuICBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBnZXRDb250cm9sKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5udW1iZXJDb250cm9sO1xuICAgIH1cbiAgICB0aGlzLm51bWJlckNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyQ29udHJvbDtcbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYoIXRoaXMuY29uZmlnLnVzZUZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuICB9XG5cbiAgY2xpY2tIZWxwKCkge1xuICAgIHRoaXMuY2xpY2tIZWxwSWNvbkV2ZW50Lm5leHQoKTtcbiAgfVxuXG4gIGdldEljb25UeXBlKCk6ICdzeW1ib2wnIHwgJ2ljb24nIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGhlbWUgPT09ICd5ZWxsb3cnID8gJ3N5bWJvbCcgOiAnaWNvbic7XG4gIH1cblxuICBudW1iZXJEZWNyZWFzZSgpIHtcbiAgICB0aGlzLmFkanVzdE51bWJlcigtMSk7XG4gIH1cbiAgXG4gIG51bWJlckluY3JlbWVudCgpIHtcbiAgICB0aGlzLmFkanVzdE51bWJlcigxKTtcbiAgfVxuXG4gIGFkanVzdE51bWJlcihzdGVwOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRpc2FibGVkICYmICF0aGlzLmNvbmZpZy5yZWFkT25seSkge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLnN0ZXAgPT09IHVuZGVmaW5lZCkgdGhpcy5jb25maWcuc3RlcCA9IDE7XG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGN1cnJlbnRWYWx1ZSArIHN0ZXAgKiB0aGlzLmNvbmZpZy5zdGVwO1xuICAgICAgaWYgKChzdGVwIDwgMCAmJiAodGhpcy5jb25maWcubWluID09PSB1bmRlZmluZWQgfHwgbmV3VmFsdWUgPj0gdGhpcy5jb25maWcubWluISkpIHx8XG4gICAgICAgIChzdGVwID4gMCAmJiAodGhpcy5jb25maWcubWF4ID09PSB1bmRlZmluZWQgfHwgbmV3VmFsdWUgPD0gdGhpcy5jb25maWcubWF4ISkpKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnVzZUZvcm1Db250cm9sID09PSBmYWxzZSA/IE51bWJlcih0aGlzLnZhbHVlKSA6IE51bWJlcih0aGlzLm51bWJlckNvbnRyb2wudmFsdWUpID8/IDA7XG4gIH1cblxuICBzZXRWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnVzZUZvcm1Db250cm9sID09PSBmYWxzZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm51bWJlckNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInMtaW5wdXQtbnVtYmVyXCI+XG4gIDxsYWJlbCAqbmdJZj1cImNvbmZpZy5sYWJlbFwiIGNsYXNzPVwicy1pbnB1dC1udW1iZXJfX2xhYmVsXCIgZm9yPVwiY29uZmlnLmlkXCI+XG4gICAge3sgY29uZmlnLmxhYmVsIH19XG4gICAgPHNwYW4gY2xhc3M9XCJzLWlucHV0LW51bWJlcl9fcmVxdWlyZWRcIiAqbmdJZj1cImNvbmZpZy5yZXF1aXJlZFwiPio8L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdCBtci0xXCI+XG4gICAgICA8cy1idXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZVwiXG4gICAgICAgIChjbGljayk9XCJudW1iZXJEZWNyZWFzZSgpXCJcbiAgICAgICAgW3NpemVdPVwiY29uZmlnLnNpemUgPz8gJ21kJ1wiXG4gICAgICAgIFtwaWxsXT1cInRydWVcIlxuICAgICAgICBbaW52ZXJ0XT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cInMtaW5wdXQtbnVtYmVyX19idXR0b25cIj5cbiAgICAgICAgPHMtaWNvbi1tYXQ+cmVtb3ZlPC9zLWljb24tbWF0PlxuICAgICAgPC9zLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInMtaW5wdXQtbnVtYmVyX19jb250ZW50IHt7IGNvbmZpZy5zaXplIH19XG4gICAgICAgIHRoZW1lLXt7IGNvbmZpZy50aGVtZSB9fSB7eyBjb25maWcuY2xhc3NBZGQgfX0gdy0xMDBcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGlzYWJsZWQtYWN0aXZlJzogY29uZmlnLmRpc2FibGVkLFxuICAgICAgICAndGhlbWUtcmVkJzpcbiAgICAgICAgICAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgKGlzRm9jdXNlZCB8fCBjb250cm9sLnRvdWNoZWQpKSB8fFxuICAgICAgICAgIChjb250cm9sICYmIGNvbnRyb2wuZXJyb3JzICYmIGNvbnRyb2wudG91Y2hlZCkgfHxcbiAgICAgICAgICBjb25maWcudGhlbWUgPT09ICdyZWQnLFxuICAgICAgfVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sOyBlbHNlIG5vdFVzZUZvcm1Db250cm9sXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBjb25maWcucGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cImNvbmZpZy5yZWFkT25seSB8fCBjb25maWcuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2lkXT1cImNvbmZpZy5pZCA/IGNvbmZpZy5pZCA6ICcnXCJcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIG1heD1cInt7IGNvbmZpZy5tYXggfX1cIlxuICAgICAgICAgICAgbWluPVwie3sgY29uZmlnLm1pbiB9fVwiXG4gICAgICAgICAgICBbc3RlcF09XCJjb25maWcuc3RlcFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZ2V0Q29udHJvbCgpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RVc2VGb3JtQ29udHJvbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbmZpZy5wbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwiY29uZmlnLnJlYWRPbmx5IHx8IGNvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWRdPVwiY29uZmlnLmlkID8gY29uZmlnLmlkIDogJydcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbWF4PVwie3sgY29uZmlnLm1heCB9fVwiXG4gICAgICAgICAgICBtaW49XCJ7eyBjb25maWcubWluIH19XCJcbiAgICAgICAgICAgIFtzdGVwXT1cImNvbmZpZy5zdGVwXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIiAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiY29uZmlnLnRoZW1lICE9PSAnZGVmYXVsdCcgJiYgY29uZmlnLnRoZW1lICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiZ2V0SWNvblR5cGUoKVwiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e1xuICAgICAgICAgIElDT05fVEhFTUVbY29uZmlnLnRoZW1lXVxuICAgICAgICB9fTwvcy1pY29uLW1hdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIChjb25maWc/LnRoZW1lID09PSAnZGVmYXVsdCcgJiYgY29uZmlnLnNob3dIZWxwKSB8fFxuICAgICAgICAgIChjb25maWc/LnRoZW1lID09PSB1bmRlZmluZWQgJiYgY29uZmlnLnNob3dIZWxwKVxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSGVscCgpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiXG4gICAgICAgICAgPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdFxuICAgICAgICA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0IG1sLTFcIj5cbiAgICAgIDxzLWJ1dHRvblxuICAgICAgICBbZGlzYWJsZWRdPVwiY29uZmlnLmRpc2FibGVkID8/IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cIm51bWJlckluY3JlbWVudCgpXCJcbiAgICAgICAgW3NpemVdPVwiY29uZmlnLnNpemUgPz8gJ21kJ1wiXG4gICAgICAgIFtwaWxsXT1cInRydWVcIlxuICAgICAgICBbaW52ZXJ0XT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImJ1dHRvbi1pbnB1dC02MjZcIlxuICAgICAgICA+PHMtaWNvbi1tYXQ+YWRkPC9zLWljb24tbWF0Pjwvcy1idXR0b25cbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxzLXZhbGlkYXRpb24tZXJyb3JcbiAgICAqbmdJZj1cIlxuICAgICAgIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmXG4gICAgICBjb250cm9sICYmXG4gICAgICBjb250cm9sLmludmFsaWQgJiZcbiAgICAgIChpc0ZvY3VzZWQgfHwgY29udHJvbC50b3VjaGVkKVxuICAgIFwiXG4gICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwiY29uZmlnLmVycm9yTWVzc2FnZXNcIlxuICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIj5cbiAgPC9zLXZhbGlkYXRpb24tZXJyb3I+XG4gIDxzLWVycm9yLWNvbnRyb2xcbiAgICAqbmdJZj1cIiFjb25maWcuaGlkZUVycm9yVGV4dCAmJiBjb25maWcuZXJyb3JUZXh0XCJcbiAgICB0aGVtZT1cInJlZFwiXG4gICAgPnt7IGNvbmZpZy5lcnJvclRleHQgfX08L3MtZXJyb3ItY29udHJvbFxuICA+XG4gIDxzLWVycm9yLWNvbnRyb2xcbiAgICAqbmdJZj1cIlxuICAgICAgIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmXG4gICAgICAhY29uZmlnLmVycm9yVGV4dCAmJlxuICAgICAgKChjb250cm9sICYmIGNvbnRyb2wuZXJyb3JzPy5bJ3JlcXVpcmVkJ10gJiYgIWNvbnRyb2wudG91Y2hlZCkgfHxcbiAgICAgICAgKGNvbnRyb2wgJiYgIWNvbnRyb2wuZXJyb3JzKSkgJiZcbiAgICAgICEoaXNGb2N1c2VkICYmIGNvbnRyb2wuaW52YWxpZClcbiAgICBcIj5cbiAgICB7eyBjb25maWcuaGVscFRleHQgfHwgJycgfX1cbiAgPC9zLWVycm9yLWNvbnRyb2w+XG48L3NlY3Rpb24+XG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7Ozs7Ozs7O0FBR2xHLE1BQU0sT0FBTyxZQUFZO0lBb0J2QixZQUFZLE1BQThCO1FBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxL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dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVEhFTUUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy90aGVtZS5lbnVtJztcbmltcG9ydCB7IElDT05fVEhFTUUgfSBmcm9tICcuLi8uLi9lbnVtcy9pY29uLXRoZW1lLmVudW0nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IElOUFVUX1NJWkUgfSBmcm9tICcuLi8uLi9lbnVtcy9zaXplLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgU0lucHV0TnVtYmVyIHtcbiAgY2xhc3NBZGQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGVycm9yVGV4dD86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGhpZGVFcnJvclRleHQ/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1heD86IG51bWJlcjtcbiAgbWluPzogbnVtYmVyO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHNob3dIZWxwPzogYm9vbGVhbjtcbiAgc2l6ZT86IElOUFVUX1NJWkU7XG4gIHN0ZXA/OiBudW1iZXI7XG4gIHRoZW1lPzogVEhFTUU7XG4gIHVzZUZvcm1Db250cm9sPzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBQYXJ0aWFsPFNJbnB1dE51bWJlcj4pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNvbmZpZyk7XG4gICAgaWYgKCF0aGlzLmlkKSB7XG4gICAgICB0aGlzLmlkID0gKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDApKS50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudGhlbWUpIHtcbiAgICAgIHRoaXMudGhlbWUgPSBUSEVNRS5ERUZBVUxUO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLWlucHV0LW51bWJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU0lucHV0TnVtYmVyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNJbnB1dE51bWJlckNvbXBvbmVudDxUPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFQ+IHtcblxuICBASW5wdXQoKSBjb25maWc6IFNJbnB1dE51bWJlciA9IG5ldyBTSW5wdXROdW1iZXI7XG4gIEBPdXRwdXQoKSBjbGlja0hlbHBJY29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGlucHV0TnVtYmVyOiBudW1iZXIgPSAwO1xuICBpbmNvblN5bWJvbDogYm9vbGVhbiA9IGZhbHNlO1xuICBJQ09OX1RIRU1FID0gSUNPTl9USEVNRTtcbiAgbnVtYmVyQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcbiAgaXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0Q29udHJvbCgpIHtcbiAgICBpZiAodGhpcy5jb250cm9sID09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubnVtYmVyQ29udHJvbDtcbiAgICB9XG4gICAgdGhpcy5udW1iZXJDb250cm9sID0gdGhpcy5jb250cm9sO1xuICAgIHJldHVybiB0aGlzLm51bWJlckNvbnRyb2w7XG4gIH1cblxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy52YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIGlmKCF0aGlzLmNvbmZpZy51c2VGb3JtQ29udHJvbCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIGNsaWNrSGVscCgpIHtcbiAgICB0aGlzLmNsaWNrSGVscEljb25FdmVudC5uZXh0KCk7XG4gIH1cblxuICBnZXRJY29uVHlwZSgpOiAnc3ltYm9sJyB8ICdpY29uJyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRoZW1lID09PSAneWVsbG93JyA/ICdzeW1ib2wnIDogJ2ljb24nO1xuICB9XG5cbiAgbnVtYmVyRGVjcmVhc2UoKSB7XG4gICAgdGhpcy5hZGp1c3ROdW1iZXIoLTEpO1xuICB9XG4gIFxuICBudW1iZXJJbmNyZW1lbnQoKSB7XG4gICAgdGhpcy5hZGp1c3ROdW1iZXIoMSk7XG4gIH1cblxuICBhZGp1c3ROdW1iZXIoc3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5kaXNhYmxlZCAmJiAhdGhpcy5jb25maWcucmVhZE9ubHkpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5zdGVwID09PSB1bmRlZmluZWQpIHRoaXMuY29uZmlnLnN0ZXAgPSAxO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBjdXJyZW50VmFsdWUgKyBzdGVwICogdGhpcy5jb25maWcuc3RlcDtcbiAgICAgIGlmICgoc3RlcCA8IDAgJiYgKHRoaXMuY29uZmlnLm1pbiA9PT0gdW5kZWZpbmVkIHx8IG5ld1ZhbHVlID49IHRoaXMuY29uZmlnLm1pbiEpKSB8fFxuICAgICAgICAoc3RlcCA+IDAgJiYgKHRoaXMuY29uZmlnLm1heCA9PT0gdW5kZWZpbmVkIHx8IG5ld1ZhbHVlIDw9IHRoaXMuY29uZmlnLm1heCEpKSkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy51c2VGb3JtQ29udHJvbCA9PT0gZmFsc2UgPyBOdW1iZXIodGhpcy52YWx1ZSkgOiBOdW1iZXIodGhpcy5udW1iZXJDb250cm9sLnZhbHVlKSA/PyAwO1xuICB9XG5cbiAgc2V0VmFsdWUobmV3VmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNvbmZpZy51c2VGb3JtQ29udHJvbCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZS50b1N0cmluZygpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5udW1iZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIG9uQmx1cihldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmJsdXIubmV4dChldmVudCk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgdGhpcy5mb2N1cy5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIGNhbkRlY3JlYXNlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCB0aGlzLmNvbmZpZy5yZWFkT25seSkgcmV0dXJuIGZhbHNlO1xuICBcbiAgICBpZiAodGhpcy5jb25maWcubWluID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICBcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSA+IHRoaXMuY29uZmlnLm1pbjtcbiAgfVxuXG4gIGNhbkluY3JlYXNlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlZCB8fCB0aGlzLmNvbmZpZy5yZWFkT25seSkgcmV0dXJuIGZhbHNlO1xuICBcbiAgICBpZiAodGhpcy5jb25maWcubWF4ID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xuICBcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSA8IHRoaXMuY29uZmlnLm1heDtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJzLWlucHV0LW51bWJlclwiPlxuICA8bGFiZWwgKm5nSWY9XCJjb25maWcubGFiZWxcIiBjbGFzcz1cInMtaW5wdXQtbnVtYmVyX19sYWJlbFwiIGZvcj1cImNvbmZpZy5pZFwiPlxuICAgIHt7IGNvbmZpZy5sYWJlbCB9fVxuICAgIDxzcGFuIGNsYXNzPVwicy1pbnB1dC1udW1iZXJfX3JlcXVpcmVkXCIgKm5nSWY9XCJjb25maWcucmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnQgbXItMVwiPlxuICAgICAgPHMtYnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVjcmVhc2UoKVwiXG4gICAgICAgIChjbGljayk9XCJudW1iZXJEZWNyZWFzZSgpXCJcbiAgICAgICAgW3NpemVdPVwiY29uZmlnLnNpemUgPz8gJ21kJ1wiXG4gICAgICAgIFtwaWxsXT1cInRydWVcIlxuICAgICAgICBbaW52ZXJ0XT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cInMtaW5wdXQtbnVtYmVyX19idXR0b25cIj5cbiAgICAgICAgPHMtaWNvbi1tYXQ+cmVtb3ZlPC9zLWljb24tbWF0PlxuICAgICAgPC9zLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInMtaW5wdXQtbnVtYmVyX19jb250ZW50IHt7IGNvbmZpZy5zaXplIH19XG4gICAgICAgIHRoZW1lLXt7IGNvbmZpZy50aGVtZSB9fSB7eyBjb25maWcuY2xhc3NBZGQgfX0gdy0xMDBcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZGlzYWJsZWQtYWN0aXZlJzogY29uZmlnLmRpc2FibGVkLFxuICAgICAgICAncmVhZG9ubHknOiBjb25maWcucmVhZE9ubHksXG4gICAgICAgICd0aGVtZS1yZWQnOlxuICAgICAgICAgIChjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoaXNGb2N1c2VkIHx8IGNvbnRyb2wudG91Y2hlZCkpIHx8XG4gICAgICAgICAgKGNvbnRyb2wgJiYgY29udHJvbC5lcnJvcnMgJiYgY29udHJvbC50b3VjaGVkKSB8fFxuICAgICAgICAgIGNvbmZpZy50aGVtZSA9PT0gJ3JlZCcsXG4gICAgICB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2w7IGVsc2Ugbm90VXNlRm9ybUNvbnRyb2xcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGNvbmZpZy5wbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwiY29uZmlnLnJlYWRPbmx5IHx8IGNvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWRdPVwiY29uZmlnLmlkID8gY29uZmlnLmlkIDogJydcIlxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbWF4PVwie3sgY29uZmlnLm1heCB9fVwiXG4gICAgICAgICAgICBtaW49XCJ7eyBjb25maWcubWluIH19XCJcbiAgICAgICAgICAgIFtzdGVwXT1cImNvbmZpZy5zdGVwXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJnZXRDb250cm9sKClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vdFVzZUZvcm1Db250cm9sPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgY29uZmlnLnBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJjb25maWcucmVhZE9ubHkgfHwgY29uZmlnLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJjb25maWcuaWQgPyBjb25maWcuaWQgOiAnJ1wiXG4gICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICBtYXg9XCJ7eyBjb25maWcubWF4IH19XCJcbiAgICAgICAgICAgIG1pbj1cInt7IGNvbmZpZy5taW4gfX1cIlxuICAgICAgICAgICAgW3N0ZXBdPVwiY29uZmlnLnN0ZXBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiIC8+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb25maWcudGhlbWUgIT09ICdkZWZhdWx0JyAmJiBjb25maWcudGhlbWUgIT09IHVuZGVmaW5lZFwiXG4gICAgICAgIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJnZXRJY29uVHlwZSgpXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7XG4gICAgICAgICAgSUNPTl9USEVNRVtjb25maWcudGhlbWVdXG4gICAgICAgIH19PC9zLWljb24tbWF0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgKGNvbmZpZz8udGhlbWUgPT09ICdkZWZhdWx0JyAmJiBjb25maWcuc2hvd0hlbHApIHx8XG4gICAgICAgICAgKGNvbmZpZz8udGhlbWUgPT09IHVuZGVmaW5lZCAmJiBjb25maWcuc2hvd0hlbHApXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tIZWxwKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCJcbiAgICAgICAgICA+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0XG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnQgbWwtMVwiPlxuICAgICAgPHMtYnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW5jcmVhc2UoKVwiXG4gICAgICAgIChjbGljayk9XCJudW1iZXJJbmNyZW1lbnQoKVwiXG4gICAgICAgIFtzaXplXT1cImNvbmZpZy5zaXplID8/ICdtZCdcIlxuICAgICAgICBbcGlsbF09XCJ0cnVlXCJcbiAgICAgICAgW2ludmVydF09XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCJcbiAgICAgICAgPjxzLWljb24tbWF0PmFkZDwvcy1pY29uLW1hdD48L3MtYnV0dG9uXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cy12YWxpZGF0aW9uLWVycm9yXG4gICAgKm5nSWY9XCJcbiAgICAgICFjb25maWcuaGlkZUVycm9yVGV4dCAmJlxuICAgICAgY29udHJvbCAmJlxuICAgICAgY29udHJvbC5pbnZhbGlkICYmXG4gICAgICAoaXNGb2N1c2VkIHx8IGNvbnRyb2wudG91Y2hlZClcbiAgICBcIlxuICAgIFtjdXN0b21FcnJvck1lc3NhZ2VzXT1cImNvbmZpZy5lcnJvck1lc3NhZ2VzXCJcbiAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+XG4gIDwvcy12YWxpZGF0aW9uLWVycm9yPlxuICA8cy1lcnJvci1jb250cm9sXG4gICAgKm5nSWY9XCIhY29uZmlnLmhpZGVFcnJvclRleHQgJiYgY29uZmlnLmVycm9yVGV4dFwiXG4gICAgdGhlbWU9XCJyZWRcIlxuICAgID57eyBjb25maWcuZXJyb3JUZXh0IH19PC9zLWVycm9yLWNvbnRyb2xcbiAgPlxuICA8cy1lcnJvci1jb250cm9sXG4gICAgKm5nSWY9XCJcbiAgICAgICFjb25maWcuaGlkZUVycm9yVGV4dCAmJlxuICAgICAgIWNvbmZpZy5lcnJvclRleHQgJiZcbiAgICAgICgoY29udHJvbCAmJiBjb250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddICYmICFjb250cm9sLnRvdWNoZWQpIHx8XG4gICAgICAgIChjb250cm9sICYmICFjb250cm9sLmVycm9ycykpICYmXG4gICAgICAhKGlzRm9jdXNlZCAmJiBjb250cm9sLmludmFsaWQpXG4gICAgXCI+XG4gICAge3sgY29uZmlnLmhlbHBUZXh0IHx8ICcnIH19XG4gIDwvcy1lcnJvci1jb250cm9sPlxuPC9zZWN0aW9uPlxuIl19
@@ -47,7 +47,7 @@ export class SInputTextAreaComponent extends ControlValueAccessorDirective {
47
47
  useExisting: forwardRef(() => SInputTextAreaComponent),
48
48
  multi: true
49
49
  }
50
- ], usesInheritance: true, ngImport: i0, template: "<section class=\"s-textarea\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-textarea__label\">\n {{ config.label }}\n <span class=\"s-textarea__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-textarea__content {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || control?.status === 'DISABLED',\n }\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n class=\"theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n resize: !config.resize,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [formControl]=\"control\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-container>\n <ng-template #notUseFormControl>\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n [ngClass]=\"[\n config.resize ? '' : 'resize',\n config.theme ? 'theme-' + config.theme : '',\n ]\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [disabled]=\"config.disabled ?? false\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-template>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}</s-error-control\n >\n </div>\n</section>\n", styles: [".s-textarea{margin-bottom:.5rem}.s-textarea__label{font-size:.875rem;color:var(--secondary-600)}.s-textarea__required{color:var(--primary-600)}.s-textarea__content textarea{width:calc(100% - 1.875rem);padding:.625rem .875rem;border:.063rem solid var(--primary-500);border-radius:.25rem;color:var(--secondary-600);writing-mode:unset;height:2.125rem;font-size:1rem;max-width:100%}.s-textarea__content:not(.disabled-active) textarea:focus-visible{outline:none;border:none;border:1px solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content.disabled-active textarea{border-color:var(--neutrals-900);background-color:var(--neutrals-1100);color:var(--neutrals-800);resize:none}.s-textarea__content.disabled-active textarea:focus-visible{outline:none}.s-textarea__content textarea.theme-red{border:.063rem solid var(--red-600)}.s-textarea__content textarea.theme-red:focus-visible{border:1px solid var(--red-600);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-green{border:.063rem solid var(--green-600)}.s-textarea__content textarea.theme-green:focus-visible{border:1px solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-yellow{border:.063rem solid var(--yellow-500)}.s-textarea__content textarea.theme-yellow:focus-visible{border:1px solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content .resize{resize:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i4.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }] }); }
50
+ ], usesInheritance: true, ngImport: i0, template: "<section class=\"s-textarea\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-textarea__label\">\n {{ config.label }}\n <span class=\"s-textarea__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-textarea__content {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || control?.status === 'DISABLED',\n }\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n class=\"theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n resize: !config.resize,\n 'readonly':\n config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [formControl]=\"control\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-container>\n <ng-template #notUseFormControl>\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n [ngClass]=\"[\n config.resize ? '' : 'resize',\n config.theme ? 'theme-' + config.theme : '',\n ]\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [disabled]=\"config.disabled ?? false\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-template>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}</s-error-control\n >\n </div>\n</section>\n", styles: [".s-textarea{margin-bottom:.5rem}.s-textarea__label{font-size:.875rem;color:var(--secondary-600)}.s-textarea__required{color:var(--primary-600)}.s-textarea__content textarea{width:calc(100% - 1.875rem);padding:.625rem .875rem;border:.063rem solid var(--primary-500);border-radius:.25rem;color:var(--secondary-600);writing-mode:unset;height:2.125rem;font-size:1rem;max-width:100%}.s-textarea__content:not(.disabled-active) textarea:focus-visible{outline:none;border:none;border:1px solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content.disabled-active textarea{border-color:var(--neutrals-900);background-color:var(--neutrals-1100);color:var(--neutrals-800);resize:none}.s-textarea__content.disabled-active textarea:focus-visible{outline:none}.s-textarea__content textarea.readonly{background-color:var(--neutrals-1100)!important}.s-textarea__content textarea.readonly input{background-color:var(--neutrals-1100)!important;cursor:default}.s-textarea__content textarea.theme-red{border:.063rem solid var(--red-600)}.s-textarea__content textarea.theme-red:focus-visible{border:1px solid var(--red-600);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-green{border:.063rem solid var(--green-600)}.s-textarea__content textarea.theme-green:focus-visible{border:1px solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-yellow{border:.063rem solid var(--yellow-500)}.s-textarea__content textarea.theme-yellow:focus-visible{border:1px solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content .resize{resize:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }, { kind: "component", type: i4.SValidationError, selector: "s-validation-error", inputs: ["errors", "customErrorMessages"] }] }); }
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputTextAreaComponent, decorators: [{
53
53
  type: Component,
@@ -57,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
57
57
  useExisting: forwardRef(() => SInputTextAreaComponent),
58
58
  multi: true
59
59
  }
60
- ], template: "<section class=\"s-textarea\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-textarea__label\">\n {{ config.label }}\n <span class=\"s-textarea__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-textarea__content {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || control?.status === 'DISABLED',\n }\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n class=\"theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n resize: !config.resize,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [formControl]=\"control\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-container>\n <ng-template #notUseFormControl>\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n [ngClass]=\"[\n config.resize ? '' : 'resize',\n config.theme ? 'theme-' + config.theme : '',\n ]\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [disabled]=\"config.disabled ?? false\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-template>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}</s-error-control\n >\n </div>\n</section>\n", styles: [".s-textarea{margin-bottom:.5rem}.s-textarea__label{font-size:.875rem;color:var(--secondary-600)}.s-textarea__required{color:var(--primary-600)}.s-textarea__content textarea{width:calc(100% - 1.875rem);padding:.625rem .875rem;border:.063rem solid var(--primary-500);border-radius:.25rem;color:var(--secondary-600);writing-mode:unset;height:2.125rem;font-size:1rem;max-width:100%}.s-textarea__content:not(.disabled-active) textarea:focus-visible{outline:none;border:none;border:1px solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content.disabled-active textarea{border-color:var(--neutrals-900);background-color:var(--neutrals-1100);color:var(--neutrals-800);resize:none}.s-textarea__content.disabled-active textarea:focus-visible{outline:none}.s-textarea__content textarea.theme-red{border:.063rem solid var(--red-600)}.s-textarea__content textarea.theme-red:focus-visible{border:1px solid var(--red-600);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-green{border:.063rem solid var(--green-600)}.s-textarea__content textarea.theme-green:focus-visible{border:1px solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-yellow{border:.063rem solid var(--yellow-500)}.s-textarea__content textarea.theme-yellow:focus-visible{border:1px solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content .resize{resize:none}\n"] }]
60
+ ], template: "<section class=\"s-textarea\">\n <label [for]=\"config.id\" *ngIf=\"config?.label\" class=\"s-textarea__label\">\n {{ config.label }}\n <span class=\"s-textarea__required\" *ngIf=\"config?.required\">*</span>\n </label>\n <div\n class=\"s-textarea__content {{ config.classAdd }}\"\n [ngClass]=\"{\n 'disabled-active': config.disabled || control?.status === 'DISABLED',\n }\">\n <ng-container *ngIf=\"control; else notUseFormControl\">\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n class=\"theme-{{ config.theme }} {{ config.classAdd }}\"\n [ngClass]=\"{\n resize: !config.resize,\n 'readonly':\n config.readOnly,\n 'theme-red':\n (control && control.invalid && (isFocused || control.touched)) ||\n (control && control.errors && control.touched) ||\n config.theme === 'red',\n }\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [formControl]=\"control\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-container>\n <ng-template #notUseFormControl>\n <textarea\n [readOnly]=\"config.readOnly || config.disabled\"\n [ngClass]=\"[\n config.resize ? '' : 'resize',\n config.theme ? 'theme-' + config.theme : '',\n ]\"\n [ngStyle]=\"{ height: config.height, width: config.width }\"\n [disabled]=\"config.disabled ?? false\"\n [id]=\"config.id\"\n autocomplete=\"off\"\n [placeholder]=\"config.placeholder ?? ''\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n </textarea>\n </ng-template>\n <s-validation-error\n *ngIf=\"\n !config.hideErrorText &&\n control &&\n control.invalid &&\n (isFocused || control.touched)\n \"\n [customErrorMessages]=\"config.errorMessages ?? undefined\"\n [errors]=\"control.errors\">\n </s-validation-error>\n <s-error-control\n *ngIf=\"!config.hideErrorText && config.errorText\"\n theme=\"red\"\n >{{ config.errorText }}</s-error-control\n >\n <s-error-control\n *ngIf=\"\n !config.hideErrorText &&\n !config.errorText &&\n ((control && control.errors?.['required'] && !control.touched) ||\n (control && !control.errors)) &&\n !(isFocused && control.invalid)\n \">\n {{ config.helpText || '' }}</s-error-control\n >\n </div>\n</section>\n", styles: [".s-textarea{margin-bottom:.5rem}.s-textarea__label{font-size:.875rem;color:var(--secondary-600)}.s-textarea__required{color:var(--primary-600)}.s-textarea__content textarea{width:calc(100% - 1.875rem);padding:.625rem .875rem;border:.063rem solid var(--primary-500);border-radius:.25rem;color:var(--secondary-600);writing-mode:unset;height:2.125rem;font-size:1rem;max-width:100%}.s-textarea__content:not(.disabled-active) textarea:focus-visible{outline:none;border:none;border:1px solid var(--primary-600);box-shadow:0 0 0 .25rem var(--cyan-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content.disabled-active textarea{border-color:var(--neutrals-900);background-color:var(--neutrals-1100);color:var(--neutrals-800);resize:none}.s-textarea__content.disabled-active textarea:focus-visible{outline:none}.s-textarea__content textarea.readonly{background-color:var(--neutrals-1100)!important}.s-textarea__content textarea.readonly input{background-color:var(--neutrals-1100)!important;cursor:default}.s-textarea__content textarea.theme-red{border:.063rem solid var(--red-600)}.s-textarea__content textarea.theme-red:focus-visible{border:1px solid var(--red-600);box-shadow:0 0 0 .25rem var(--red-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-green{border:.063rem solid var(--green-600)}.s-textarea__content textarea.theme-green:focus-visible{border:1px solid var(--green-500);box-shadow:0 0 0 .25rem var(--green-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content textarea.theme-yellow{border:.063rem solid var(--yellow-500)}.s-textarea__content textarea.theme-yellow:focus-visible{border:1px solid var(--yellow-500);box-shadow:0 0 0 .25rem var(--yellow-alpha-200),0 .0625rem .125rem 0 var(--blue-alpha-100)}.s-textarea__content .resize{resize:none}\n"] }]
61
61
  }], propDecorators: { config: [{
62
62
  type: Input
63
63
  }], blur: [{
@@ -65,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
65
65
  }], focus: [{
66
66
  type: Output
67
67
  }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9pbnB1dC9jb21wb25lbnRzL2lucHV0LXRleHRhcmVhL3MtaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC10ZXh0YXJlYS9zLWlucHV0LXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBRWxELE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBZUUsVUFBSyxHQUFXLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFaEMsQ0FBQztDQUFBO0FBYUQsTUFBTSxPQUFPLHVCQUEyQixTQUFRLDZCQUFnQztJQVpoRjs7UUFjVyxXQUFNLEdBQWMsSUFBSSxTQUFTLENBQUM7UUFDakMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBWSxLQUFLLENBQUM7S0F3QjVCO0lBdEJDLE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQTdCVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixvSEFSdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDakNILG1uRkEyRUE7OzRGRHhDYSx1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFJUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksSUFBSTtzQkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3RoZW1lLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgU1RleHRBcmVhIHtcbiAgY2xhc3NBZGQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGVycm9yVGV4dD86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGhpZGVFcnJvclRleHQ/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgcmVzaXplPzogYm9vbGVhbjtcbiAgdGhlbWU/OiBUSEVNRSA9IFRIRU1FLkRFRkFVTFQ7XG4gIHVzZUZvcm1Db250cm9sPzogYm9vbGVhbjtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtaW5wdXQtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vcy1pbnB1dC10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRUZXh0QXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTSW5wdXRUZXh0QXJlYUNvbXBvbmVudDxUPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFQ+IHtcblxuICBASW5wdXQoKSBjb25maWc6IFNUZXh0QXJlYSA9IG5ldyBTVGV4dEFyZWE7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFRIRU1FID0gVEhFTUU7XG4gIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYoIXRoaXMuY29uZmlnLnVzZUZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInMtdGV4dGFyZWFcIj5cbiAgPGxhYmVsIFtmb3JdPVwiY29uZmlnLmlkXCIgKm5nSWY9XCJjb25maWc/LmxhYmVsXCIgY2xhc3M9XCJzLXRleHRhcmVhX19sYWJlbFwiPlxuICAgIHt7IGNvbmZpZy5sYWJlbCB9fVxuICAgIDxzcGFuIGNsYXNzPVwicy10ZXh0YXJlYV9fcmVxdWlyZWRcIiAqbmdJZj1cImNvbmZpZz8ucmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzLXRleHRhcmVhX19jb250ZW50IHt7IGNvbmZpZy5jbGFzc0FkZCB9fVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2Rpc2FibGVkLWFjdGl2ZSc6IGNvbmZpZy5kaXNhYmxlZCB8fCBjb250cm9sPy5zdGF0dXMgPT09ICdESVNBQkxFRCcsXG4gICAgfVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sOyBlbHNlIG5vdFVzZUZvcm1Db250cm9sXCI+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgW3JlYWRPbmx5XT1cImNvbmZpZy5yZWFkT25seSB8fCBjb25maWcuZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInRoZW1lLXt7IGNvbmZpZy50aGVtZSB9fSB7eyBjb25maWcuY2xhc3NBZGQgfX1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgcmVzaXplOiAhY29uZmlnLnJlc2l6ZSxcbiAgICAgICAgICAndGhlbWUtcmVkJzpcbiAgICAgICAgICAgIChjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiAoaXNGb2N1c2VkIHx8IGNvbnRyb2wudG91Y2hlZCkpIHx8XG4gICAgICAgICAgICAoY29udHJvbCAmJiBjb250cm9sLmVycm9ycyAmJiBjb250cm9sLnRvdWNoZWQpIHx8XG4gICAgICAgICAgICBjb25maWcudGhlbWUgPT09ICdyZWQnLFxuICAgICAgICB9XCJcbiAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGNvbmZpZy5oZWlnaHQsIHdpZHRoOiBjb25maWcud2lkdGggfVwiXG4gICAgICAgIFtpZF09XCJjb25maWcuaWRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIj5cbiAgICAgIDwvdGV4dGFyZWE+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNub3RVc2VGb3JtQ29udHJvbD5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBbcmVhZE9ubHldPVwiY29uZmlnLnJlYWRPbmx5IHx8IGNvbmZpZy5kaXNhYmxlZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICBjb25maWcucmVzaXplID8gJycgOiAncmVzaXplJyxcbiAgICAgICAgICBjb25maWcudGhlbWUgPyAndGhlbWUtJyArIGNvbmZpZy50aGVtZSA6ICcnLFxuICAgICAgICBdXCJcbiAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGNvbmZpZy5oZWlnaHQsIHdpZHRoOiBjb25maWcud2lkdGggfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb25maWcuZGlzYWJsZWQgPz8gZmFsc2VcIlxuICAgICAgICBbaWRdPVwiY29uZmlnLmlkXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wbGFjZWhvbGRlciA/PyAnJ1wiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIj5cbiAgICAgIDwvdGV4dGFyZWE+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8cy12YWxpZGF0aW9uLWVycm9yXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhY29uZmlnLmhpZGVFcnJvclRleHQgJiZcbiAgICAgICAgY29udHJvbCAmJlxuICAgICAgICBjb250cm9sLmludmFsaWQgJiZcbiAgICAgICAgKGlzRm9jdXNlZCB8fCBjb250cm9sLnRvdWNoZWQpXG4gICAgICBcIlxuICAgICAgW2N1c3RvbUVycm9yTWVzc2FnZXNdPVwiY29uZmlnLmVycm9yTWVzc2FnZXMgPz8gdW5kZWZpbmVkXCJcbiAgICAgIFtlcnJvcnNdPVwiY29udHJvbC5lcnJvcnNcIj5cbiAgICA8L3MtdmFsaWRhdGlvbi1lcnJvcj5cbiAgICA8cy1lcnJvci1jb250cm9sXG4gICAgICAqbmdJZj1cIiFjb25maWcuaGlkZUVycm9yVGV4dCAmJiBjb25maWcuZXJyb3JUZXh0XCJcbiAgICAgIHRoZW1lPVwicmVkXCJcbiAgICAgID57eyBjb25maWcuZXJyb3JUZXh0IH19PC9zLWVycm9yLWNvbnRyb2xcbiAgICA+XG4gICAgPHMtZXJyb3ItY29udHJvbFxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmXG4gICAgICAgICFjb25maWcuZXJyb3JUZXh0ICYmXG4gICAgICAgICgoY29udHJvbCAmJiBjb250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddICYmICFjb250cm9sLnRvdWNoZWQpIHx8XG4gICAgICAgICAgKGNvbnRyb2wgJiYgIWNvbnRyb2wuZXJyb3JzKSkgJiZcbiAgICAgICAgIShpc0ZvY3VzZWQgJiYgY29udHJvbC5pbnZhbGlkKVxuICAgICAgXCI+XG4gICAgICB7eyBjb25maWcuaGVscFRleHQgfHwgJycgfX08L3MtZXJyb3ItY29udHJvbFxuICAgID5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9pbnB1dC9jb21wb25lbnRzL2lucHV0LXRleHRhcmVhL3MtaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC10ZXh0YXJlYS9zLWlucHV0LXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBRWxELE1BQU0sT0FBTyxTQUFTO0lBQXRCO1FBZUUsVUFBSyxHQUFXLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFFaEMsQ0FBQztDQUFBO0FBYUQsTUFBTSxPQUFPLHVCQUEyQixTQUFRLDZCQUFnQztJQVpoRjs7UUFjVyxXQUFNLEdBQWMsSUFBSSxTQUFTLENBQUM7UUFDakMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDM0MsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLGNBQVMsR0FBWSxLQUFLLENBQUM7S0F3QjVCO0lBdEJDLE9BQU8sQ0FBQyxLQUFZO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBVTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDOytHQTdCVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixvSEFSdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2dCQUN0RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDakNILHdxRkE2RUE7OzRGRDFDYSx1QkFBdUI7a0JBWm5DLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFJUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksSUFBSTtzQkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUSEVNRSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3RoZW1lLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgU1RleHRBcmVhIHtcbiAgY2xhc3NBZGQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgZXJyb3JNZXNzYWdlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGVycm9yVGV4dD86IHN0cmluZztcbiAgaGVscFRleHQ/OiBzdHJpbmc7XG4gIGhpZGVFcnJvclRleHQ/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICB3aWR0aD86IHN0cmluZztcbiAgcmVzaXplPzogYm9vbGVhbjtcbiAgdGhlbWU/OiBUSEVNRSA9IFRIRU1FLkRFRkFVTFQ7XG4gIHVzZUZvcm1Db250cm9sPzogYm9vbGVhbjtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtaW5wdXQtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vcy1pbnB1dC10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQtdGV4dGFyZWEuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRUZXh0QXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTSW5wdXRUZXh0QXJlYUNvbXBvbmVudDxUPiBleHRlbmRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlPFQ+IHtcblxuICBASW5wdXQoKSBjb25maWc6IFNUZXh0QXJlYSA9IG5ldyBTVGV4dEFyZWE7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIFRIRU1FID0gVEhFTUU7XG4gIGlzRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYoIXRoaXMuY29uZmlnLnVzZUZvcm1Db250cm9sKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cInMtdGV4dGFyZWFcIj5cbiAgPGxhYmVsIFtmb3JdPVwiY29uZmlnLmlkXCIgKm5nSWY9XCJjb25maWc/LmxhYmVsXCIgY2xhc3M9XCJzLXRleHRhcmVhX19sYWJlbFwiPlxuICAgIHt7IGNvbmZpZy5sYWJlbCB9fVxuICAgIDxzcGFuIGNsYXNzPVwicy10ZXh0YXJlYV9fcmVxdWlyZWRcIiAqbmdJZj1cImNvbmZpZz8ucmVxdWlyZWRcIj4qPC9zcGFuPlxuICA8L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzLXRleHRhcmVhX19jb250ZW50IHt7IGNvbmZpZy5jbGFzc0FkZCB9fVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2Rpc2FibGVkLWFjdGl2ZSc6IGNvbmZpZy5kaXNhYmxlZCB8fCBjb250cm9sPy5zdGF0dXMgPT09ICdESVNBQkxFRCcsXG4gICAgfVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sOyBlbHNlIG5vdFVzZUZvcm1Db250cm9sXCI+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgW3JlYWRPbmx5XT1cImNvbmZpZy5yZWFkT25seSB8fCBjb25maWcuZGlzYWJsZWRcIlxuICAgICAgICBjbGFzcz1cInRoZW1lLXt7IGNvbmZpZy50aGVtZSB9fSB7eyBjb25maWcuY2xhc3NBZGQgfX1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgcmVzaXplOiAhY29uZmlnLnJlc2l6ZSxcbiAgICAgICAgICAncmVhZG9ubHknOlxuICAgICAgICAgICAgY29uZmlnLnJlYWRPbmx5LFxuICAgICAgICAgICd0aGVtZS1yZWQnOlxuICAgICAgICAgICAgKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIChpc0ZvY3VzZWQgfHwgY29udHJvbC50b3VjaGVkKSkgfHxcbiAgICAgICAgICAgIChjb250cm9sICYmIGNvbnRyb2wuZXJyb3JzICYmIGNvbnRyb2wudG91Y2hlZCkgfHxcbiAgICAgICAgICAgIGNvbmZpZy50aGVtZSA9PT0gJ3JlZCcsXG4gICAgICAgIH1cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogY29uZmlnLmhlaWdodCwgd2lkdGg6IGNvbmZpZy53aWR0aCB9XCJcbiAgICAgICAgW2lkXT1cImNvbmZpZy5pZFwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25maWcucGxhY2Vob2xkZXIgPz8gJydcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiPlxuICAgICAgPC90ZXh0YXJlYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdFVzZUZvcm1Db250cm9sPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIFtyZWFkT25seV09XCJjb25maWcucmVhZE9ubHkgfHwgY29uZmlnLmRpc2FibGVkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgIGNvbmZpZy5yZXNpemUgPyAnJyA6ICdyZXNpemUnLFxuICAgICAgICAgIGNvbmZpZy50aGVtZSA/ICd0aGVtZS0nICsgY29uZmlnLnRoZW1lIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogY29uZmlnLmhlaWdodCwgd2lkdGg6IGNvbmZpZy53aWR0aCB9XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbmZpZy5kaXNhYmxlZCA/PyBmYWxzZVwiXG4gICAgICAgIFtpZF09XCJjb25maWcuaWRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnLnBsYWNlaG9sZGVyID8/ICcnXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiPlxuICAgICAgPC90ZXh0YXJlYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxzLXZhbGlkYXRpb24tZXJyb3JcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgICFjb25maWcuaGlkZUVycm9yVGV4dCAmJlxuICAgICAgICBjb250cm9sICYmXG4gICAgICAgIGNvbnRyb2wuaW52YWxpZCAmJlxuICAgICAgICAoaXNGb2N1c2VkIHx8IGNvbnRyb2wudG91Y2hlZClcbiAgICAgIFwiXG4gICAgICBbY3VzdG9tRXJyb3JNZXNzYWdlc109XCJjb25maWcuZXJyb3JNZXNzYWdlcyA/PyB1bmRlZmluZWRcIlxuICAgICAgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiPlxuICAgIDwvcy12YWxpZGF0aW9uLWVycm9yPlxuICAgIDxzLWVycm9yLWNvbnRyb2xcbiAgICAgICpuZ0lmPVwiIWNvbmZpZy5oaWRlRXJyb3JUZXh0ICYmIGNvbmZpZy5lcnJvclRleHRcIlxuICAgICAgdGhlbWU9XCJyZWRcIlxuICAgICAgPnt7IGNvbmZpZy5lcnJvclRleHQgfX08L3MtZXJyb3ItY29udHJvbFxuICAgID5cbiAgICA8cy1lcnJvci1jb250cm9sXG4gICAgICAqbmdJZj1cIlxuICAgICAgICAhY29uZmlnLmhpZGVFcnJvclRleHQgJiZcbiAgICAgICAgIWNvbmZpZy5lcnJvclRleHQgJiZcbiAgICAgICAgKChjb250cm9sICYmIGNvbnRyb2wuZXJyb3JzPy5bJ3JlcXVpcmVkJ10gJiYgIWNvbnRyb2wudG91Y2hlZCkgfHxcbiAgICAgICAgICAoY29udHJvbCAmJiAhY29udHJvbC5lcnJvcnMpKSAmJlxuICAgICAgICAhKGlzRm9jdXNlZCAmJiBjb250cm9sLmludmFsaWQpXG4gICAgICBcIj5cbiAgICAgIHt7IGNvbmZpZy5oZWxwVGV4dCB8fCAnJyB9fTwvcy1lcnJvci1jb250cm9sXG4gICAgPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==