sidesys-generic-ui 0.0.26 → 0.0.27-beta

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 (82) hide show
  1. package/esm2022/lib/avatar/s-avatar.component.mjs +1 -1
  2. package/esm2022/lib/badge/s-badge.component.mjs +1 -1
  3. package/esm2022/lib/breadcrum/s-breadcrum.component.mjs +1 -1
  4. package/esm2022/lib/card/s-card.component.mjs +1 -1
  5. package/esm2022/lib/checkbox/s-checkbox.component.mjs +3 -3
  6. package/esm2022/lib/content/s-content.component.mjs +7 -4
  7. package/esm2022/lib/footer/s-footer.component.mjs +8 -3
  8. package/esm2022/lib/form/s-form.component.mjs +1 -1
  9. package/esm2022/lib/icon-material/index.mjs +2 -1
  10. package/esm2022/lib/icon-material/s-icon-material.component.mjs +6 -3
  11. package/esm2022/lib/icon-material/s-icon-material.model.mjs +3 -0
  12. package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +136 -0
  13. package/esm2022/lib/input/components/color/s-color.component.mjs +119 -0
  14. package/esm2022/lib/input/components/error-control/s-error-control.component.mjs +3 -3
  15. package/esm2022/lib/input/components/input/s-input.component.mjs +116 -0
  16. package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +228 -0
  17. package/esm2022/lib/input/components/input-text/s-input-text.component.mjs +7 -9
  18. package/esm2022/lib/input/components/input-textarea/s-input-textarea.component.mjs +17 -21
  19. package/esm2022/lib/input/components/range/s-range.component.mjs +177 -0
  20. package/esm2022/lib/input/components/time/s-time.component.mjs +129 -0
  21. package/esm2022/lib/input/components/validation-error/s-validation-error.component.mjs +33 -0
  22. package/esm2022/lib/input/directives/control-value-accessor.directive.mjs +69 -0
  23. package/esm2022/lib/input/enums/icon-theme.enum.mjs +8 -0
  24. package/esm2022/lib/input/enums/theme.emun.mjs +8 -0
  25. package/esm2022/lib/input/index.mjs +10 -1
  26. package/esm2022/lib/input/input.module.mjs +40 -5
  27. package/esm2022/lib/list/s-list.component.mjs +1 -1
  28. package/esm2022/lib/list-simple/s-list-simple.component.mjs +2 -2
  29. package/esm2022/lib/login/s-login.component.mjs +2 -2
  30. package/esm2022/lib/navbar/components/icon-menu/components/s-notificaction.component.mjs +1 -1
  31. package/esm2022/lib/navbar/components/icon-menu/s-icon-menu.component.mjs +1 -1
  32. package/esm2022/lib/navbar/components/menu-main/s-menu-main.component.mjs +1 -1
  33. package/esm2022/lib/navbar/s-navbar.component.mjs +2 -2
  34. package/esm2022/lib/pagination/s-pagination.component.mjs +17 -4
  35. package/esm2022/lib/popup/s-popup.component.mjs +3 -3
  36. package/esm2022/lib/precode/s-precode.component.mjs +11 -5
  37. package/esm2022/lib/progressbar/s-progressbar.component.mjs +2 -2
  38. package/esm2022/lib/radio/s-radio.component.mjs +8 -9
  39. package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +16 -7
  40. package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +14 -6
  41. package/esm2022/lib/sidebar/components/s-menu-item.component.mjs +43 -0
  42. package/esm2022/lib/sidebar/index.mjs +2 -1
  43. package/esm2022/lib/sidebar/s-sidebar-model.mjs +1 -1
  44. package/esm2022/lib/sidebar/s-sidebar.component.mjs +49 -12
  45. package/esm2022/lib/sidebar/s-sidebar.module.mjs +8 -5
  46. package/esm2022/lib/sub-menu/s-sub-menu.component.mjs +1 -1
  47. package/esm2022/lib/tabs/s-tabs.component.mjs +1 -1
  48. package/esm2022/lib/theme/s-theme.component.mjs +2 -2
  49. package/esm2022/lib/toast/s-toast.component.mjs +1 -1
  50. package/esm2022/lib/toggle-switch/s-toggle-switch.component.mjs +1 -1
  51. package/esm2022/lib/tree-list/s-tree-list.component.mjs +1 -1
  52. package/fesm2022/sidesys-generic-ui.mjs +1253 -141
  53. package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
  54. package/lib/content/s-content.component.d.ts +2 -1
  55. package/lib/footer/s-footer.component.d.ts +2 -1
  56. package/lib/icon-material/index.d.ts +1 -0
  57. package/lib/icon-material/s-icon-material.component.d.ts +11 -9
  58. package/lib/icon-material/s-icon-material.model.d.ts +11 -0
  59. package/lib/input/components/calendar/s-calendar.component.d.ts +41 -0
  60. package/lib/input/components/color/s-color.component.d.ts +40 -0
  61. package/lib/input/components/error-control/s-error-control.component.d.ts +1 -1
  62. package/lib/input/components/input/s-input.component.d.ts +72 -0
  63. package/lib/input/components/input-number/s-input-number.component.d.ts +69 -0
  64. package/lib/input/components/input-textarea/s-input-textarea.component.d.ts +6 -7
  65. package/lib/input/components/range/s-range.component.d.ts +44 -0
  66. package/lib/input/components/time/s-time.component.d.ts +36 -0
  67. package/lib/input/components/validation-error/s-validation-error.component.d.ts +11 -0
  68. package/lib/input/directives/control-value-accessor.directive.d.ts +21 -0
  69. package/lib/input/enums/icon-theme.enum.d.ts +6 -0
  70. package/lib/input/enums/theme.emun.d.ts +6 -0
  71. package/lib/input/index.d.ts +9 -0
  72. package/lib/input/input.module.d.ts +12 -5
  73. package/lib/pagination/s-pagination.component.d.ts +5 -1
  74. package/lib/precode/s-precode.component.d.ts +3 -1
  75. package/lib/radio/s-radio.component.d.ts +1 -1
  76. package/lib/select/select-multiple/s-select-multiple.component.d.ts +1 -0
  77. package/lib/sidebar/components/s-menu-item.component.d.ts +16 -0
  78. package/lib/sidebar/index.d.ts +1 -0
  79. package/lib/sidebar/s-sidebar-model.d.ts +14 -2
  80. package/lib/sidebar/s-sidebar.component.d.ts +13 -9
  81. package/lib/sidebar/s-sidebar.module.d.ts +7 -6
  82. package/package.json +1 -1
@@ -0,0 +1,228 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { THEME } from '../../enums/theme.emun';
4
+ import { ICON_THEME } from '../../enums/icon-theme.enum';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "../../../icon-material/s-icon-material.component";
9
+ import * as i4 from "../../../button/components/button/s-button.component";
10
+ import * as i5 from "../error-control/s-error-control.component";
11
+ export class SInputNumber {
12
+ constructor() {
13
+ this.disabled = false;
14
+ this.min = 0;
15
+ this.readOnly = false;
16
+ this.theme = THEME.DEFAULT;
17
+ this.help = false;
18
+ }
19
+ }
20
+ export class SInputNumberComponent {
21
+ constructor() {
22
+ this.onChange = (_) => { };
23
+ this.onTouch = () => { };
24
+ this.value = 0;
25
+ this.id = (Math.floor(Math.random() * 1000)).toString();
26
+ this.disabled = false;
27
+ this.min = 0;
28
+ this.step = 1;
29
+ this.readOnly = false;
30
+ this.theme = 'default';
31
+ this.classAdd = '';
32
+ this.help = false;
33
+ this.size = 'md';
34
+ this.rangeUnity = '';
35
+ this.inputText = 0;
36
+ this.inputNumber = 0;
37
+ this.visibility = false;
38
+ this.inconSymbol = false;
39
+ this.tooltipValue = '';
40
+ this.ICON_THEME = ICON_THEME;
41
+ this.valueChangeEvent = new EventEmitter();
42
+ this.clickHelpIconEvent = new EventEmitter();
43
+ this.blur = new EventEmitter();
44
+ this.focus = new EventEmitter();
45
+ }
46
+ ngOnInit() {
47
+ //Ajuste cuando type number viene con text y lo convierte a numero
48
+ if (this.value) {
49
+ this.inputNumber = this.value;
50
+ }
51
+ this.inputText = this.value;
52
+ }
53
+ ngOnChanges(changes) {
54
+ if (changes['text']) {
55
+ if (this.value) {
56
+ this.inputNumber = this.value;
57
+ }
58
+ this.inputText = this.value;
59
+ }
60
+ }
61
+ onTextChange() {
62
+ this.updateNumber(this.inputText);
63
+ this.onTouch();
64
+ this.onChange(this.inputText);
65
+ if (this.inputTimeout) {
66
+ clearTimeout(this.inputTimeout);
67
+ }
68
+ this.inputTimeout = setTimeout(() => {
69
+ this.valueChangeEvent.next(this.inputText);
70
+ }, 500, null);
71
+ }
72
+ onTextChangeVal(val) {
73
+ if (this.inputTimeout) {
74
+ clearTimeout(this.inputTimeout);
75
+ }
76
+ this.inputTimeout = setTimeout(() => {
77
+ if (val) {
78
+ this.onTouch();
79
+ this.onChange(val);
80
+ this.valueChangeEvent.next(val);
81
+ this.inputText = val;
82
+ }
83
+ else {
84
+ this.onTouch();
85
+ this.onChange(val);
86
+ this.valueChangeEvent.next(this.inputText);
87
+ }
88
+ }, 500, null);
89
+ }
90
+ clickIcon() {
91
+ this.clickHelpIconEvent.next();
92
+ }
93
+ getIconType() {
94
+ return this.theme == 'yellow' ? 'symbol' : 'icon';
95
+ }
96
+ //FUNCIONES PARA TYPE NUMBER
97
+ numberDecrease() {
98
+ if (!this.disabled && !this.readOnly) {
99
+ if (this.min < this.inputNumber) {
100
+ this.inputNumber -= this.step;
101
+ }
102
+ this.inputText = this.inputNumber;
103
+ this.onTouch();
104
+ this.onChange(this.inputText);
105
+ this.valueChangeEvent.next(this.inputText);
106
+ }
107
+ }
108
+ numberIncrement() {
109
+ if (!this.disabled && !this.readOnly) {
110
+ if (this.max) {
111
+ if (this.max > this.inputNumber) {
112
+ this.inputNumber += this.step;
113
+ }
114
+ else {
115
+ this.inputNumber = this.max;
116
+ }
117
+ }
118
+ if (!this.max) {
119
+ this.inputNumber += this.step;
120
+ }
121
+ this.inputText = this.inputNumber;
122
+ this.onTouch();
123
+ this.onChange(this.inputText);
124
+ this.valueChangeEvent.next(this.inputText);
125
+ }
126
+ }
127
+ updateNumber(value) {
128
+ let value2 = value;
129
+ if (this.max)
130
+ if (value > this.max) {
131
+ value2 = this.max;
132
+ }
133
+ if (value < this.min) {
134
+ value2 = this.min;
135
+ }
136
+ this.inputText = value2.toString();
137
+ this.inputNumber = Number(value2);
138
+ if (this.typeNumber)
139
+ this.typeNumber.nativeElement.value = this.inputNumber;
140
+ this.onTouch();
141
+ this.onChange(this.inputNumber);
142
+ this.valueChangeEvent.next(this.inputText);
143
+ }
144
+ //FIN FUNCIONES PARA TYPE NUMBER
145
+ //FUNCIONES PARA QUE FUNCIONE FORM BUILDER
146
+ writeValue(value) {
147
+ if (value) {
148
+ this.inputText = value;
149
+ this.inputNumber = value;
150
+ }
151
+ }
152
+ registerOnChange(fn) {
153
+ this.onChange = fn;
154
+ }
155
+ registerOnTouched(fn) {
156
+ this.onTouch = fn;
157
+ }
158
+ onBlur(event) {
159
+ this.blur.next(event);
160
+ }
161
+ onFocus(event) {
162
+ this.focus.next(event);
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: SInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: SInputNumberComponent, selector: "s-input-number", inputs: { value: "value", id: "id", label: "label", placeHolder: "placeHolder", required: "required", helpText: "helpText", errorText: "errorText", disabled: "disabled", max: "max", min: "min", step: "step", readOnly: "readOnly", theme: "theme", classAdd: "classAdd", help: "help", size: "size", rangeUnity: "rangeUnity" }, outputs: { valueChangeEvent: "valueChangeEvent", clickHelpIconEvent: "clickHelpIconEvent", blur: "blur", focus: "focus" }, providers: [
166
+ {
167
+ provide: NG_VALUE_ACCESSOR,
168
+ useExisting: forwardRef(() => SInputNumberComponent),
169
+ multi: true
170
+ }
171
+ ], viewQueries: [{ propertyName: "typeNumber", first: true, predicate: ["typeNumber"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\r\n <label *ngIf=\"label\" class=\"s-input__label\">\r\n\t\t{{label}}\r\n\t\t<span class=\"s-input__required\" *ngIf=\"required\">*</span>\r\n\t</label>\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} w-100\"\r\n [ngClass]=\"{'disabled-active': disabled}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"'number'\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{ICON_THEME[this.theme]}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n <s-error-control *ngIf=\"errorText\" theme =\"red\">{{errorText}}</s-error-control>\r\n\t<s-error-control *ngIf=\"helpText && !errorText\">{{helpText}}</s-error-control>\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "color", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme"] }, { kind: "component", type: i5.SErrorControl, selector: "s-error-control", inputs: ["theme", "icon", "iconCustom", "size"] }], encapsulation: i0.ViewEncapsulation.None }); }
172
+ }
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: SInputNumberComponent, decorators: [{
174
+ type: Component,
175
+ args: [{ selector: 's-input-number', encapsulation: ViewEncapsulation.None, providers: [
176
+ {
177
+ provide: NG_VALUE_ACCESSOR,
178
+ useExisting: forwardRef(() => SInputNumberComponent),
179
+ multi: true
180
+ }
181
+ ], template: "<ng-container>\r\n <label *ngIf=\"label\" class=\"s-input__label\">\r\n\t\t{{label}}\r\n\t\t<span class=\"s-input__required\" *ngIf=\"required\">*</span>\r\n\t</label>\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} w-100\"\r\n [ngClass]=\"{'disabled-active': disabled}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"'number'\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"getIconType()\" class=\"icon report\">{{ICON_THEME[this.theme]}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n <s-error-control *ngIf=\"errorText\" theme =\"red\">{{errorText}}</s-error-control>\r\n\t<s-error-control *ngIf=\"helpText && !errorText\">{{helpText}}</s-error-control>\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"] }]
182
+ }], propDecorators: { typeNumber: [{
183
+ type: ViewChild,
184
+ args: ['typeNumber']
185
+ }], value: [{
186
+ type: Input
187
+ }], id: [{
188
+ type: Input
189
+ }], label: [{
190
+ type: Input
191
+ }], placeHolder: [{
192
+ type: Input
193
+ }], required: [{
194
+ type: Input
195
+ }], helpText: [{
196
+ type: Input
197
+ }], errorText: [{
198
+ type: Input
199
+ }], disabled: [{
200
+ type: Input
201
+ }], max: [{
202
+ type: Input
203
+ }], min: [{
204
+ type: Input
205
+ }], step: [{
206
+ type: Input
207
+ }], readOnly: [{
208
+ type: Input
209
+ }], theme: [{
210
+ type: Input
211
+ }], classAdd: [{
212
+ type: Input
213
+ }], help: [{
214
+ type: Input
215
+ }], size: [{
216
+ type: Input
217
+ }], rangeUnity: [{
218
+ type: Input
219
+ }], valueChangeEvent: [{
220
+ type: Output
221
+ }], clickHelpIconEvent: [{
222
+ type: Output
223
+ }], blur: [{
224
+ type: Output
225
+ }], focus: [{
226
+ type: Output
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC1udW1iZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC1udW1iZXIvcy1pbnB1dC1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFFekQsTUFBTSxPQUFPLFlBQVk7SUFBekI7UUFNRSxhQUFRLEdBQWEsS0FBSyxDQUFDO1FBRzNCLFFBQUcsR0FBWSxDQUFDLENBQUM7UUFDakIsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUMzQixVQUFLLEdBQVcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM5QixTQUFJLEdBQWEsS0FBSyxDQUFDO0lBRXpCLENBQUM7Q0FBQTtBQWVELE1BQU0sT0FBTyxxQkFBcUI7SUFibEM7UUFlRSxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBS1gsVUFBSyxHQUFXLENBQUMs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QUU7c0JBQVYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRIRU1FIH0gZnJvbSAnLi4vLi4vZW51bXMvdGhlbWUuZW11bic7XHJcbmltcG9ydCB7IElDT05fVEhFTUUgfSBmcm9tICcuLi8uLi9lbnVtcy9pY29uLXRoZW1lLmVudW0nO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNJbnB1dE51bWJlciB7XHJcbiAgdmFsdWU/OiBudW1iZXI7XHJcbiAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGhpbnQ/OiBzdHJpbmc7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWF4PzogbnVtYmVyO1xyXG4gIG1heGxlbmd0aD86IG51bWJlcjtcclxuICBtaW4/OiBudW1iZXIgPSAwO1xyXG4gIHJlYWRPbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRoZW1lPzogVEhFTUUgPSBUSEVNRS5ERUZBVUxUO1xyXG4gIGhlbHA/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2l6ZT86ICdzbSd8ICdtZCc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncy1pbnB1dC1udW1iZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU0lucHV0TnVtYmVyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTSW5wdXROdW1iZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IgIHtcclxuICBcclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuICBvblRvdWNoID0gKCkgPT4geyB9O1xyXG5cclxuICAvL1JFRiBQQVJBIFRZUEUgTlVNQkVSXHJcbiAgQFZpZXdDaGlsZCgndHlwZU51bWJlcicpIHR5cGVOdW1iZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQgO1xyXG5cclxuICBASW5wdXQoKSB2YWx1ZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBpZDogc3RyaW5nID0gKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDApKS50b1N0cmluZygpO1xyXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlSG9sZGVyPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBoZWxwVGV4dD86IHN0cmluZztcclxuICBASW5wdXQoKSBlcnJvclRleHQ/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBtYXg/OiBudW1iZXIgO1xyXG4gIEBJbnB1dCgpIG1pbjogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdGhlbWU6ICdkZWZhdWx0JyB8ICdncmVlbicgfCAneWVsbG93JyB8ICdyZWQnID0gJ2RlZmF1bHQnO1xyXG4gIEBJbnB1dCgpIGNsYXNzQWRkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBoZWxwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgPSAnbWQnO1xyXG4gIEBJbnB1dCgpIHJhbmdlVW5pdHk6IHN0cmluZyA9ICcnO1xyXG5cclxuICBpbnB1dFRpbWVvdXQ/OiBhbnk7XHJcbiAgaW5wdXRUZXh0OiBudW1iZXIgPSAwO1xyXG4gIGlucHV0TnVtYmVyOiBudW1iZXIgPSAwO1xyXG4gIHZpc2liaWxpdHkgPSBmYWxzZTtcclxuICBpbmNvblN5bWJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRvb2x0aXBWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgSUNPTl9USEVNRSA9IElDT05fVEhFTUU7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgQE91dHB1dCgpIGNsaWNrSGVscEljb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgYmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy9BanVzdGUgY3VhbmRvIHR5cGUgbnVtYmVyIHZpZW5lIGNvbiB0ZXh0IHkgbG8gY29udmllcnRlIGEgbnVtZXJvXHJcbiAgICBpZih0aGlzLnZhbHVlKXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gdGhpcy52YWx1ZVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlc1sndGV4dCddKXtcclxuICAgICAgaWYodGhpcy52YWx1ZSl7XHJcbiAgICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gdGhpcy52YWx1ZVxyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlTnVtYmVyKHRoaXMuaW5wdXRUZXh0KVxyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXRUZXh0KTtcclxuXHJcbiAgICBpZiAodGhpcy5pbnB1dFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICB9LCA1MDAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgb25UZXh0Q2hhbmdlVmFsKHZhbDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VFdmVudC5uZXh0KHZhbCk7XHJcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB2YWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VFdmVudC5uZXh0KHRoaXMuaW5wdXRUZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGNsaWNrSWNvbigpIHtcclxuICAgIHRoaXMuY2xpY2tIZWxwSWNvbkV2ZW50Lm5leHQoKTtcclxuICB9XHJcblxyXG4gIGdldEljb25UeXBlKCk6ICdzeW1ib2wnIHwgJ2ljb24nIHtcclxuICAgIHJldHVybiB0aGlzLnRoZW1lID09ICd5ZWxsb3cnID8gJ3N5bWJvbCcgOiAnaWNvbic7XHJcbiAgfVxyXG5cclxuICAvL0ZVTkNJT05FUyBQQVJBIFRZUEUgTlVNQkVSIFxyXG4gIG51bWJlckRlY3JlYXNlKCl7XHJcbiAgICBpZighdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seSl7XHJcbiAgICAgIGlmKHRoaXMubWluIDwgdGhpcy5pbnB1dE51bWJlcil7XHJcbiAgICAgICAgdGhpcy5pbnB1dE51bWJlci09dGhpcy5zdGVwXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmlucHV0TnVtYmVyXHJcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXRUZXh0KTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVySW5jcmVtZW50KCl7XHJcbiAgICBpZighdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seSl7XHJcbiAgICAgIGlmKHRoaXMubWF4KXtcclxuICAgICAgICBpZih0aGlzLm1heCA+IHRoaXMuaW5wdXROdW1iZXIpe1xyXG4gICAgICAgICAgdGhpcy5pbnB1dE51bWJlcis9dGhpcy5zdGVwXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gdGhpcy5tYXhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMubWF4KXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyKz10aGlzLnN0ZXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuaW5wdXROdW1iZXJcclxuICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVOdW1iZXIodmFsdWU6YW55KXtcclxuICAgIGxldCB2YWx1ZTIgPSB2YWx1ZVxyXG4gICAgaWYodGhpcy5tYXgpXHJcbiAgICBpZih2YWx1ZSA+IHRoaXMubWF4KXtcclxuICAgICAgdmFsdWUyID0gdGhpcy5tYXhcclxuICAgIH1cclxuICAgIGlmKHZhbHVlIDwgdGhpcy5taW4pe1xyXG4gICAgICB2YWx1ZTIgPSB0aGlzLm1pblxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5wdXRUZXh0ID0gdmFsdWUyLnRvU3RyaW5nKClcclxuICAgIHRoaXMuaW5wdXROdW1iZXIgPSBOdW1iZXIodmFsdWUyKTtcclxuICAgIGlmKHRoaXMudHlwZU51bWJlcilcclxuICAgIHRoaXMudHlwZU51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5pbnB1dE51bWJlclxyXG4gICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5wdXROdW1iZXIpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgXHJcbiAgfSBcclxuICAvL0ZJTiBGVU5DSU9ORVMgUEFSQSBUWVBFIE5VTUJFUiBcclxuICBcclxuXHJcbiAgLy9GVU5DSU9ORVMgUEFSQSBRVUUgRlVOQ0lPTkUgRk9STSBCVUlMREVSXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5pbnB1dFRleHQgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5pbnB1dE51bWJlciA9IHZhbHVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cy5uZXh0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lcj5cclxuICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJzLWlucHV0X19sYWJlbFwiPlxyXG5cdFx0e3tsYWJlbH19XHJcblx0XHQ8c3BhbiBjbGFzcz1cInMtaW5wdXRfX3JlcXVpcmVkXCIgKm5nSWY9XCJyZXF1aXJlZFwiPio8L3NwYW4+XHJcblx0PC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdCBtci0xXCI+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwibnVtYmVyRGVjcmVhc2UoKVwiIFtzaXplXT1cInNpemVcIiBbcGlsbF09XCJ0cnVlXCIgW2ludmVydF09XCJ0cnVlXCIgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCI+PHMtaWNvbi1tYXQ+cmVtb3ZlPC9zLWljb24tbWF0Pjwvcy1idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQgY29udGVudC1pbnB1dC1tYWluLW51bWJlciB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHctMTAwXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkLWFjdGl2ZSc6IGRpc2FibGVkfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICAjdHlwZU51bWJlciBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJnZXRJY29uVHlwZSgpXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7SUNPTl9USEVNRVt0aGlzLnRoZW1lXX19PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdCBtbC0xXCI+XHJcbiAgICAgICAgICAgIDxzLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwibnVtYmVySW5jcmVtZW50KClcIiBbc2l6ZV09XCJzaXplXCIgW3BpbGxdPVwidHJ1ZVwiIFtpbnZlcnRdPVwidHJ1ZVwiIGNsYXNzPVwiYnV0dG9uLWlucHV0LTYyNlwiPjxzLWljb24tbWF0PmFkZDwvcy1pY29uLW1hdD48L3MtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8cy1lcnJvci1jb250cm9sICpuZ0lmPVwiZXJyb3JUZXh0XCIgdGhlbWUgPVwicmVkXCI+e3tlcnJvclRleHR9fTwvcy1lcnJvci1jb250cm9sPlxyXG5cdDxzLWVycm9yLWNvbnRyb2wgKm5nSWY9XCJoZWxwVGV4dCAmJiAhZXJyb3JUZXh0XCI+e3toZWxwVGV4dH19PC9zLWVycm9yLWNvbnRyb2w+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==