@wizco/fenixds-ngx 17.0.17 → 17.0.18

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.
@@ -113,30 +113,38 @@ export class SmartSelectComponent {
113
113
  }
114
114
  const oldValue = this.formValue;
115
115
  if (this.multiSelect) {
116
- if (this.formValue?.includes(option.value)) {
117
- this.formValue = this.formValue.filter((item) => item !== option.value);
118
- this.autocompleteControl.setValue(this.formValue);
119
- this.renderBoxOptions();
120
- return;
116
+ if (typeof option.value === 'object') {
117
+ const list = this.compareMultiValuesArray(option);
118
+ const hasValueOption = list.some((item) => item.selected);
119
+ if (hasValueOption) {
120
+ this.formValue = list
121
+ .filter((item) => !item.selected)
122
+ .map((item) => item.item);
123
+ }
124
+ else {
125
+ this.formValue = [...(this.formValue || []), option.value];
126
+ }
121
127
  }
122
- // is Array []
123
- if (!!this.formValue === false) {
124
- this.formValue = [];
125
- this.autocompleteControl.setValue(this.formValue);
128
+ else {
129
+ const index = this.formValue?.indexOf(option.value);
130
+ if (index !== undefined && index > -1) {
131
+ this.formValue?.splice(index, 1);
132
+ }
133
+ else {
134
+ this.formValue = [...(this.formValue || []), option.value];
135
+ }
126
136
  }
127
- this.formValue = [...this.formValue, option.value];
128
137
  this.autocompleteControl.setValue(this.formValue);
129
138
  }
130
139
  else {
131
140
  this.formValue = option.value;
132
141
  this.autocompleteControl.setValue(option.value);
133
- }
134
- if (!this.multiSelect) {
135
142
  this.showList = false;
136
143
  }
137
144
  if (oldValue !== this.formValue) {
138
145
  this.onChange.emit({ type: 'updateValue', value: this.formValue });
139
146
  }
147
+ this.renderBoxOptions();
140
148
  }
141
149
  // Show label span
142
150
  get selectedLabel() {
@@ -146,23 +154,70 @@ export class SmartSelectComponent {
146
154
  }
147
155
  // show label multi select
148
156
  get selectedLabelMulti() {
149
- const selectedOptions = this.options?.filter((option) => this.formValue?.includes(option.value));
157
+ const selectedOptions = this.options?.filter((option) => {
158
+ if (typeof option.value === 'object') {
159
+ return this.compareValueArray(option);
160
+ }
161
+ else {
162
+ return this.formValue?.includes(option.value);
163
+ }
164
+ });
150
165
  if (!selectedOptions?.length) {
151
166
  return [];
152
167
  }
153
168
  if (!this.showMaxSelectedLabel) {
154
169
  return selectedOptions;
155
170
  }
156
- if (this.showMaxSelectedLabel && selectedOptions.length > this.showMaxSelectedLabel) {
171
+ if (this.showMaxSelectedLabel &&
172
+ selectedOptions.length > this.showMaxSelectedLabel) {
157
173
  return selectedOptions.slice(0, this.showMaxSelectedLabel);
158
174
  }
159
175
  return selectedOptions;
160
176
  }
177
+ valueToArray(options) {
178
+ const keys = Object.keys(options);
179
+ const value = [];
180
+ keys.forEach((key) => {
181
+ if (options[key] &&
182
+ options[key] !== '' &&
183
+ typeof options[key] !== 'object' &&
184
+ typeof options[key] !== 'function' &&
185
+ typeof options[key] !== 'boolean') {
186
+ value.push(options[key]);
187
+ }
188
+ });
189
+ return value;
190
+ }
191
+ compareValueArray(option, value = this.formValue) {
192
+ if (option && option.value) {
193
+ const valuesItems = this.valueToArray(option.value);
194
+ return value.some((item) => {
195
+ const itemArray = this.valueToArray(item);
196
+ return itemArray.every((itemValue) => valuesItems.includes(itemValue));
197
+ });
198
+ }
199
+ return [];
200
+ }
201
+ compareMultiValuesArray(option, value = this.formValue) {
202
+ if (option && option.value) {
203
+ const valuesItems = this.valueToArray(option.value);
204
+ const formValueArray = value.map((item, index) => {
205
+ const itemArray = this.valueToArray(item);
206
+ return {
207
+ index,
208
+ item,
209
+ selected: itemArray.some((itemValue) => valuesItems.includes(itemValue)),
210
+ };
211
+ });
212
+ // Remove duplicate items
213
+ const uniqueFormValueArray = Array.from(new Set(formValueArray.map((item) => JSON.stringify(item)))).map((item) => JSON.parse(item));
214
+ return uniqueFormValueArray;
215
+ }
216
+ return [];
217
+ }
161
218
  get selectedLabelMultiCount() {
162
219
  const show = this.showMaxSelectedLabel || 0;
163
220
  const selectedOptions = this.options?.filter((option) => this.formValue?.includes(option.value));
164
- console.log('selectedOptions', selectedOptions);
165
- console.log('show', show);
166
221
  if (!selectedOptions?.length) {
167
222
  return 0;
168
223
  }
@@ -208,7 +263,18 @@ export class SmartSelectComponent {
208
263
  }
209
264
  selectedValue(option) {
210
265
  if (this.multiSelect) {
211
- return this.formValue?.includes(option.value);
266
+ if (typeof option.value === 'object') {
267
+ if (option && option.value) {
268
+ const valuesItems = this.valueToArray(option.value);
269
+ return this.formValue.some((item) => {
270
+ const itemArray = this.valueToArray(item);
271
+ return itemArray.every((itemValue) => valuesItems.includes(itemValue));
272
+ });
273
+ }
274
+ }
275
+ else {
276
+ return this.formValue?.includes(option.value);
277
+ }
212
278
  }
213
279
  return option.value === this.formValue;
214
280
  }
@@ -252,7 +318,7 @@ export class SmartSelectComponent {
252
318
  useExisting: SmartSelectComponent,
253
319
  multi: true,
254
320
  },
255
- ], queries: [{ propertyName: "options", predicate: SmartSelectOptionComponent }], ngImport: i0, template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], encapsulation: i0.ViewEncapsulation.None });
321
+ ], queries: [{ propertyName: "options", predicate: SmartSelectOptionComponent }], ngImport: i0, template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], encapsulation: i0.ViewEncapsulation.None });
256
322
  }
257
323
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SmartSelectComponent, decorators: [{
258
324
  type: Component,
@@ -267,7 +333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
267
333
  useExisting: SmartSelectComponent,
268
334
  multi: true,
269
335
  },
270
- ], template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"] }]
336
+ ], template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"] }]
271
337
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
272
338
  type: ContentChildren,
273
339
  args: [SmartSelectOptionComponent]
@@ -294,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
294
360
  }], typePrefix: [{
295
361
  type: Input
296
362
  }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb25lbnRzL3NyYy9saWIvc21hcnQtc2VsZWN0L3NtYXJ0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3NtYXJ0LXNlbGVjdC9zbWFydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBc0I5RSxNQUFNLE9BQU8sb0JBQW9CO0lBb0RYO0lBbkR5QixPQUFPLENBRXRDO0lBRUosUUFBUSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO0lBRXRFLG9CQUFvQjtJQUVwQixPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELDJCQUEyQjtJQUNsQixTQUFTLENBQVU7SUFFbkIsWUFBWSxHQUFHLGlCQUFpQixDQUFDO0lBRTFDLDJCQUEyQjtJQUUzQixXQUFXLEdBQUcscUJBQXFCLENBQUM7SUFFcEMscUJBQXFCO0lBQ1osS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUdyQixV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O3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLHNCQUFzQjs0QkFDakMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUdBRzRDLE9BQU87c0JBQW5ELGVBQWU7dUJBQUMsMEJBQTBCO2dCQUlqQyxRQUFRO3NCQUFqQixNQUFNO2dCQUlQLE9BQU87c0JBRE4sS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU21hcnRTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXNlbGVjdC1vcHRpb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3djby1zbWFydC1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU21hcnRTZWxlY3RDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBAQ29udGVudENoaWxkcmVuKFNtYXJ0U2VsZWN0T3B0aW9uQ29tcG9uZW50KSBvcHRpb25zOlxuICAgIHwgUXVlcnlMaXN0PFNtYXJ0U2VsZWN0T3B0aW9uQ29tcG9uZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0eXBlOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4oKTtcblxuICAvKiBJZCBkbyBlbGVtZW50byAqL1xuICBASW5wdXQoKVxuICBpbnB1dElkID0gJ3NlbGVjdF8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuXG4gIC8qIEF0dHIgbmFtZSBkbyBlbGVtZW50byAqL1xuICBASW5wdXQoKSBpbnB1dE5hbWU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgSWNvbk1hdGVyaWFsID0gJ2Fycm93X2Ryb3BfZG93bic7XG5cbiAgLyogUGxhY2Vob2xkZXIgZG8gc2VsZWN0ICovXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJ1NlbGVjaW9uZSB1bWEgb3DDp8Ojbyc7XG5cbiAgLyogTGFiZWwgZG8gc2VsZWN0ICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyAnO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAvKiBUZXh0byBleGliaWRvIHF1YW5kbyBuw6NvIGjDoSByZXN1bHRhZG9zICovXG4gIEBJbnB1dCgpXG4gIHRleHRFbXB0eSA9ICdOw6NvIGjDoSByZXN1bHRhZG9zIHBhcmEgYSBidXNjYSc7XG5cbiAgLyogaGFiaWxpdGFyIG9ww6fDo28gZGUgbXVsdGlwbGFzIHNlbGXDp8O1ZXMgKi9cbiAgQElucHV0KClcbiAgbXVsdGlTZWxlY3QgPSBmYWxzZTtcblxuICAvKiBMaW1pdGFyIHZpc3VhbGl6YcOnw6NvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyAqL1xuICBASW5wdXQoKSBcbiAgc2hvd01heFNlbGVjdGVkTGFiZWwgPSAwO1xuXG4gIC8qIFRpcG9zIHByw6kgZGVmaW5pZG9zIGRlIGNoZWNrYm94LCByYWRpbyBvdSBudWxsICovXG4gIEBJbnB1dCgpXG4gIHR5cGVQcmVmaXg6ICdjaGVja2JveCcgfCAncmFkaW8nIHwgbnVsbCA9IG51bGw7XG5cbiAgaXNNb2JpbGUgPSB3aW5kb3cuaW5uZXJXaWR0aCA8PSA3Njg7XG5cbiAgZm9ybVZhbHVlOiBhbnk7XG4gIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBwcmV2ZW50RXNjYXBlRm9jdXMgPSBmYWxzZTtcbiAgYXV0b2NvbXBsZXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBmaWx0ZXJlZE9wdGlvbnM6IGFueVtdID0gW107XG5cbiAgc2hvd0xpc3QgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH07XG5cbiAgLy8vIGVzdGFkb3MgZG8gY29udHJvbFxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWUgPSBvYmo7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKG9iaik7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBmbih2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvLy8gQWJlcnR1cmEgZSBmZWNoYW1lbnRvIGRhIGxpc3RhXG4gIG9uRm9jdXNJbihmb2N1cyA9IGZhbHNlKSB7XG4gICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZm9jdXM7XG4gICAgdGhpcy5zaG93TGlzdCA9IGZvY3VzO1xuICAgIHRoaXMucG9zaXRpb25Cb3goKTtcbiAgfVxuXG4gIC8vLyBoZXJlIGZ1bmN0aW9uIHRvIHBvc2l0aW9uIGJveCBlbGVtZW50IHRvcCBvciBib3R0b21cbiAgcG9zaXRpb25Cb3goKSB7XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRCb3ggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjb21wb25lbnRCb3gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50Qm94UG9zaXRpb24gPSBjb21wb25lbnRCb3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgaW5wdXRJZCA9IGNvbXBvbmVudEJveC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1maWVsZCcpO1xuICAgIGNvbnN0IGJveCA9IGNvbXBvbmVudEJveC5xdWVyeVNlbGVjdG9yKCcud2NvLXNtYXJ0U2VsZWN0LS1ib3gnKTtcbiAgICBjb25zdCBpbnB1dElkUG9zaXRpb24gPSBpbnB1dElkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBjb25zdCBwYWdlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGlmIChib3ggJiYgY29tcG9uZW50Qm94UG9zaXRpb24ueSArIDMyMCA+PSBwYWdlSGVpZ2h0KSB7XG4gICAgICBib3guc3R5bGUuYm90dG9tID0gaW5wdXRJZFBvc2l0aW9uICsgJ3B4JztcbiAgICAgIGJveC5zdHlsZS5oZWlnaHQgPSBgdmFyKC0td2NvLXNtYXJ0LXNlbGVjdC1ib3gtbWF4LWhlaWdodClgO1xuICAgICAgYm94LnN0eWxlLnRvcCA9ICdpbml0aWFsJztcbiAgICB9IGVsc2Uge1xuICAgICAgYm94LnN0eWxlLnRvcCA9IGlucHV0SWRQb3NpdGlvbiArICdweCc7XG4gICAgICBib3guc3R5bGUuYm90dG9tID0gJ2luaXRpYWwnO1xuICAgICAgYm94LnN0eWxlLmhlaWdodCA9IGBhdXRvYDtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChvcHRpb246IGFueSkge1xuICAgIGlmIChvcHRpb24uZGlzYWJsZWQgfHwgb3B0aW9uLnZpZXdPbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmZvcm1WYWx1ZTtcblxuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWU/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSB0aGlzLmZvcm1WYWx1ZS5maWx0ZXIoXG4gICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbSAhPT0gb3B0aW9uLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1WYWx1ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyQm94T3B0aW9ucygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBpcyBBcnJheSBbXVxuICAgICAgaWYgKCEhdGhpcy5mb3JtVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZm9ybVZhbHVlID0gW107XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1WYWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm1WYWx1ZSA9IFsuLi50aGlzLmZvcm1WYWx1ZSwgb3B0aW9uLnZhbHVlXTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZvcm1WYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlID0gb3B0aW9uLnZhbHVlO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKG9wdGlvbi52YWx1ZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgdGhpcy5zaG93TGlzdCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAob2xkVmFsdWUgIT09IHRoaXMuZm9ybVZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB0eXBlOiAndXBkYXRlVmFsdWUnLCB2YWx1ZTogdGhpcy5mb3JtVmFsdWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2hvdyBsYWJlbCBzcGFuXG4gIGdldCBzZWxlY3RlZExhYmVsKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gdGhpcy5vcHRpb25zPy5maW5kKFxuICAgICAgKG9wdGlvbikgPT5cbiAgICAgICAgdGhpcy5ub3JtYWxpemVUZXh0KFN0cmluZyhvcHRpb24udmFsdWUpKSA9PT1cbiAgICAgICAgdGhpcy5ub3JtYWxpemVUZXh0KFN0cmluZyh0aGlzLmZvcm1WYWx1ZSkpXG4gICAgKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24/LmxhYmVsIHx8ICcgJztcbiAgfVxuXG4gIC8vIHNob3cgbGFiZWwgbXVsdGkgc2VsZWN0XG4gIGdldCBzZWxlY3RlZExhYmVsTXVsdGkoKTogeyB2YWx1ZTogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1bXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5vcHRpb25zPy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgIHRoaXMuZm9ybVZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXG4gICAgKTtcblxuICAgIGlmICghc2VsZWN0ZWRPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZighdGhpcy5zaG93TWF4U2VsZWN0ZWRMYWJlbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9ucztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93TWF4U2VsZWN0ZWRMYWJlbCAmJiBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gdGhpcy5zaG93TWF4U2VsZWN0ZWRMYWJlbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9ucy5zbGljZSgwLCB0aGlzLnNob3dNYXhTZWxlY3RlZExhYmVsKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9ucztcbiAgfVxuXG4gIGdldCBzZWxlY3RlZExhYmVsTXVsdGlDb3VudCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHNob3cgPSB0aGlzLnNob3dNYXhTZWxlY3RlZExhYmVsIHx8IDA7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5vcHRpb25zPy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgIHRoaXMuZm9ybVZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXG4gICAgKTtcblxuICAgIGNvbnNvbGUubG9nKCdzZWxlY3RlZE9wdGlvbnMnLCBzZWxlY3RlZE9wdGlvbnMpO1xuICAgIGNvbnNvbGUubG9nKCdzaG93Jywgc2hvdyk7XG4gICAgaWYgKCFzZWxlY3RlZE9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKHNob3cgPiAwICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiBzaG93KSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCAtIHNob3c7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZW1vdmVJdGVtKG9wdGlvbjogYW55KSB7XG4gICAgdGhpcy5vblNlbGVjdChvcHRpb24pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93TGlzdCA9IGZhbHNlOyAgICBcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgb25LZXlQcmVzcyhldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnJlbmRlckJveE9wdGlvbnMoKTtcbiAgfVxuXG4gIG9uRmlsdGVyKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB0aGlzLnJlbmRlckJveE9wdGlvbnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlbmRlckJveE9wdGlvbnModmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMucmVuZGVyQm94T3B0aW9ucygpO1xuICAgIHRoaXMucG9zaXRpb25Cb3goKTtcbiAgfVxuXG4gIG9uRm9jdXNPdXQoKSB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRFc2NhcGVGb2N1cyAmJiAhdGhpcy5pc01vYmlsZSkge1xuICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0xpc3QgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjbG9zZUxpc3QoKSB7XG4gICAgdGhpcy5wcmV2ZW50RXNjYXBlRm9jdXMgPSB0cnVlO1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93TGlzdCA9IGZhbHNlO1xuICB9XG5cbiAgc2VsZWN0ZWRWYWx1ZShvcHRpb246IHsgdmFsdWU6IGFueTsgbGFiZWw6IHN0cmluZzsgc2FmZUh0bWxDb250ZW50OiBhbnkgfSkge1xuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtVmFsdWU/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5mb3JtVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckJveE9wdGlvbnMoZmlsdGVyVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMgfHwgIXRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcbiAgICAgID8ubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgIGljb25QcmVmaXg6IG9wdGlvbi5pY29uUHJlZml4LFxuICAgICAgICAgIGh0bWxMYWJlbDogb3B0aW9uLnNhZmVIdG1sQ29udGVudCB8fCBvcHRpb24ubGFiZWwsXG4gICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICB2aWV3T25seTogb3B0aW9uLnZpZXdPbmx5LFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZpbHRlciA9IHRoaXMubm9ybWFsaXplVGV4dChmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRMYWJlbCA9IHRoaXMubm9ybWFsaXplVGV4dChcbiAgICAgICAgICBvcHRpb24uaHRtbExhYmVsPy50b1N0cmluZygpIHx8ICcnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkTGFiZWwuaW5jbHVkZXMobm9ybWFsaXplZEZpbHRlcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVGV4dCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAucmVwbGFjZSgvW1xcV19dKy9nLCAnJykgLy8gUmVtb3ZlIGNhcmFjdGVyZXMgZXNwZWNpYWlzIGUgc3VibGluaGFkb3NcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwid2NvLXNtYXJ0U2VsZWN0XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICd3Y28tc21hcnRTZWxlY3QtLW9wZW4nOiBzaG93TGlzdCxcbiAgICAnd2NvLXNtYXJ0U2VsZWN0LS1pc01vYmlsZSc6IGlzTW9iaWxlLFxufVwiXG4gIChyZXNpemUpPVwib25SZXNpemUoKVwiXG4gIChtb3VzZWxlYXZlKT1cIm9uRm9jdXNPdXQoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCI+XG4gICAgPGlucHV0XG4gICAgICAqbmdJZj1cIiFtdWx0aVNlbGVjdFwiXG4gICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2Zvcm0tZmllbGQtLWVycm9yJzpcbiAgICAgICAgICBhdXRvY29tcGxldGVDb250cm9sLmludmFsaWQgJiYgYXV0b2NvbXBsZXRlQ29udHJvbC50b3VjaGVkXG4gICAgICB9XCJcbiAgICAgIFtkaXNhYmxlZF09XCJhdXRvY29tcGxldGVDb250cm9sLmRpc2FibGVkXCJcbiAgICAgIGlkPVwie3sgaW5wdXRJZCA/IGlucHV0SWQgOiAnJyB9fVwiXG4gICAgICBuYW1lPVwie3sgaW5wdXROYW1lID8gaW5wdXROYW1lIDogJycgfX1cIlxuICAgICAgKGNsaWNrKT1cIm9uRm9jdXNJbih0cnVlKVwiXG4gICAgICAoZm9jdXNpbik9XCJvbkZvY3VzSW4oKVwiXG4gICAgICAoa2V5dXAuZXNjYXBlKT1cIm9uRm9jdXNPdXQoKVwiXG4gICAgICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbdmFsdWVdPVwic2VsZWN0ZWRMYWJlbFwiXG4gICAgICBhcmlhLWxhYmVsPVwiU2VsZWNpb25lIHVtYSBvcMOnw6NvXCJcbiAgICAvPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwibXVsdGlTZWxlY3RcIlxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkX19pbnB1dCByZWFkb25seSBtdWx0aVNlbGVjdFwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2Zvcm0tZmllbGQtLWVycm9yJzogYXV0b2NvbXBsZXRlQ29udHJvbC5pbnZhbGlkICYmIGF1dG9jb21wbGV0ZUNvbnRyb2wudG91Y2hlZCxcbiAgICAgICAgICAgICAgICAnZm9ybS1maWVsZC0tZGlzYWJsZWQnOiBhdXRvY29tcGxldGVDb250cm9sLmRpc2FibGVkLFxuICAgICAgICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1c0luKHRydWUpXCJcbiAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgIChrZXl1cC5lc2NhcGUpPVwib25Gb2N1c091dCgpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkTGFiZWxNdWx0aS5sZW5ndGhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjaW9uZSB1bWEgb3DDp8OjbycgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZExhYmVsTXVsdGkubGVuZ3RoXCI+XG4gICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBvcHRpb25TZWxlY3RlZCBvZiBzZWxlY3RlZExhYmVsTXVsdGlcIiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtaXRlbVwiPlxuICAgICAgICAgIHt7b3B0aW9uU2VsZWN0ZWQubGFiZWx9fSBcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0ob3B0aW9uU2VsZWN0ZWQpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Y2xvc2U8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LWl0ZW1cIiAgKm5nSWY9XCJzZWxlY3RlZExhYmVsTXVsdGlDb3VudCA+PSAxXCI+XG4gICAgICAgICAgICAre3tzZWxlY3RlZExhYmVsTXVsdGlDb3VudH19IFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgICA8bGFiZWw+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBJY29uTWF0ZXJpYWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ3Y28tc21hcnRTZWxlY3QtLWJveFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3djby1zbWFydFNlbGVjdC0tYm94LS1vcGVuJzogc2hvd0xpc3QgJiYgIWF1dG9jb21wbGV0ZUNvbnRyb2wuZGlzYWJsZWRcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ3Y28tc21hcnRTZWxlY3QtLWlzTW9iaWxlLWNsb3NlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjbG9zZUxpc3QoKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBidG4tb3V0bGluZSBtYi1uYW5vXCJcbiAgICAgID5cbiAgICAgICAgZmVjaGFyXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8dWw+XG4gICAgICA8bGlcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0ZWQtZmlsdGVyXCJcbiAgICAgICAgKm5nSWY9XCJzaG93TGlzdCAmJiBzaG93U2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJidXNjYXJcIlxuICAgICAgICAgIChrZXl1cCk9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIHRocm91Z2ggc2l0ZSBjb250ZW50XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW3RhYmluZGV4XT1cImkgKyAxXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3djby1zbWFydC1zZWxlY3RlZCc6IHNlbGVjdGVkVmFsdWUob3B0aW9uKSxcbiAgICAgICAgICAgICd3Yy1zbWFydC1zZWxlY3QtZGlzYWJsZWQtb3B0aW9uJzogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgJ3djLXNtYXJ0LXNlbGVjdC12aWV3LW9ubHktb3B0aW9uJzogb3B0aW9uLnZpZXdPbmx5LFxuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtbGFiZWwtcHJlZml4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGVQcmVmaXggPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlKG9wdGlvbikgPyBcImNoZWNrX2JveFwiIDogXCJjaGVja19ib3hfb3V0bGluZV9ibGFua1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGVQcmVmaXggPT09ICdyYWRpbydcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlKG9wdGlvbilcbiAgICAgICAgICAgICAgICAgID8gXCJyYWRpb19idXR0b25fY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICA6IFwicmFkaW9fYnV0dG9uX3VuY2hlY2tlZFwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgISFvcHRpb24uaWNvblByZWZpeCAmJlxuICAgICAgICAgICAgICB0eXBlUHJlZml4ICE9PSAncmFkaW8nICYmXG4gICAgICAgICAgICAgIHR5cGVQcmVmaXggIT09ICdjaGVja2JveCdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxuICAgICAgICAgICAgICB7eyBvcHRpb24uaWNvblByZWZpeCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LWxhYmVsXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbi5odG1sTGFiZWxcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZGlzcGxheS1ib2R5XCI+e3sgdGV4dEVtcHR5IH19PC9wPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jb21wb25lbnRzL3NyYy9saWIvc21hcnQtc2VsZWN0L3NtYXJ0LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9uZW50cy9zcmMvbGliL3NtYXJ0LXNlbGVjdC9zbWFydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBc0I5RSxNQUFNLE9BQU8sb0JBQW9CO0lBb0RYO0lBbkR5QixPQUFPLENBRXRDO0lBRUosUUFBUSxHQUFHLElBQUksWUFBWSxFQUFnQyxDQUFDO0lBRXRFLG9CQUFvQjtJQUVwQixPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlELDJCQUEyQjtJQUNsQixTQUFTLENBQVU7SUFFbkIsWUFBWSxHQUFHLGlCQUFpQixDQUFDO0lBRTFDLDJCQUEyQjtJQUUzQixXQUFXLEdBQUcscUJBQXFCLENBQUM7SUFFcEMscUJBQXFCO0lBQ1osS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUdyQixV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b0I7c0JBRG5CLEtBQUs7Z0JBS04sVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU21hcnRTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LXNlbGVjdC1vcHRpb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3djby1zbWFydC1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbWFydFNlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU21hcnRTZWxlY3RDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydFNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBAQ29udGVudENoaWxkcmVuKFNtYXJ0U2VsZWN0T3B0aW9uQ29tcG9uZW50KSBvcHRpb25zOlxuICAgIHwgUXVlcnlMaXN0PFNtYXJ0U2VsZWN0T3B0aW9uQ29tcG9uZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0eXBlOiBzdHJpbmc7IHZhbHVlOiBhbnkgfT4oKTtcblxuICAvKiBJZCBkbyBlbGVtZW50byAqL1xuICBASW5wdXQoKVxuICBpbnB1dElkID0gJ3NlbGVjdF8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xuXG4gIC8qIEF0dHIgbmFtZSBkbyBlbGVtZW50byAqL1xuICBASW5wdXQoKSBpbnB1dE5hbWU/OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgSWNvbk1hdGVyaWFsID0gJ2Fycm93X2Ryb3BfZG93bic7XG5cbiAgLyogUGxhY2Vob2xkZXIgZG8gc2VsZWN0ICovXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyID0gJ1NlbGVjaW9uZSB1bWEgb3DDp8Ojbyc7XG5cbiAgLyogTGFiZWwgZG8gc2VsZWN0ICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyAnO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dTZWFyY2ggPSBmYWxzZTtcblxuICAvKiBUZXh0byBleGliaWRvIHF1YW5kbyBuw6NvIGjDoSByZXN1bHRhZG9zICovXG4gIEBJbnB1dCgpXG4gIHRleHRFbXB0eSA9ICdOw6NvIGjDoSByZXN1bHRhZG9zIHBhcmEgYSBidXNjYSc7XG5cbiAgLyogaGFiaWxpdGFyIG9ww6fDo28gZGUgbXVsdGlwbGFzIHNlbGXDp8O1ZXMgKi9cbiAgQElucHV0KClcbiAgbXVsdGlTZWxlY3QgPSBmYWxzZTtcblxuICAvKiBMaW1pdGFyIHZpc3VhbGl6YcOnw6NvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyAqL1xuICBASW5wdXQoKVxuICBzaG93TWF4U2VsZWN0ZWRMYWJlbCA9IDA7XG5cbiAgLyogVGlwb3MgcHLDqSBkZWZpbmlkb3MgZGUgY2hlY2tib3gsIHJhZGlvIG91IG51bGwgKi9cbiAgQElucHV0KClcbiAgdHlwZVByZWZpeDogJ2NoZWNrYm94JyB8ICdyYWRpbycgfCBudWxsID0gbnVsbDtcblxuICBpc01vYmlsZSA9IHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcblxuICBmb3JtVmFsdWU6IGFueTtcbiAgaXNGb2N1c2VkID0gZmFsc2U7XG4gIHByZXZlbnRFc2NhcGVGb2N1cyA9IGZhbHNlO1xuICBhdXRvY29tcGxldGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIGZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcblxuICBzaG93TGlzdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBcbiAgfVxuXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XG4gIH07XG5cbiAgLy8vIGVzdGFkb3MgZG8gY29udHJvbFxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsdWUgPSBvYmo7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKG9iaik7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBmbih2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHZhbGlkYXRlKF9jb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1WYWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvLy8gQWJlcnR1cmEgZSBmZWNoYW1lbnRvIGRhIGxpc3RhXG4gIG9uRm9jdXNJbihmb2N1cyA9IGZhbHNlKSB7XG4gICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuaXNGb2N1c2VkID0gZm9jdXM7XG4gICAgdGhpcy5zaG93TGlzdCA9IGZvY3VzO1xuICAgIHRoaXMucG9zaXRpb25Cb3goKTtcbiAgfVxuXG4gIC8vLyBoZXJlIGZ1bmN0aW9uIHRvIHBvc2l0aW9uIGJveCBlbGVtZW50IHRvcCBvciBib3R0b21cbiAgcG9zaXRpb25Cb3goKSB7XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRCb3ggPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFjb21wb25lbnRCb3gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50Qm94UG9zaXRpb24gPSBjb21wb25lbnRCb3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgaW5wdXRJZCA9IGNvbXBvbmVudEJveC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1maWVsZCcpO1xuICAgIGNvbnN0IGJveCA9IGNvbXBvbmVudEJveC5xdWVyeVNlbGVjdG9yKCcud2NvLXNtYXJ0U2VsZWN0LS1ib3gnKTtcbiAgICBjb25zdCBpbnB1dElkUG9zaXRpb24gPSBpbnB1dElkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcbiAgICBjb25zdCBwYWdlSGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIGlmIChib3ggJiYgY29tcG9uZW50Qm94UG9zaXRpb24ueSArIDMyMCA+PSBwYWdlSGVpZ2h0KSB7XG4gICAgICBib3guc3R5bGUuYm90dG9tID0gaW5wdXRJZFBvc2l0aW9uICsgJ3B4JztcbiAgICAgIGJveC5zdHlsZS5oZWlnaHQgPSBgdmFyKC0td2NvLXNtYXJ0LXNlbGVjdC1ib3gtbWF4LWhlaWdodClgO1xuICAgICAgYm94LnN0eWxlLnRvcCA9ICdpbml0aWFsJztcbiAgICB9IGVsc2Uge1xuICAgICAgYm94LnN0eWxlLnRvcCA9IGlucHV0SWRQb3NpdGlvbiArICdweCc7XG4gICAgICBib3guc3R5bGUuYm90dG9tID0gJ2luaXRpYWwnO1xuICAgICAgYm94LnN0eWxlLmhlaWdodCA9IGBhdXRvYDtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdChvcHRpb24/OiBhbnkpIHtcbiAgICBpZiAob3B0aW9uLmRpc2FibGVkIHx8IG9wdGlvbi52aWV3T25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtVmFsdWU7XG5cbiAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb24udmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNvbXBhcmVNdWx0aVZhbHVlc0FycmF5KG9wdGlvbik7XG4gICAgICAgIGNvbnN0IGhhc1ZhbHVlT3B0aW9uID0gbGlzdC5zb21lKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBpZiAoaGFzVmFsdWVPcHRpb24pIHtcbiAgICAgICAgICB0aGlzLmZvcm1WYWx1ZSA9IGxpc3RcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gIWl0ZW0uc2VsZWN0ZWQpXG4gICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSBbLi4uKHRoaXMuZm9ybVZhbHVlIHx8IFtdKSwgb3B0aW9uLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmZvcm1WYWx1ZT8uaW5kZXhPZihvcHRpb24udmFsdWUpO1xuICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCAmJiBpbmRleCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy5mb3JtVmFsdWU/LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5mb3JtVmFsdWUgPSBbLi4uKHRoaXMuZm9ybVZhbHVlIHx8IFtdKSwgb3B0aW9uLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKHRoaXMuZm9ybVZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtVmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUob3B0aW9uLnZhbHVlKTtcbiAgICAgIHRoaXMuc2hvd0xpc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAob2xkVmFsdWUgIT09IHRoaXMuZm9ybVZhbHVlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB0eXBlOiAndXBkYXRlVmFsdWUnLCB2YWx1ZTogdGhpcy5mb3JtVmFsdWUgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKCk7XG4gIH1cblxuICAvLyBTaG93IGxhYmVsIHNwYW5cbiAgZ2V0IHNlbGVjdGVkTGFiZWwoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLm9wdGlvbnM/LmZpbmQoXG4gICAgICAob3B0aW9uKSA9PlxuICAgICAgICB0aGlzLm5vcm1hbGl6ZVRleHQoU3RyaW5nKG9wdGlvbi52YWx1ZSkpID09PVxuICAgICAgICB0aGlzLm5vcm1hbGl6ZVRleHQoU3RyaW5nKHRoaXMuZm9ybVZhbHVlKSlcbiAgICApO1xuICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbj8ubGFiZWwgfHwgJyAnO1xuICB9XG5cbiAgLy8gc2hvdyBsYWJlbCBtdWx0aSBzZWxlY3RcbiAgZ2V0IHNlbGVjdGVkTGFiZWxNdWx0aSgpOiB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdIHtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM/LmZpbHRlcigob3B0aW9uKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbi52YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZVZhbHVlQXJyYXkob3B0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1WYWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghc2VsZWN0ZWRPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc2hvd01heFNlbGVjdGVkTGFiZWwpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG93TWF4U2VsZWN0ZWRMYWJlbCAmJlxuICAgICAgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IHRoaXMuc2hvd01heFNlbGVjdGVkTGFiZWxcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnMuc2xpY2UoMCwgdGhpcy5zaG93TWF4U2VsZWN0ZWRMYWJlbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgdmFsdWVUb0FycmF5KG9wdGlvbnM6IGFueSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgICBjb25zdCB2YWx1ZTogYW55W10gPSBbXTtcbiAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zW2tleV0gJiYgXG4gICAgICAgIG9wdGlvbnNba2V5XSAhPT0gJycgJiZcbiAgICAgICAgdHlwZW9mIG9wdGlvbnNba2V5XSAhPT0gJ29iamVjdCcgJiYgXG4gICAgICAgIHR5cGVvZiBvcHRpb25zW2tleV0gIT09ICdmdW5jdGlvbicmJiBcbiAgICAgICAgdHlwZW9mIG9wdGlvbnNba2V5XSAhPT0gJ2Jvb2xlYW4nXG4gICAgICApIHtcbiAgICAgICAgdmFsdWUucHVzaChvcHRpb25zW2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZVZhbHVlQXJyYXkob3B0aW9uOiBhbnksIHZhbHVlID0gdGhpcy5mb3JtVmFsdWUpOiBhbnlbXSB7XG4gICAgaWYgKG9wdGlvbiAmJiBvcHRpb24udmFsdWUpIHtcbiAgICAgIGNvbnN0IHZhbHVlc0l0ZW1zID0gdGhpcy52YWx1ZVRvQXJyYXkob3B0aW9uLnZhbHVlKTtcbiAgICAgIHJldHVybiB2YWx1ZS5zb21lKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbUFycmF5ID0gdGhpcy52YWx1ZVRvQXJyYXkoaXRlbSk7XG4gICAgICAgIHJldHVybiBpdGVtQXJyYXkuZXZlcnkoKGl0ZW1WYWx1ZTogYW55KSA9PlxuICAgICAgICAgIHZhbHVlc0l0ZW1zLmluY2x1ZGVzKGl0ZW1WYWx1ZSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcml2YXRlIGNvbXBhcmVNdWx0aVZhbHVlc0FycmF5KG9wdGlvbjogYW55LCB2YWx1ZSA9IHRoaXMuZm9ybVZhbHVlKTogYW55W10ge1xuICAgIGlmIChvcHRpb24gJiYgb3B0aW9uLnZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZXNJdGVtcyA9IHRoaXMudmFsdWVUb0FycmF5KG9wdGlvbi52YWx1ZSk7XG4gICAgICBjb25zdCBmb3JtVmFsdWVBcnJheSA9IHZhbHVlLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1BcnJheSA9IHRoaXMudmFsdWVUb0FycmF5KGl0ZW0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IGl0ZW1BcnJheS5zb21lKChpdGVtVmFsdWU6IGFueSkgPT5cbiAgICAgICAgICAgIHZhbHVlc0l0ZW1zLmluY2x1ZGVzKGl0ZW1WYWx1ZSlcbiAgICAgICAgICApLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICAvLyBSZW1vdmUgZHVwbGljYXRlIGl0ZW1zXG4gICAgICBjb25zdCB1bmlxdWVGb3JtVmFsdWVBcnJheSA9IEFycmF5LmZyb20oXG4gICAgICAgIG5ldyBTZXQoZm9ybVZhbHVlQXJyYXkubWFwKChpdGVtOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KGl0ZW0pKSlcbiAgICAgICkubWFwKChpdGVtOiBhbnkpID0+IEpTT04ucGFyc2UoaXRlbSkpO1xuXG4gICAgICByZXR1cm4gdW5pcXVlRm9ybVZhbHVlQXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZExhYmVsTXVsdGlDb3VudCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHNob3cgPSB0aGlzLnNob3dNYXhTZWxlY3RlZExhYmVsIHx8IDA7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdGhpcy5vcHRpb25zPy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgIHRoaXMuZm9ybVZhbHVlPy5pbmNsdWRlcyhvcHRpb24udmFsdWUpXG4gICAgKTtcbiAgICBpZiAoIXNlbGVjdGVkT3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoc2hvdyA+IDAgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IHNob3cpIHtcbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoIC0gc2hvdztcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0ob3B0aW9uOiBhbnkpIHtcbiAgICB0aGlzLm9uU2VsZWN0KG9wdGlvbik7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dMaXN0ID0gZmFsc2U7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIG9uS2V5UHJlc3MoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKCk7XG4gIH1cblxuICBvbkZpbHRlcihldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5yZW5kZXJCb3hPcHRpb25zKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvblJlc2l6ZSgpIHtcbiAgICB0aGlzLnJlbmRlckJveE9wdGlvbnMoKTtcbiAgICB0aGlzLnBvc2l0aW9uQm94KCk7XG4gIH1cblxuICBvbkZvY3VzT3V0KCkge1xuICAgIGlmICghdGhpcy5wcmV2ZW50RXNjYXBlRm9jdXMgJiYgIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dMaXN0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VMaXN0KCkge1xuICAgIHRoaXMucHJldmVudEVzY2FwZUZvY3VzID0gdHJ1ZTtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0xpc3QgPSBmYWxzZTtcbiAgfVxuXG4gIHNlbGVjdGVkVmFsdWUob3B0aW9uOiB7IHZhbHVlOiBhbnk7IGxhYmVsOiBzdHJpbmc7IHNhZmVIdG1sQ29udGVudDogYW55IH0pIHtcbiAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb24udmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChvcHRpb24gJiYgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzSXRlbXMgPSB0aGlzLnZhbHVlVG9BcnJheShvcHRpb24udmFsdWUpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1WYWx1ZS5zb21lKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1BcnJheSA9IHRoaXMudmFsdWVUb0FycmF5KGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1BcnJheS5ldmVyeSgoaXRlbVZhbHVlOiBhbnkpID0+XG4gICAgICAgICAgICAgIHZhbHVlc0l0ZW1zLmluY2x1ZGVzKGl0ZW1WYWx1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1WYWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uLnZhbHVlID09PSB0aGlzLmZvcm1WYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyQm94T3B0aW9ucyhmaWx0ZXJWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAhdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICAgICAgPy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgaWNvblByZWZpeDogb3B0aW9uLmljb25QcmVmaXgsXG4gICAgICAgICAgaHRtbExhYmVsOiBvcHRpb24uc2FmZUh0bWxDb250ZW50IHx8IG9wdGlvbi5sYWJlbCxcbiAgICAgICAgICBkaXNhYmxlZDogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgIHZpZXdPbmx5OiBvcHRpb24udmlld09ubHksXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub3JtYWxpemVkRmlsdGVyID0gdGhpcy5ub3JtYWxpemVUZXh0KGZpbHRlclZhbHVlKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZExhYmVsID0gdGhpcy5ub3JtYWxpemVUZXh0KFxuICAgICAgICAgIG9wdGlvbi5odG1sTGFiZWw/LnRvU3RyaW5nKCkgfHwgJydcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRMYWJlbC5pbmNsdWRlcyhub3JtYWxpemVkRmlsdGVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVUZXh0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRleHRcbiAgICAgIC5yZXBsYWNlKC9bXFxXX10rL2csICcnKSAvLyBSZW1vdmUgY2FyYWN0ZXJlcyBlc3BlY2lhaXMgZSBzdWJsaW5oYWRvc1xuICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ3Y28tc21hcnRTZWxlY3RcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3djby1zbWFydFNlbGVjdC0tb3Blbic6IHNob3dMaXN0LFxuICAgICd3Y28tc21hcnRTZWxlY3QtLWlzTW9iaWxlJzogaXNNb2JpbGUsXG59XCJcbiAgKHJlc2l6ZSk9XCJvblJlc2l6ZSgpXCJcbiAgKG1vdXNlbGVhdmUpPVwib25Gb2N1c091dCgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRcIj5cbiAgICA8aW5wdXRcbiAgICAgICpuZ0lmPVwiIW11bHRpU2VsZWN0XCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZF9faW5wdXRcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnZm9ybS1maWVsZC0tZXJyb3InOlxuICAgICAgICAgIGF1dG9jb21wbGV0ZUNvbnRyb2wuaW52YWxpZCAmJiBhdXRvY29tcGxldGVDb250cm9sLnRvdWNoZWRcbiAgICAgIH1cIlxuICAgICAgW2Rpc2FibGVkXT1cImF1dG9jb21wbGV0ZUNvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgaWQ9XCJ7eyBpbnB1dElkID8gaW5wdXRJZCA6ICcnIH19XCJcbiAgICAgIG5hbWU9XCJ7eyBpbnB1dE5hbWUgPyBpbnB1dE5hbWUgOiAnJyB9fVwiXG4gICAgICAoY2xpY2spPVwib25Gb2N1c0luKHRydWUpXCJcbiAgICAgIChmb2N1c2luKT1cIm9uRm9jdXNJbigpXCJcbiAgICAgIChrZXl1cC5lc2NhcGUpPVwib25Gb2N1c091dCgpXCJcbiAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZExhYmVsXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJTZWxlY2lvbmUgdW1hIG9ww6fDo29cIlxuICAgIC8+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJtdWx0aVNlbGVjdFwiXG4gICAgICBjbGFzcz1cImZvcm0tZmllbGRfX2lucHV0IHJlYWRvbmx5IG11bHRpU2VsZWN0XCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAnZm9ybS1maWVsZC0tZXJyb3InOiBhdXRvY29tcGxldGVDb250cm9sLmludmFsaWQgJiYgYXV0b2NvbXBsZXRlQ29udHJvbC50b3VjaGVkLFxuICAgICAgICAgICAgICAgICdmb3JtLWZpZWxkLS1kaXNhYmxlZCc6IGF1dG9jb21wbGV0ZUNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgICB9XCJcbiAgICAgIChjbGljayk9XCJvbkZvY3VzSW4odHJ1ZSlcIlxuICAgICAgKGZvY3VzaW4pPVwib25Gb2N1c0luKClcIlxuICAgICAgKGtleXVwLmVzY2FwZSk9XCJvbkZvY3VzT3V0KClcIlxuICAgID5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkTGFiZWxNdWx0aS5sZW5ndGhcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfHwgJ1NlbGVjaW9uZSB1bWEgb3DDp8OjbycgfX08L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZExhYmVsTXVsdGkubGVuZ3RoXCI+XG4gICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBvcHRpb25TZWxlY3RlZCBvZiBzZWxlY3RlZExhYmVsTXVsdGlcIiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtaXRlbVwiPlxuICAgICAgICAgIHt7b3B0aW9uU2VsZWN0ZWQubGFiZWx9fSBcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0ob3B0aW9uU2VsZWN0ZWQpXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Y2xvc2U8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LWl0ZW1cIiAgKm5nSWY9XCJzZWxlY3RlZExhYmVsTXVsdGlDb3VudCA+PSAxXCI+XG4gICAgICAgICAgICAre3tzZWxlY3RlZExhYmVsTXVsdGlDb3VudH19IFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgICA8bGFiZWw+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj57eyBJY29uTWF0ZXJpYWwgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ3Y28tc21hcnRTZWxlY3QtLWJveFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3djby1zbWFydFNlbGVjdC0tYm94LS1vcGVuJzogc2hvd0xpc3QgJiYgIWF1dG9jb21wbGV0ZUNvbnRyb2wuZGlzYWJsZWRcbiAgICB9XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ3Y28tc21hcnRTZWxlY3QtLWlzTW9iaWxlLWNsb3NlXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjbG9zZUxpc3QoKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeSBidG4tb3V0bGluZSBtYi1uYW5vXCJcbiAgICAgID5cbiAgICAgICAgZmVjaGFyXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8dWw+XG4gICAgICA8bGlcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0ZWQtZmlsdGVyXCJcbiAgICAgICAgKm5nSWY9XCJzaG93TGlzdCAmJiBzaG93U2VhcmNoXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJidXNjYXJcIlxuICAgICAgICAgIChrZXl1cCk9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIHRocm91Z2ggc2l0ZSBjb250ZW50XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIC8+XG4gICAgICA8L2xpPlxuICAgICAgPGxpXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgW3RhYmluZGV4XT1cImkgKyAxXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3djby1zbWFydC1zZWxlY3RlZCc6IHNlbGVjdGVkVmFsdWUob3B0aW9uKSxcbiAgICAgICAgICAgICd3Yy1zbWFydC1zZWxlY3QtZGlzYWJsZWQtb3B0aW9uJzogb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgJ3djLXNtYXJ0LXNlbGVjdC12aWV3LW9ubHktb3B0aW9uJzogb3B0aW9uLnZpZXdPbmx5LFxuICAgICAgICB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0KG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIndjby1zbWFydC1zZWxlY3QtbGFiZWwtcHJlZml4XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGVQcmVmaXggPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlKG9wdGlvbikgPyBcImNoZWNrX2JveFwiIDogXCJjaGVja19ib3hfb3V0bGluZV9ibGFua1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGVQcmVmaXggPT09ICdyYWRpbydcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMtb3V0bGluZWRcIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlKG9wdGlvbilcbiAgICAgICAgICAgICAgICAgID8gXCJyYWRpb19idXR0b25fY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICA6IFwicmFkaW9fYnV0dG9uX3VuY2hlY2tlZFwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgISFvcHRpb24uaWNvblByZWZpeCAmJlxuICAgICAgICAgICAgICB0eXBlUHJlZml4ICE9PSAncmFkaW8nICYmXG4gICAgICAgICAgICAgIHR5cGVQcmVmaXggIT09ICdjaGVja2JveCdcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxuICAgICAgICAgICAgICB7eyBvcHRpb24uaWNvblByZWZpeCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJ3Y28tc21hcnQtc2VsZWN0LWxhYmVsXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbi5odG1sTGFiZWxcIlxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9saT5cbiAgICAgIDxsaSAqbmdJZj1cIiFmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiZGlzcGxheS1ib2R5XCI+e3sgdGV4dEVtcHR5IH19PC9wPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1028,30 +1028,38 @@ class SmartSelectComponent {
1028
1028
  }
1029
1029
  const oldValue = this.formValue;
1030
1030
  if (this.multiSelect) {
1031
- if (this.formValue?.includes(option.value)) {
1032
- this.formValue = this.formValue.filter((item) => item !== option.value);
1033
- this.autocompleteControl.setValue(this.formValue);
1034
- this.renderBoxOptions();
1035
- return;
1031
+ if (typeof option.value === 'object') {
1032
+ const list = this.compareMultiValuesArray(option);
1033
+ const hasValueOption = list.some((item) => item.selected);
1034
+ if (hasValueOption) {
1035
+ this.formValue = list
1036
+ .filter((item) => !item.selected)
1037
+ .map((item) => item.item);
1038
+ }
1039
+ else {
1040
+ this.formValue = [...(this.formValue || []), option.value];
1041
+ }
1036
1042
  }
1037
- // is Array []
1038
- if (!!this.formValue === false) {
1039
- this.formValue = [];
1040
- this.autocompleteControl.setValue(this.formValue);
1043
+ else {
1044
+ const index = this.formValue?.indexOf(option.value);
1045
+ if (index !== undefined && index > -1) {
1046
+ this.formValue?.splice(index, 1);
1047
+ }
1048
+ else {
1049
+ this.formValue = [...(this.formValue || []), option.value];
1050
+ }
1041
1051
  }
1042
- this.formValue = [...this.formValue, option.value];
1043
1052
  this.autocompleteControl.setValue(this.formValue);
1044
1053
  }
1045
1054
  else {
1046
1055
  this.formValue = option.value;
1047
1056
  this.autocompleteControl.setValue(option.value);
1048
- }
1049
- if (!this.multiSelect) {
1050
1057
  this.showList = false;
1051
1058
  }
1052
1059
  if (oldValue !== this.formValue) {
1053
1060
  this.onChange.emit({ type: 'updateValue', value: this.formValue });
1054
1061
  }
1062
+ this.renderBoxOptions();
1055
1063
  }
1056
1064
  // Show label span
1057
1065
  get selectedLabel() {
@@ -1061,23 +1069,70 @@ class SmartSelectComponent {
1061
1069
  }
1062
1070
  // show label multi select
1063
1071
  get selectedLabelMulti() {
1064
- const selectedOptions = this.options?.filter((option) => this.formValue?.includes(option.value));
1072
+ const selectedOptions = this.options?.filter((option) => {
1073
+ if (typeof option.value === 'object') {
1074
+ return this.compareValueArray(option);
1075
+ }
1076
+ else {
1077
+ return this.formValue?.includes(option.value);
1078
+ }
1079
+ });
1065
1080
  if (!selectedOptions?.length) {
1066
1081
  return [];
1067
1082
  }
1068
1083
  if (!this.showMaxSelectedLabel) {
1069
1084
  return selectedOptions;
1070
1085
  }
1071
- if (this.showMaxSelectedLabel && selectedOptions.length > this.showMaxSelectedLabel) {
1086
+ if (this.showMaxSelectedLabel &&
1087
+ selectedOptions.length > this.showMaxSelectedLabel) {
1072
1088
  return selectedOptions.slice(0, this.showMaxSelectedLabel);
1073
1089
  }
1074
1090
  return selectedOptions;
1075
1091
  }
1092
+ valueToArray(options) {
1093
+ const keys = Object.keys(options);
1094
+ const value = [];
1095
+ keys.forEach((key) => {
1096
+ if (options[key] &&
1097
+ options[key] !== '' &&
1098
+ typeof options[key] !== 'object' &&
1099
+ typeof options[key] !== 'function' &&
1100
+ typeof options[key] !== 'boolean') {
1101
+ value.push(options[key]);
1102
+ }
1103
+ });
1104
+ return value;
1105
+ }
1106
+ compareValueArray(option, value = this.formValue) {
1107
+ if (option && option.value) {
1108
+ const valuesItems = this.valueToArray(option.value);
1109
+ return value.some((item) => {
1110
+ const itemArray = this.valueToArray(item);
1111
+ return itemArray.every((itemValue) => valuesItems.includes(itemValue));
1112
+ });
1113
+ }
1114
+ return [];
1115
+ }
1116
+ compareMultiValuesArray(option, value = this.formValue) {
1117
+ if (option && option.value) {
1118
+ const valuesItems = this.valueToArray(option.value);
1119
+ const formValueArray = value.map((item, index) => {
1120
+ const itemArray = this.valueToArray(item);
1121
+ return {
1122
+ index,
1123
+ item,
1124
+ selected: itemArray.some((itemValue) => valuesItems.includes(itemValue)),
1125
+ };
1126
+ });
1127
+ // Remove duplicate items
1128
+ const uniqueFormValueArray = Array.from(new Set(formValueArray.map((item) => JSON.stringify(item)))).map((item) => JSON.parse(item));
1129
+ return uniqueFormValueArray;
1130
+ }
1131
+ return [];
1132
+ }
1076
1133
  get selectedLabelMultiCount() {
1077
1134
  const show = this.showMaxSelectedLabel || 0;
1078
1135
  const selectedOptions = this.options?.filter((option) => this.formValue?.includes(option.value));
1079
- console.log('selectedOptions', selectedOptions);
1080
- console.log('show', show);
1081
1136
  if (!selectedOptions?.length) {
1082
1137
  return 0;
1083
1138
  }
@@ -1123,7 +1178,18 @@ class SmartSelectComponent {
1123
1178
  }
1124
1179
  selectedValue(option) {
1125
1180
  if (this.multiSelect) {
1126
- return this.formValue?.includes(option.value);
1181
+ if (typeof option.value === 'object') {
1182
+ if (option && option.value) {
1183
+ const valuesItems = this.valueToArray(option.value);
1184
+ return this.formValue.some((item) => {
1185
+ const itemArray = this.valueToArray(item);
1186
+ return itemArray.every((itemValue) => valuesItems.includes(itemValue));
1187
+ });
1188
+ }
1189
+ }
1190
+ else {
1191
+ return this.formValue?.includes(option.value);
1192
+ }
1127
1193
  }
1128
1194
  return option.value === this.formValue;
1129
1195
  }
@@ -1167,7 +1233,7 @@ class SmartSelectComponent {
1167
1233
  useExisting: SmartSelectComponent,
1168
1234
  multi: true,
1169
1235
  },
1170
- ], queries: [{ propertyName: "options", predicate: SmartSelectOptionComponent }], ngImport: i0, template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], encapsulation: i0.ViewEncapsulation.None });
1236
+ ], queries: [{ propertyName: "options", predicate: SmartSelectOptionComponent }], ngImport: i0, template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], encapsulation: i0.ViewEncapsulation.None });
1171
1237
  }
1172
1238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SmartSelectComponent, decorators: [{
1173
1239
  type: Component,
@@ -1182,7 +1248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1182
1248
  useExisting: SmartSelectComponent,
1183
1249
  multi: true,
1184
1250
  },
1185
- ], template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"] }]
1251
+ ], template: "<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma op\u00E7\u00E3o\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma op\u00E7\u00E3o' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n", styles: [".wco-smartSelect{width:100%;position:relative;display:inline-block;--wco-smart-select-box-height: 0px;--wco-smart-select-box-max-height: 300px;--wco-smart-select-box-radius: 8px;--wco-smart-select-box-shadow: var(--wco-shadow-level-1, 0 2px 4px rgba(0, 0, 0, .2));--wco-smart-select-box-default-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-default-color-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-box-default-padding: var(--wco-spacing-nano) var(--wco-spacing-xxxs);--wco-smart-select-box-hover-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-hover-color-bg: var(--wco-color-neutral-300, #bdbdbd);--wco-smart-select-box-selected-color-label: var(--wco-color-neutral-900, #000);--wco-smart-select-box-selected-color-bg: var(--wco-color-primary-100, #819ed3);--wco-smart-select-option-disabled-bg: var(--wco-color-neutral-100, #e0e0e0);--wco-smart-select-option-disabled-color: var(--wco-color-neutral-500, #9e9e9e);--wco-smart-select-box-option-height: 48px}.wco-smartSelect--open{--wco-smart-select-box-height: auto }.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--isMobile-close{display:flex;padding:var(--wco-spacing-nano);align-items:center;justify-content:flex-end}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box{position:fixed;bottom:0;left:0;width:100%}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open{padding:0}.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open ul,.wco-smartSelect.wco-smartSelect--isMobile .wco-smartSelect--box.wco-smartSelect--box--open input{border-radius:0}.wco-smartSelect .wco-smartSelect--isMobile-close{display:none}.wco-smartSelect input{cursor:pointer}.wco-smartSelect .form-field__input.multiSelect{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--wco-spacing-nano);padding-right:var(--wco-spacing-sm)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-placeholder{opacity:.5}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item{display:inline-flex;align-items:center;justify-content:center;padding:var(--wco-spacing-quark) var(--wco-spacing-xxs);border-radius:var(--wco-smart-select-box-radius);background-color:var(--wco-smart-select-box-default-color-bg);position:relative}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item:hover>span{width:calc(var(--wco-spacing-xxs) - 2px)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span{position:absolute;right:0;top:50%;transform:translateY(-50%);border-radius:0 var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;height:100%;width:0px;transition:width .1s linear,margin .1s linear;overflow:hidden;z-index:1}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span>span{font-size:var(--wco-font-size-xxxs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;color:var(--wco-smart-select-box-default-color-label)}.wco-smartSelect .form-field__input.multiSelect .wco-smart-select-item>span:hover{color:var(--wco-smart-select-box-hover-color-label);background-color:var(--wco-smart-select-box-hover-color-bg)}.wco-smartSelect .wco-smartSelect--box{position:absolute;left:-12px;width:calc(100% + 24px);z-index:999;display:grid;grid-template-columns:1fr;grid-template-rows:var(--wco-smart-select-box-height, 0px);max-height:var(--wco-smart-select-box-max-height);transition:all .4s ease-in-out,padding 0ms linear;padding:0;opacity:0;visibility:hidden;pointer-events:none}.wco-smartSelect .wco-smartSelect--box.wco-smartSelect--box--open{pointer-events:all;padding:var(--wco-spacing-nano) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs) var(--wco-spacing-xxxs);animation:introSmartSelectBox .4s ease-in-out .1s forwards}@keyframes introSmartSelectBox{0%{opacity:0;visibility:hidden;transform:translateY(-10px)}to{opacity:1;visibility:visible;transform:translateY(0)}}.wco-smartSelect .wco-smartSelect--box ul{border-top:none;border-radius:var(--wco-smart-select-box-radius);box-shadow:var(--wco-smart-select-box-shadow);background-color:var(--wco-smart-select-box-default-color-bg);overflow-y:auto;overflow-x:hidden;max-height:var(--wco-smart-select-box-max-height)}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar{width:8px}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-track{background-color:transparent}.wco-smartSelect .wco-smartSelect--box ul::-webkit-scrollbar-thumb{border-radius:99px;background-color:var(--wco-color-neutral-500, #9e9e9e)}.wco-smartSelect .wco-smartSelect--box ul li{color:var(--wco-smart-select-box-default-color-label);padding:var(--wco-smart-select-box-default-padding);display:grid;width:100%;align-items:center;justify-content:flex-start;grid-template-columns:auto 1fr auto;gap:var(--wco-spacing-xxxs);font-family:var(--wco-font-family);font-size:var(--wco-font-size-xs);font-weight:400;line-height:var(--wco-font-lineheight-500);letter-spacing:.4px;min-height:var(--wco-smart-select-box-option-height)}.wco-smartSelect .wco-smartSelect--box ul li .wco-smart-select-label-prefix{display:inline-flex;align-items:center}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter{padding:0;align-items:stretch;display:flex}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input{width:100%;height:auto;padding:var(--wco-smart-select-box-default-padding);border:none;border-bottom:1px solid #ccc;border-radius:var(--wco-smart-select-box-radius) var(--wco-smart-select-box-radius) 0 0}.wco-smartSelect .wco-smartSelect--box ul li.wco-smart-selected-filter input:focus{outline:none}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter){cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):hover{background-color:var(--wco-smart-select-box-hover-color-bg);color:var(--wco-smart-select-box-hover-color-label);cursor:pointer}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):focus,.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter):active{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label)}.wco-smartSelect .wco-smartSelect--box ul li:not(.wc-smart-select-view-only-option):not(.wc-smart-select-disabled-option):not(.wco-smart-selected-filter).wco-smart-selected{background-color:var(--wco-smart-select-box-selected-color-bg);color:var(--wco-smart-select-box-selected-color-label);font-weight:600}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option{background-color:var(--wco-smart-select-option-disabled-bg);color:var(--wco-smart-select-option-disabled-color);cursor:not-allowed}.wco-smartSelect .wco-smartSelect--box ul li.wc-smart-select-disabled-option .wco-smart-select-remove{display:none}\n"] }]
1186
1252
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
1187
1253
  type: ContentChildren,
1188
1254
  args: [SmartSelectOptionComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"wizco-fenixds-ngx.mjs","sources":["../../../projects/ngx-components/src/lib/step/step.component.ts","../../../projects/ngx-components/src/lib/step/step.component.html","../../../projects/ngx-components/src/lib/stepper/stepper.component.ts","../../../projects/ngx-components/src/lib/stepper/stepper.component.html","../../../projects/ngx-components/src/lib/upload/upload.component.ts","../../../projects/ngx-components/src/lib/upload/upload.component.html","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.ts","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.html","../../../projects/ngx-components/src/lib/tabs/tabs.component.ts","../../../projects/ngx-components/src/lib/tabs/tabs.component.html","../../../projects/ngx-components/src/lib/pagination/pagination.component.ts","../../../projects/ngx-components/src/lib/pagination/pagination.component.html","../../../projects/ngx-components/src/lib/smart-select/smart-select-options.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.html","../../../projects/ngx-components/src/public-api.ts","../../../projects/ngx-components/src/wizco-fenixds-ngx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'wco-step',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './step.component.html',\n styleUrls: ['./step.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StepComponent {\n\n /**\n * Se o step está ativo\n * @param {boolean} active\n */\n @Input() active: boolean = false;\n\n /**\n * Texto do label do step\n */\n @Input() label: string = '';\n\n /**\n * Ícone do step (opcional) - deve ser um ícone do material icon\n */\n @Input() iconName: string | undefined = undefined;\n\n /**\n * Texto do bulletValue do step (opcional) - deve ser um texto de 1 a 2 caracteres\n */\n @Input() bulletValue: string | undefined = undefined;\n\n /**\n * Sentido do stepper (horizontal ou vertical)\n */\n @Input() isVertical: boolean = true;\n\n\n /**\n * Desabilitar linha inicial\n */\n @Input() lineStart: boolean = true;\n\n /**\n * Desabilitar linha final\n */\n @Input() lineEnd: boolean = true;\n\n /**\n * Classe do step\n *\n * finalized - step finalizado\n * current - step atual\n * waiting - step aguardando\n * error - step com erro\n *\n * @param {string} status\n */\n @Input() status: 'finalized' | 'current' | 'waiting' | 'error' | string = 'current';\n\n /**\n * size do step\n * @param {string} size\n */\n @Input() size: 'small' | 'medium' | 'large' | string = 'small';\n\n\n /**\n * Se o step é clicável\n * @param {boolean} clickable\n */\n @Input() hasClick: boolean = false;\n\n /**\n * Função que retorna o valor do ícone ou bullet\n */\n @Output() clicked = new EventEmitter<number>()\n\n\n\n\n\n constructor() {}\n\n /**\n * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n * */\n clickedItem() {\n if(this.hasClick) {\n return\n }\n this.clicked.emit()\n }\n\n}\n","<div class=\"step\"\n [class]=\"'step-status--' + status + ' step-size--' + size\"\n [ngClass]=\"{\n 'step--vertical': isVertical,\n 'step--horizontal': !isVertical,\n 'step--disabled-linestart': !lineStart,\n 'step--disabled-lineend': !lineEnd,\n 'step--clicked': hasClick,\n 'step--active': active\n }\"\n\n>\n <div class=\"step__line step__line--start\"></div>\n <div class=\"step__bullet\" (click)=\"clickedItem()\">\n <div>\n <span *ngIf=\"iconName && !bulletValue\" class=\"material-icons\">{{iconName}}</span>\n <span *ngIf=\"!iconName && bulletValue\">{{bulletValue}}</span>\n <ng-content select=\"[step-bullet-content]\"></ng-content>\n </div>\n </div>\n <div class=\"step__line step__line--end\"></div>\n <div class=\"step__content\">\n <div class=\"step__title\" (click)=\"clickedItem()\">\n <span *ngIf=\"label\">{{label}}</span>\n <ng-content select=\"[step-title]\"></ng-content>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nexport interface StepperClass {\n label?: string;\n className?: 'finalized' | 'current' | 'waiting' | 'error';\n showLineStart: boolean;\n showLineEnd: boolean;\n type?: 'icon' | 'text';\n valueIcon?: string;\n valueBullet?: string;\n clicked?: boolean;\n}\n\n@Component({\n selector: \"wco-stepper\",\n standalone: true,\n imports: [CommonModule],\n templateUrl: \"./stepper.component.html\",\n styleUrls: [\"./stepper.component.scss\"],\n})\nexport class StepperComponent {\n /**\n * Sentido do stepper (horizontal ou vertical)\n */\n @Input() isVertical: boolean = false;\n\n /**\n * Array de itens do stepper StepperClass\n * @param {StepperClass} stepper\n */\n @Input() stepperArray: Array<StepperClass> = [];\n\n /**\n * Função que retorna o valor do ícone ou bullet\n */\n @Output() stepperSelected = new EventEmitter<number>()\n\n constructor() {}\n\n /**\n * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n * */\n clickedItem(item: StepperClass, index: number) {\n if(!item.clicked) {\n return\n }\n this.stepperSelected.emit(index)\n }\n}\n","<div\n class=\"stepper-vertical\"\n [ngClass]=\"isVertical === true ? 'stepper-vertical' : 'stepper-horizontal'\"\n *ngIf=\"stepperArray\"\n>\n <div class=\"stepper-component\" *ngFor=\"let items of stepperArray; let $i = index\">\n <div class=\"stepper-component__main\">\n <div class=\"stepper-item\" [ngClass]=\"{'stepper-item__clicked': items.clicked}\" (click)=\"clickedItem(items,$i)\">\n <span\n [ngClass]=\"\n items.showLineStart === true\n ? 'stepper-item__line'\n : 'stepper-item__without-line'\n \"\n ></span>\n <span class=\"stepper-item__circle\" [ngClass]=\"items.className\"\n ><span *ngIf=\"items.type === 'icon'\" class=\"icon material-icons\">{{\n items.valueIcon\n }}</span>\n <span *ngIf=\"items.type === 'text'\" class=\"icon\">{{\n items.valueBullet\n }}</span></span\n >\n <span\n [ngClass]=\"\n items.showLineEnd === true\n ? 'stepper-item__line'\n : 'stepper-item__without-line'\n \"\n ></span>\n </div>\n <div class=\"stepper-label\">\n <span\n class=\"stepper-label__text\"\n [ngClass]=\"items.className === 'current' ? 'dark-text' : 'light-text'\"\n >{{ items.label }}</span\n >\n </div>\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input, OnChanges, Output, SkipSelf\n} from '@angular/core';\n\nimport {\n HttpClient,\n HttpClientModule,\n HttpEventType, HttpHeaders,\n HttpParams\n} from '@angular/common/http';\n\n\n\nimport { CommonModule } from '@angular/common';\nimport { AngularFileUploaderConfig, ReplaceTexts, UploadInfoTypes } from \"./upload.types\";\n\n@Component({\n selector: \"wco-file-upload\",\n standalone: true,\n imports: [CommonModule, HttpClientModule],\n templateUrl: \"./upload.component.html\",\n styleUrls: [\"./upload.component.scss\"],\n})\n\nexport class UploadComponent implements OnChanges {\n /* Texto de descrição do arquivo */\n @Input() description: string = \"(XX MB de tamanho máximo e é permitido qualquer tipo de arquivos)\"\n /* config <AngularFileUploaderConfig> configuração do componente principais parâmetros */\n @Input() config: AngularFileUploaderConfig = {\n uploadAPI: {\n url: '',\n method: 'POST',\n headers: {\n 'Content-Type': 'text/plain;charset=UTF-8',\n },\n responseType: 'json',\n withCredentials: false,\n }\n };\n\n\n /*\n * Opção de resetar o componente\n */\n @Input() resetUpload = false;\n\n /*\n * Evento Resposta da requisição sendo sucesso ou erro\n */\n @Output('apiResponse') ApiResponse = new EventEmitter();\n /*\n * Evento javascript puro para retorno do arquivo\n */\n @Output() fileSelected: EventEmitter<UploadInfoTypes[]> = new EventEmitter<UploadInfoTypes[]>();\n\n /**\n * @ignore\n */\n theme: string = '';\n /**\n * @ignore\n */\n id: number = 0;\n /**\n * @ignore\n */\n hideProgressBar: boolean = false;\n /**\n * @ignore\n */\n maxSize: number = 20 * 1024000; // mb to bytes.\n /**\n * @ignore\n */\n uploadAPI: string = '';\n /**\n * @ignore\n */\n method: string = 'POST';\n /**\n * @ignore\n */\n formatsAllowed: string = '*';\n /**\n * @ignore\n */\n formatsAllowedText: string = '';\n /**\n * @ignore\n */\n multiple: boolean = false;\n /**\n * @ignore\n */\n headers: HttpHeaders | { [header: string]: string | string[] } = {}\n /**\n * @ignore\n */\n params: HttpParams | { [param: string]: string | string[] } = {}\n /**\n * @ignore\n */\n responseType: 'json' | 'arraybuffer' | 'blob' | 'text' = 'blob';\n /**\n * @ignore\n */\n hideResetBtn: boolean = false;\n /**\n * @ignore\n */\n hideSelectBtn: boolean = false;\n /**\n * @ignore\n */\n allowedFiles: File[] = [];\n /**\n * @ignore\n */\n notAllowedFiles: {\n fileName: string;\n fileSize: string;\n errorMsg: string;\n }[] = [];\n /**\n * @ignore\n */\n Caption: string[] = [];\n /**\n * @ignore\n */\n isAllowedFileSingle = true;\n /**\n * @ignore\n */\n progressBarShow = false;\n /**\n * @ignore\n */\n enableUploadBtn = false;\n /**\n * @ignore\n */\n uploadMsg = false;\n /**\n * @ignore\n */\n afterUpload = false;\n /**\n * @ignore\n */\n uploadStarted = false;\n /**\n * @ignore\n */\n uploadMsgText: string = \"\"\n /**\n * @ignore\n */\n uploadMsgClass: string = 'text-success';\n /**\n * @ignore\n */\n uploadPercent: number = 0;\n /**\n * @ignore\n */\n replaceTexts: ReplaceTexts = {\n selectFileBtn: 'Selecionar Arquivo',\n resetBtn: 'Resetar',\n uploadBtn: 'Enviar',\n dragNDropBox: 'Arraste e solte',\n attachPinBtn: 'Anexar Arquivo...',\n afterUploadMsg_success: 'Enviado com sucesso !',\n afterUploadMsg_error: 'Falha no envio !',\n sizeLimit: 'Tamanho máximo',\n }\n /**\n * @ignore\n */\n currentUploads: any[] = [];\n /**\n * @ignore\n */\n fileNameIndex = true;\n /**\n * @ignore\n */\n withCredentials = false;\n /**\n * @ignore\n */\n autoUpload = true;\n /**\n * @ignore\n */\n private idDate: number = +new Date();\n\n constructor(@SkipSelf() private http: HttpClient) {}\n\n /**\n * @ignore\n */\n ngOnChanges(changes: any) {\n // Track changes in Configuration and see if user has even provided Configuration.\n if (changes.config && this.config) {\n // Assign User Configurations to Library Properties.\n this.theme = this.config.theme || '';\n this.id =\n this.config.id ||\n parseInt((this.idDate / 10000).toString().split('.')[1], 10) +\n Math.floor(Math.random() * 20) * 10000;\n this.hideProgressBar = this.config.hideProgressBar || false;\n this.hideResetBtn = this.config.hideResetBtn || false;\n this.hideSelectBtn = this.config.hideSelectBtn || false;\n this.maxSize = (this.config.maxSize || 20) * 1024000; // mb to bytes.\n if(this.config.uploadAPI) {\n this.uploadAPI = this.config.uploadAPI.url ;\n this.method = this.config.uploadAPI.method || 'POST';\n this.formatsAllowed = this.config.formatsAllowed || '*';\n this.multiple = this.config.multiple || false;\n this.headers = this.config.uploadAPI.headers || {};\n this.params = this.config.uploadAPI.params || {};\n this.responseType = this.config.uploadAPI.responseType || 'json';\n this.withCredentials = this.config.uploadAPI.withCredentials || false;\n }\n this.formatsAllowedText = this.formatsAllowed === '*' ? '' : '(' + this.formatsAllowed + ')';\n this.fileNameIndex = this.config.fileNameIndex === false ? false : true;\n this.autoUpload = this.config.autoUpload || false;\n if (this.config.replaceTexts) {\n this.replaceTexts = {\n ...this.replaceTexts,\n ...this.config.replaceTexts,\n };\n }\n }\n\n // Reset when resetUpload value changes from false to true.\n if (changes.resetUpload) {\n if (changes.resetUpload.currentValue === true) {\n this.resetFileUpload();\n }\n }\n }\n\n /* Função resetar componente */\n resetFileUpload() {\n this.allowedFiles = [];\n this.Caption = [];\n this.notAllowedFiles = [];\n this.uploadMsg = false;\n this.enableUploadBtn = false;\n }\n\n /* Detectar mudança */\n onChange(event: any) {\n this.fileSelected.emit(event);\n this.notAllowedFiles = [];\n const fileExtRegExp: RegExp = /(?:\\.([^.]+))?$/;\n let fileList: FileList;\n\n if (this.afterUpload || !this.multiple) {\n this.allowedFiles = [];\n this.Caption = [];\n this.afterUpload = false;\n }\n\n if (event.type === 'drop') {\n fileList = event.dataTransfer.files;\n } else {\n fileList = event.target.files || event.srcElement.files;\n }\n\n // 'forEach' does not exist on 'filelist' that's why this good old 'for' is used.\n // tslint:disable-next-line: for-of\n for (let i = 0; i < fileList.length; i++) {\n const _currentFileExt: any = fileExtRegExp.exec(fileList[i].name);\n const currentFileExt = typeof _currentFileExt[1] === 'string' ? _currentFileExt[1].toLowerCase() : '';\n const isFormatValid = this.formatsAllowed.includes('*')\n ? true\n : this.formatsAllowed.includes(currentFileExt);\n\n const isSizeValid = fileList[i].size <= this.maxSize;\n\n // Check whether current file format and size is correct as specified in the configurations.\n if (isFormatValid && isSizeValid) {\n this.allowedFiles.push(fileList[i]);\n } else {\n this.notAllowedFiles.push({\n fileName: fileList[i].name,\n fileSize: this.convertSize(fileList[i].size),\n errorMsg: !isFormatValid ? 'Invalid format' : 'Invalid size',\n });\n }\n }\n\n\n // If there's any allowedFiles.\n if (this.allowedFiles.length > 0) {\n this.enableUploadBtn = true;\n // Upload the files directly if theme is attach pin (as upload btn is not there for this theme) or autoUpload is true.\n if (this.theme === 'attachPin' || this.autoUpload) {\n this.uploadFiles();\n }\n } else {\n this.enableUploadBtn = false;\n }\n\n this.uploadMsg = false;\n this.uploadStarted = false;\n this.uploadPercent = 0;\n event.target.value = null;\n }\n\n /* Função para enviar arquivo para servidor */\n uploadFiles() {\n this.progressBarShow = true;\n this.uploadStarted = true;\n this.notAllowedFiles = [];\n let isError = false;\n this.isAllowedFileSingle = this.allowedFiles.length <= 1;\n const formData = new FormData();\n\n // Add data to be sent in this request\n this.allowedFiles.forEach((file, i) => {\n formData.append(\n this.Caption[i] || 'file' + (this.fileNameIndex ? i : ''),\n this.allowedFiles[i]\n );\n });\n\n\n this.http\n .request(this.method.toUpperCase(), this.uploadAPI, {\n body: formData,\n reportProgress: true,\n observe: 'events',\n headers: this.headers,\n params: this.params,\n responseType: this.responseType,\n withCredentials: this.withCredentials,\n })\n .subscribe(\n (event) => {\n // Upload Progress\n if (event.type === HttpEventType.UploadProgress) {\n this.enableUploadBtn = false; // button should be disabled if process uploading\n const currentDone = event.loaded / event.total;\n this.uploadPercent = Math.round((event.loaded / event.total) * 100);\n } else if (event.type === HttpEventType.Response) {\n if (event.status === 200 || event.status === 201) {\n // Success\n this.progressBarShow = false;\n this.enableUploadBtn = false;\n this.uploadMsg = true;\n this.afterUpload = true;\n if (!isError) {\n this.uploadMsgText = this.replaceTexts.afterUploadMsg_success || 'Successfully Uploaded !';\n this.uploadMsgClass = 'text-success lead';\n }\n } else {\n // Failure\n isError = true;\n this.handleErrors();\n }\n this.ApiResponse.emit(event);\n } else {\n //console.log('Event Other: ', event);\n }\n },\n (error) => {\n // Failure\n isError = true;\n this.handleErrors();\n this.ApiResponse.emit(error);\n }\n );\n }\n\n handleErrors() {\n this.progressBarShow = false;\n this.enableUploadBtn = false;\n this.uploadMsg = true;\n this.afterUpload = true;\n this.uploadMsgText = this.replaceTexts.afterUploadMsg_error || 'Error in uploading files';\n this.uploadMsgClass = 'text-danger lead';\n }\n\n removeFile(i: any, sf_na: any) {\n if (sf_na === 'sf') {\n this.allowedFiles.splice(i, 1);\n this.Caption.splice(i, 1);\n } else {\n this.notAllowedFiles.splice(i, 1);\n }\n\n if (this.allowedFiles.length === 0) {\n this.enableUploadBtn = false;\n }\n }\n\n convertSize(fileSize: number): string {\n return fileSize < 1024000\n ? (fileSize / 1024).toFixed(2) + ' KB'\n : (fileSize / 1024000).toFixed(2) + ' MB';\n }\n\n attachpinOnclick() {\n const element = document.getElementById('sel' + this.id);\n if (element !== null) {\n element.click();\n }\n }\n\n drop(event: any) {\n event.stopPropagation();\n event.preventDefault();\n this.onChange(event);\n }\n\n allowDrop(event: any) {\n event.stopPropagation();\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n }\n}\n","<label for=\"sel{{id}}\" class=\"wco-file-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"upload__drop-info\">\n <span>Arraste-os aqui ou</span>\n <div class=\"upload__button\">\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </div>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input class=\"upload__file\" type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MsgBoxFeedbackTypes } from './msg-box-feeback.types';\nimport { animate, style, transition, trigger } from '@angular/animations';\n@Component({\n selector: 'wco-msg-box-feedback',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './msg-box-feedback.component.html',\n styleUrls: ['./msg-box-feedback.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('fadeSlideInOut', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('500ms', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n transition(':leave', [\n animate('500ms', style({ opacity: 0, transform: 'translateY(10px)' })),\n ]),\n ]),\n ],\n})\nexport class MsgBoxFeedbackComponent {\n\n\n\n /* \n * Sombra do componente\n * @param {boolean} shadow\n * @default true\n * @example true | false\n */\n @Input() shadow = false;\n\n /*\n * Modo do componente\n * @param {MsgBoxFeedbackTypes['mode']} mode\n * @default 'fit'\n * @example 'fit' | 'full'\n */\n @Input() mode: MsgBoxFeedbackTypes['mode'] = 'fit';\n /* \n * Título do componente\n * @param {MsgBoxFeedbackTypes['title']} title\n */\n @Input() title!: MsgBoxFeedbackTypes['title'];\n /*\n * Mensagem do componente\n * @param {MsgBoxFeedbackTypes['message']} message\n */\n @Input() message!: MsgBoxFeedbackTypes['message'];\n /*\n * Tipo do componente\n * @param {MsgBoxFeedbackTypes['type']} type\n */\n @Input() type: MsgBoxFeedbackTypes['type'] = 'error';\n /*\n * Evento emitido ao fechar o componente\n * @param {EventEmitter<any>}\n */\n @Output() onClose = new EventEmitter<any>();\n\n constructor() { }\n\n close(): void {\n this.onClose.emit(true);\n }\n}\n","<div \n [ngClass]=\"'box-feedback box-feedback-' + type + ' mode-' + mode\"\n [className]=\"shadow ? 'mode-shadow' : ''\"\n @fadeSlideInOut>\n <svg *ngIf=\"type !== 'loading'\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path *ngIf=\"type === 'error'\"\n d=\"M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 11C9.45 11 9 10.55 9 10V6C9 5.45 9.45 5 10 5C10.55 5 11 5.45 11 6V10C11 10.55 10.55 11 10 11ZM11 15H9V13H11V15Z\"\n fill=\"var(--box-feedback-icon-color)\" />\n <path *ngIf=\"type === 'success'\"\n d=\"M0.25 10C0.25 4.61807 4.61807 0.25 10 0.25C15.3819 0.25 19.75 4.61807 19.75 10C19.75 15.3819 15.3819 19.75 10 19.75C4.61807 19.75 0.25 15.3819 0.25 10ZM3.52322 10.8768L7.11322 14.4668C7.59915 14.9527 8.39831 14.9565 8.87783 14.4657C8.87824 14.4653 8.87865 14.4649 8.87906 14.4645L16.4668 6.87678C16.9544 6.38915 16.9544 5.60085 16.4668 5.11322C15.9791 4.62559 15.1909 4.62559 14.7032 5.11322L7.99969 11.8168L5.28678 9.11322C5.28672 9.11316 5.28666 9.1131 5.2866 9.11304C4.79895 8.62559 4.01079 8.62565 3.52322 9.11322C3.03559 9.60085 3.03559 10.3891 3.52322 10.8768Z\"\n fill=\"var(--box-feedback-icon-color)\" fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n <path *ngIf=\"type === 'warning'\"\n d=\"M19.0436 15.1252L19.0436 15.1253C19.7173 16.2888 18.8771 17.75 17.53 17.75H2.47C1.12285 17.75 0.282712 16.2888 0.956356 15.1253L0.956371 15.1252L8.48636 2.11526C8.48636 2.11525 8.48637 2.11524 8.48637 2.11523C9.16008 0.951589 10.8399 0.951589 11.5136 2.11523C11.5136 2.11524 11.5136 2.11525 11.5136 2.11526L19.0436 15.1252ZM11 15.25H11.25V15V13V12.75H11H9H8.75V13V15V15.25H9H11ZM8.75 10C8.75 10.6881 9.31193 11.25 10 11.25C10.6881 11.25 11.25 10.6881 11.25 10V8C11.25 7.31193 10.6881 6.75 10 6.75C9.31193 6.75 8.75 7.31193 8.75 8V10Z\"\n fill=\"var(--box-feedback-icon-color)\" fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n <path *ngIf=\"type === 'info'\"\n d=\"M11 7.25H11.25V7V5V4.75H11H9H8.75V5V7V7.25H9H11ZM0.25 10C0.25 4.61807 4.61807 0.25 10 0.25C15.3819 0.25 19.75 4.61807 19.75 10C19.75 15.3819 15.3819 19.75 10 19.75C4.61807 19.75 0.25 15.3819 0.25 10ZM8.75 14C8.75 14.6881 9.31193 15.25 10 15.25C10.6881 15.25 11.25 14.6881 11.25 14V10C11.25 9.31193 10.6881 8.75 10 8.75C9.31193 8.75 8.75 9.31193 8.75 10V14Z\"\n fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n </svg>\n <svg *ngIf=\"type === 'loading'\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle class=\"loading-icon\" fill=\"none\" stroke=\"var(--box-feedback-icon-color)\" stroke-width=\"6\"\n stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n </svg>\n <div class=\"box-feedback--content\">\n <div class=\"box-feedback--header\"> \n <h6 class=\"display-6 bold\">\n {{ title }}\n </h6>\n <a class=\"btn-close\" (click)=\"close()\">\n <svg viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.25 0.758431C10.925 0.433431 10.4 0.433431 10.075 0.758431L5.99998 4.8251L1.92498 0.750098C1.59998 0.425098 1.07498 0.425098 0.749976 0.750098C0.424976 1.0751 0.424976 1.6001 0.749976 1.9251L4.82498 6.0001L0.749976 10.0751C0.424976 10.4001 0.424976 10.9251 0.749976 11.2501C1.07498 11.5751 1.59998 11.5751 1.92498 11.2501L5.99998 7.1751L10.075 11.2501C10.4 11.5751 10.925 11.5751 11.25 11.2501C11.575 10.9251 11.575 10.4001 11.25 10.0751L7.17497 6.0001L11.25 1.9251C11.5666 1.60843 11.5666 1.0751 11.25 0.758431Z\" />\n </svg>\n </a>\n </div>\n <p class=\"display-p\">{{ message }}</p>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, NavigationEnd, RouterModule } from '@angular/router';\nimport { NavTabsOptions } from './tabs.types';\n\n@Component({\n selector: 'wco-navtabs',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\n ],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TabsComponent implements OnChanges, AfterViewInit{\n /**\n * @ignore\n */\n @ViewChild('navTabs')\n public navTabs!: ElementRef;\n\n /**\n * Variável para definir o tipo de navegação\n * @param {string} type\n */\n @Input()\n public type: 'header' | 'nav' = 'header';\n\n /**\n * Elementos divididos igualmente ocupando toda largura\n * @param {boolean} full\n */\n @Input()\n public full: boolean = false;\n\n /**\n * Variável para definir o item ativo e monitorar a mudança\n * @param {string} selected\n */\n @Input()\n public selected = ''\n\n /** habilitar reponsivo\n * @param {Boolean} enabledResponsive\n */\n @Input('enabled-responsive')\n public enabledResponsive: Boolean = true;\n\n /**\n * Opções de navegação por rotas\n * @param {NavTabsOptions[]} links\n */\n @Input('listOptions')\n public set setListOptions(links: NavTabsOptions[]) {\n if (links.length) {\n this.links = links.map((item: NavTabsOptions) => {\n return {\n ...item,\n type: item.type || 'link',\n options: { exact: item.path === '/' ? true : false },\n };\n });\n }\n }\n \n\n /**\n * Variável para definir se o componente terá borda ou não\n * @param {boolean} noBorder\n */\n @Input('no-border')\n public noBorder: boolean = false;\n\n\n /**\n * Evento de click no botão ou link do componente\n * @param {EventEmitter<void>} handleClick\n * @returns {void}\n */\n @Output()\n public handleClick: EventEmitter<void> = new EventEmitter();\n\n /**\n * @ignore\n */\n public links: NavTabsOptions[] = [];\n\n\n /**\n * Variavel se é mobile ou não\n */\n public isMobile = false;\n\n constructor(\n private readonly router: Router,\n private el: ElementRef\n ) {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.handleActive(100, false);\n }\n });\n }\n\n /**\n * @ignore\n */\n ngOnChanges(changes: SimpleChanges) {\n if(changes['selected']) { \n this.handleActive(100, false);\n }\n }\n\n /**\n * @ignore\n */\n public ngAfterViewInit(): void {\n this.handleActive(1000, false);\n }\n\n /**\n * @ignore\n */\n public eventSubmit(): void {\n this.handleClick.emit();\n }\n\n /**\n * @ignore\n */\n public handleActive(timer = 100, buttonClick = true): void {\n setTimeout(() => {\n const _elementRef = this.el.nativeElement;\n const _element: HTMLElement = this.navTabs.nativeElement;\n\n\n if(_elementRef && _element ) {\n this.isMobile = _elementRef.clientWidth >= _element.clientWidth\n }\n\n const allActives = _element.querySelectorAll('button.active');\n\n const _elementChildActive = allActives[allActives.length - 1];\n\n if (!_elementChildActive) {\n return;\n }\n\n const left =\n _elementChildActive.getBoundingClientRect().left - _element.getBoundingClientRect().left;\n const widthbutton = _elementChildActive.getBoundingClientRect().width;\n _element.style.setProperty('--leftActive', left + 'px');\n _element.style.setProperty('--widthActive', widthbutton + 'px');\n _elementChildActive.scrollIntoView({ block: 'end', behavior: 'smooth' });\n if (buttonClick) {\n this.handleClick.emit();\n }\n if (this.enabledResponsive) {\n _elementChildActive.scrollIntoView({\n block: 'end',\n behavior: 'smooth',\n });\n }\n }, timer);\n }\n}","\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'wco-pagination',\n templateUrl: './pagination.component.html',\n standalone: true,\n imports: [CommonModule],\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent implements AfterContentInit {\n /**\n * Evento que se emite quando se clica em um item da paginação\n */\n @Output()\n public changePage = new EventEmitter();\n\n /**\n * Total de páginas\n * @default 0\n * @type number\n */\n @Input()\n public totalPage = 0;\n\n\n /**\n * Página atual\n * @default 1\n * @type number\n * */\n @Input()\n public currenPage = 1;\n\n /**\n * Modo de exibição da paginação\n * @default default\n * @type string\n */\n @Input()\n public mode: 'default' | 'simple' = 'default';\n\n \n\n /**\n * Verifica tamanho da tela para exibir modo simples\n */\n ngAfterContentInit() {\n if (window.innerWidth < 768) {\n this.mode = 'simple';\n }\n }\n\n\n /**\n * Retorna um array com os números das páginas e os pontos de suspensão\n */\n public pagination() {\n const current = this.currenPage;\n const last = this.totalPage;\n const delta = current >= 2 ? current >= 4 ? 1 : 2 : 3;\n const left = current - delta;\n const right = current + delta + 1;\n const range = [];\n const rangeWithDots = [];\n let l;\n\n for (let i = 1; i <= last; i++) {\n if (i === 1 || i === last || (i >= left && i < right)) {\n range.push(i);\n }\n }\n\n for (const i of range) {\n if (l) {\n if (i - l === 2) {\n rangeWithDots.push(l + 1);\n } else if (i - l !== 1) {\n rangeWithDots.push('...');\n } else {\n // empty\n }\n }\n rangeWithDots.push(i);\n l = i;\n }\n\n return rangeWithDots;\n }\n\n /**\n * Seguir para a próxima página\n */\n public nextPage() {\n if (this.currenPage < this.totalPage) {\n this.currenPage += 1;\n this.changePage.emit(this.currenPage);\n }\n }\n\n /**\n * Voltar para a página anterior\n */\n public previousPage() {\n if (this.currenPage >= 2) {\n this.currenPage -= 1;\n this.changePage.emit(this.currenPage);\n }\n }\n\n /**\n * Ir para a página selecionada\n * @param i\n * @returns void\n */\n public out(i: number | string) {\n this.currenPage = parseInt(`${i}`, 10);\n console.log(i, this.currenPage);\n this.changePage.emit(i);\n }\n}\n","<div class=\"pagination\"\n *ngIf=\"!!totalPage && totalPage >= 2\"\n ngClass=\"pagination-{{mode}}\"\n>\n\n <ng-container *ngIf=\"mode === 'simple'\">\n <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n <button class=\"active\">{{currenPage}}</button>\n <span>/</span>\n <button>{{totalPage}}</button>\n <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n title=\"Proxima Página\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n </ng-container>\n\n\n\n <ng-container *ngIf=\"mode === 'default'\">\n <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n <button *ngFor=\"let i of pagination()\" [ngClass]=\"{ \n active: currenPage === i,\n disable: i === '...'\n }\" (click)=\"out(i)\">\n {{ i }}\n </button>\n <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n title=\"Proxima Página\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n </ng-container>\n\n\n\n</div>\n\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'wco-smart-select-option',\n standalone: true,\n imports: [CommonModule],\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class SmartSelectOptionComponent implements AfterViewInit {\n @Input() value: any;\n @Input() label!: string;\n @Input() iconPrefix!: string;\n @Input() disabled = false;\n @Input() viewOnly = false;\n safeHtmlContent: SafeHtml | undefined;\n\n constructor(private el: ElementRef, private sanitizer: DomSanitizer) {}\n\n ngAfterViewInit() {\n const rawHtmlContent = this.el.nativeElement.innerHTML.trim();\n this.safeHtmlContent =\n rawHtmlContent.length > 0\n ? this.sanitizer.bypassSecurityTrustHtml(rawHtmlContent)\n : undefined;\n }\n}\n","import {\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n Validator,\n} from '@angular/forms';\nimport { SmartSelectOptionComponent } from './smart-select-options.component';\n\n@Component({\n selector: 'wco-smart-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n templateUrl: './smart-select.component.html',\n styleUrls: ['./smart-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SmartSelectComponent,\n multi: true,\n },\n ],\n})\nexport class SmartSelectComponent implements ControlValueAccessor, Validator {\n @ContentChildren(SmartSelectOptionComponent) options:\n | QueryList<SmartSelectOptionComponent>\n | undefined;\n\n @Output() onChange = new EventEmitter<{ type: string; value: any }>();\n\n /* Id do elemento */\n @Input()\n inputId = 'select_' + Math.random().toString(36).substring(2);\n\n /* Attr name do elemento */\n @Input() inputName?: string;\n\n @Input() IconMaterial = 'arrow_drop_down';\n\n /* Placeholder do select */\n @Input()\n placeholder = 'Selecione uma opção';\n\n /* Label do select */\n @Input() label = ' ';\n\n @Input()\n showSearch = false;\n\n /* Texto exibido quando não há resultados */\n @Input()\n textEmpty = 'Não há resultados para a busca';\n\n /* habilitar opção de multiplas seleções */\n @Input()\n multiSelect = false;\n\n /* Limitar visualização de itens selecionados */\n @Input() \n showMaxSelectedLabel = 0;\n\n /* Tipos pré definidos de checkbox, radio ou null */\n @Input()\n typePrefix: 'checkbox' | 'radio' | null = null;\n\n isMobile = window.innerWidth <= 768;\n\n formValue: any;\n isFocused = false;\n preventEscapeFocus = false;\n autocompleteControl = new FormControl();\n filteredOptions: any[] = [];\n\n showList = false;\n\n constructor(private el: ElementRef) {}\n\n onTouched = () => {\n this.isFocused = true;\n };\n\n /// estados do control\n\n ngOnInit(): void {}\n\n writeValue(obj: any): void {\n this.formValue = obj;\n this.autocompleteControl.setValue(obj);\n }\n registerOnChange(fn: any): void {\n this.autocompleteControl.valueChanges.subscribe((value) => {\n fn(value);\n });\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(_control: FormControl) {\n if (this.multiSelect) {\n if (this.formValue?.length) {\n return null;\n }\n return { required: true };\n }\n if (this.formValue) {\n return null;\n }\n return { required: true };\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteControl.disable();\n } else {\n this.autocompleteControl.enable();\n }\n }\n\n /// Abertura e fechamento da lista\n onFocusIn(focus = false) {\n this.renderBoxOptions();\n this.autocompleteControl.markAsTouched();\n this.onTouched();\n this.isFocused = focus;\n this.showList = focus;\n this.positionBox();\n }\n\n /// here function to position box element top or bottom\n positionBox() {\n if (this.isMobile) {\n return;\n }\n\n const componentBox = this.el.nativeElement;\n if (!componentBox) {\n return;\n }\n const componentBoxPosition = componentBox.getBoundingClientRect();\n const inputId = componentBox.querySelector('.form-field');\n const box = componentBox.querySelector('.wco-smartSelect--box');\n const inputIdPosition = inputId.getBoundingClientRect().height;\n const pageHeight = window.innerHeight;\n if (box && componentBoxPosition.y + 320 >= pageHeight) {\n box.style.bottom = inputIdPosition + 'px';\n box.style.height = `var(--wco-smart-select-box-max-height)`;\n box.style.top = 'initial';\n } else {\n box.style.top = inputIdPosition + 'px';\n box.style.bottom = 'initial';\n box.style.height = `auto`;\n }\n }\n\n onSelect(option: any) {\n if (option.disabled || option.viewOnly) {\n return;\n }\n\n const oldValue = this.formValue;\n\n if (this.multiSelect) {\n if (this.formValue?.includes(option.value)) {\n this.formValue = this.formValue.filter(\n (item: any) => item !== option.value\n );\n this.autocompleteControl.setValue(this.formValue);\n this.renderBoxOptions();\n return;\n }\n // is Array []\n if (!!this.formValue === false) {\n this.formValue = [];\n this.autocompleteControl.setValue(this.formValue);\n }\n this.formValue = [...this.formValue, option.value];\n this.autocompleteControl.setValue(this.formValue);\n } else {\n this.formValue = option.value;\n this.autocompleteControl.setValue(option.value);\n }\n if (!this.multiSelect) {\n this.showList = false;\n }\n if (oldValue !== this.formValue) {\n this.onChange.emit({ type: 'updateValue', value: this.formValue });\n }\n }\n\n // Show label span\n get selectedLabel() {\n const selectedOption = this.options?.find(\n (option) =>\n this.normalizeText(String(option.value)) ===\n this.normalizeText(String(this.formValue))\n );\n return selectedOption?.label || ' ';\n }\n\n // show label multi select\n get selectedLabelMulti(): { value: string; label: string }[] {\n const selectedOptions = this.options?.filter((option) =>\n this.formValue?.includes(option.value)\n );\n\n if (!selectedOptions?.length) {\n return [];\n }\n\n if(!this.showMaxSelectedLabel) {\n return selectedOptions;\n }\n\n if (this.showMaxSelectedLabel && selectedOptions.length > this.showMaxSelectedLabel) {\n return selectedOptions.slice(0, this.showMaxSelectedLabel);\n }\n \n return selectedOptions;\n }\n\n get selectedLabelMultiCount(): number {\n const show = this.showMaxSelectedLabel || 0;\n const selectedOptions = this.options?.filter((option) =>\n this.formValue?.includes(option.value)\n );\n\n console.log('selectedOptions', selectedOptions);\n console.log('show', show);\n if (!selectedOptions?.length) {\n return 0;\n }\n\n if (show > 0 && selectedOptions.length > show) {\n return selectedOptions.length - show;\n }\n\n return 0;\n }\n\n removeItem(option: any) {\n this.onSelect(option);\n setTimeout(() => {\n this.showList = false; \n }, 100);\n }\n\n onKeyPress(event: any) {\n event.preventDefault();\n this.renderBoxOptions();\n }\n\n onFilter(event: any) {\n const value = event.target.value;\n if (!value) {\n this.renderBoxOptions();\n return;\n }\n\n if (this.filteredOptions.length) {\n this.renderBoxOptions(value);\n }\n }\n\n onResize() {\n this.renderBoxOptions();\n this.positionBox();\n }\n\n onFocusOut() {\n if (!this.preventEscapeFocus && !this.isMobile) {\n this.isFocused = false;\n this.showList = false;\n }\n }\n\n closeList() {\n this.preventEscapeFocus = true;\n this.isFocused = false;\n this.showList = false;\n }\n\n selectedValue(option: { value: any; label: string; safeHtmlContent: any }) {\n if (this.multiSelect) {\n return this.formValue?.includes(option.value);\n }\n\n return option.value === this.formValue;\n }\n\n private renderBoxOptions(filterValue: string | null = null) {\n if (!this.options || !this.options.length) {\n return;\n }\n this.filteredOptions = this.options\n ?.map((option) => {\n return {\n value: option.value,\n iconPrefix: option.iconPrefix,\n htmlLabel: option.safeHtmlContent || option.label,\n disabled: option.disabled,\n viewOnly: option.viewOnly,\n };\n })\n .filter((option) => {\n if (!filterValue) {\n return true;\n }\n const normalizedFilter = this.normalizeText(filterValue);\n const normalizedLabel = this.normalizeText(\n option.htmlLabel?.toString() || ''\n );\n return normalizedLabel.includes(normalizedFilter);\n });\n }\n\n private normalizeText(text: string): string {\n return text\n .replace(/[\\W_]+/g, '') // Remove caracteres especiais e sublinhados\n .toLowerCase();\n }\n}\n","<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma opção\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma opção' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n","/*\n * Public API Surface of ngx-fenixds\n */\n\nexport * from './lib/step/step.component';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/upload/upload.component';\nexport * from './lib/upload/upload.types';\n\n\n// msg box feedback\nexport * from './lib/msg-box-feedback/msg-box-feedback.component';\nexport * from './lib/msg-box-feedback/msg-box-feeback.types';\n\n\n\n//msg navtabs\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.types';\n\n\n//Pagination \nexport * from './lib/pagination/pagination.component';\n\n\n// Smart Select\nexport * from './lib/smart-select/smart-select.component';\nexport * from './lib/smart-select/smart-select-options.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"wizco-fenixds-ngx.mjs","sources":["../../../projects/ngx-components/src/lib/step/step.component.ts","../../../projects/ngx-components/src/lib/step/step.component.html","../../../projects/ngx-components/src/lib/stepper/stepper.component.ts","../../../projects/ngx-components/src/lib/stepper/stepper.component.html","../../../projects/ngx-components/src/lib/upload/upload.component.ts","../../../projects/ngx-components/src/lib/upload/upload.component.html","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.ts","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.html","../../../projects/ngx-components/src/lib/tabs/tabs.component.ts","../../../projects/ngx-components/src/lib/tabs/tabs.component.html","../../../projects/ngx-components/src/lib/pagination/pagination.component.ts","../../../projects/ngx-components/src/lib/pagination/pagination.component.html","../../../projects/ngx-components/src/lib/smart-select/smart-select-options.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.html","../../../projects/ngx-components/src/public-api.ts","../../../projects/ngx-components/src/wizco-fenixds-ngx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'wco-step',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './step.component.html',\n styleUrls: ['./step.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class StepComponent {\n\n /**\n * Se o step está ativo\n * @param {boolean} active\n */\n @Input() active: boolean = false;\n\n /**\n * Texto do label do step\n */\n @Input() label: string = '';\n\n /**\n * Ícone do step (opcional) - deve ser um ícone do material icon\n */\n @Input() iconName: string | undefined = undefined;\n\n /**\n * Texto do bulletValue do step (opcional) - deve ser um texto de 1 a 2 caracteres\n */\n @Input() bulletValue: string | undefined = undefined;\n\n /**\n * Sentido do stepper (horizontal ou vertical)\n */\n @Input() isVertical: boolean = true;\n\n\n /**\n * Desabilitar linha inicial\n */\n @Input() lineStart: boolean = true;\n\n /**\n * Desabilitar linha final\n */\n @Input() lineEnd: boolean = true;\n\n /**\n * Classe do step\n *\n * finalized - step finalizado\n * current - step atual\n * waiting - step aguardando\n * error - step com erro\n *\n * @param {string} status\n */\n @Input() status: 'finalized' | 'current' | 'waiting' | 'error' | string = 'current';\n\n /**\n * size do step\n * @param {string} size\n */\n @Input() size: 'small' | 'medium' | 'large' | string = 'small';\n\n\n /**\n * Se o step é clicável\n * @param {boolean} clickable\n */\n @Input() hasClick: boolean = false;\n\n /**\n * Função que retorna o valor do ícone ou bullet\n */\n @Output() clicked = new EventEmitter<number>()\n\n\n\n\n\n constructor() {}\n\n /**\n * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n * */\n clickedItem() {\n if(this.hasClick) {\n return\n }\n this.clicked.emit()\n }\n\n}\n","<div class=\"step\"\n [class]=\"'step-status--' + status + ' step-size--' + size\"\n [ngClass]=\"{\n 'step--vertical': isVertical,\n 'step--horizontal': !isVertical,\n 'step--disabled-linestart': !lineStart,\n 'step--disabled-lineend': !lineEnd,\n 'step--clicked': hasClick,\n 'step--active': active\n }\"\n\n>\n <div class=\"step__line step__line--start\"></div>\n <div class=\"step__bullet\" (click)=\"clickedItem()\">\n <div>\n <span *ngIf=\"iconName && !bulletValue\" class=\"material-icons\">{{iconName}}</span>\n <span *ngIf=\"!iconName && bulletValue\">{{bulletValue}}</span>\n <ng-content select=\"[step-bullet-content]\"></ng-content>\n </div>\n </div>\n <div class=\"step__line step__line--end\"></div>\n <div class=\"step__content\">\n <div class=\"step__title\" (click)=\"clickedItem()\">\n <span *ngIf=\"label\">{{label}}</span>\n <ng-content select=\"[step-title]\"></ng-content>\n </div>\n </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\n\nexport interface StepperClass {\n label?: string;\n className?: 'finalized' | 'current' | 'waiting' | 'error';\n showLineStart: boolean;\n showLineEnd: boolean;\n type?: 'icon' | 'text';\n valueIcon?: string;\n valueBullet?: string;\n clicked?: boolean;\n}\n\n@Component({\n selector: \"wco-stepper\",\n standalone: true,\n imports: [CommonModule],\n templateUrl: \"./stepper.component.html\",\n styleUrls: [\"./stepper.component.scss\"],\n})\nexport class StepperComponent {\n /**\n * Sentido do stepper (horizontal ou vertical)\n */\n @Input() isVertical: boolean = false;\n\n /**\n * Array de itens do stepper StepperClass\n * @param {StepperClass} stepper\n */\n @Input() stepperArray: Array<StepperClass> = [];\n\n /**\n * Função que retorna o valor do ícone ou bullet\n */\n @Output() stepperSelected = new EventEmitter<number>()\n\n constructor() {}\n\n /**\n * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n * */\n clickedItem(item: StepperClass, index: number) {\n if(!item.clicked) {\n return\n }\n this.stepperSelected.emit(index)\n }\n}\n","<div\n class=\"stepper-vertical\"\n [ngClass]=\"isVertical === true ? 'stepper-vertical' : 'stepper-horizontal'\"\n *ngIf=\"stepperArray\"\n>\n <div class=\"stepper-component\" *ngFor=\"let items of stepperArray; let $i = index\">\n <div class=\"stepper-component__main\">\n <div class=\"stepper-item\" [ngClass]=\"{'stepper-item__clicked': items.clicked}\" (click)=\"clickedItem(items,$i)\">\n <span\n [ngClass]=\"\n items.showLineStart === true\n ? 'stepper-item__line'\n : 'stepper-item__without-line'\n \"\n ></span>\n <span class=\"stepper-item__circle\" [ngClass]=\"items.className\"\n ><span *ngIf=\"items.type === 'icon'\" class=\"icon material-icons\">{{\n items.valueIcon\n }}</span>\n <span *ngIf=\"items.type === 'text'\" class=\"icon\">{{\n items.valueBullet\n }}</span></span\n >\n <span\n [ngClass]=\"\n items.showLineEnd === true\n ? 'stepper-item__line'\n : 'stepper-item__without-line'\n \"\n ></span>\n </div>\n <div class=\"stepper-label\">\n <span\n class=\"stepper-label__text\"\n [ngClass]=\"items.className === 'current' ? 'dark-text' : 'light-text'\"\n >{{ items.label }}</span\n >\n </div>\n </div>\n </div>\n</div>\n","import {\n Component,\n EventEmitter,\n Input, OnChanges, Output, SkipSelf\n} from '@angular/core';\n\nimport {\n HttpClient,\n HttpClientModule,\n HttpEventType, HttpHeaders,\n HttpParams\n} from '@angular/common/http';\n\n\n\nimport { CommonModule } from '@angular/common';\nimport { AngularFileUploaderConfig, ReplaceTexts, UploadInfoTypes } from \"./upload.types\";\n\n@Component({\n selector: \"wco-file-upload\",\n standalone: true,\n imports: [CommonModule, HttpClientModule],\n templateUrl: \"./upload.component.html\",\n styleUrls: [\"./upload.component.scss\"],\n})\n\nexport class UploadComponent implements OnChanges {\n /* Texto de descrição do arquivo */\n @Input() description: string = \"(XX MB de tamanho máximo e é permitido qualquer tipo de arquivos)\"\n /* config <AngularFileUploaderConfig> configuração do componente principais parâmetros */\n @Input() config: AngularFileUploaderConfig = {\n uploadAPI: {\n url: '',\n method: 'POST',\n headers: {\n 'Content-Type': 'text/plain;charset=UTF-8',\n },\n responseType: 'json',\n withCredentials: false,\n }\n };\n\n\n /*\n * Opção de resetar o componente\n */\n @Input() resetUpload = false;\n\n /*\n * Evento Resposta da requisição sendo sucesso ou erro\n */\n @Output('apiResponse') ApiResponse = new EventEmitter();\n /*\n * Evento javascript puro para retorno do arquivo\n */\n @Output() fileSelected: EventEmitter<UploadInfoTypes[]> = new EventEmitter<UploadInfoTypes[]>();\n\n /**\n * @ignore\n */\n theme: string = '';\n /**\n * @ignore\n */\n id: number = 0;\n /**\n * @ignore\n */\n hideProgressBar: boolean = false;\n /**\n * @ignore\n */\n maxSize: number = 20 * 1024000; // mb to bytes.\n /**\n * @ignore\n */\n uploadAPI: string = '';\n /**\n * @ignore\n */\n method: string = 'POST';\n /**\n * @ignore\n */\n formatsAllowed: string = '*';\n /**\n * @ignore\n */\n formatsAllowedText: string = '';\n /**\n * @ignore\n */\n multiple: boolean = false;\n /**\n * @ignore\n */\n headers: HttpHeaders | { [header: string]: string | string[] } = {}\n /**\n * @ignore\n */\n params: HttpParams | { [param: string]: string | string[] } = {}\n /**\n * @ignore\n */\n responseType: 'json' | 'arraybuffer' | 'blob' | 'text' = 'blob';\n /**\n * @ignore\n */\n hideResetBtn: boolean = false;\n /**\n * @ignore\n */\n hideSelectBtn: boolean = false;\n /**\n * @ignore\n */\n allowedFiles: File[] = [];\n /**\n * @ignore\n */\n notAllowedFiles: {\n fileName: string;\n fileSize: string;\n errorMsg: string;\n }[] = [];\n /**\n * @ignore\n */\n Caption: string[] = [];\n /**\n * @ignore\n */\n isAllowedFileSingle = true;\n /**\n * @ignore\n */\n progressBarShow = false;\n /**\n * @ignore\n */\n enableUploadBtn = false;\n /**\n * @ignore\n */\n uploadMsg = false;\n /**\n * @ignore\n */\n afterUpload = false;\n /**\n * @ignore\n */\n uploadStarted = false;\n /**\n * @ignore\n */\n uploadMsgText: string = \"\"\n /**\n * @ignore\n */\n uploadMsgClass: string = 'text-success';\n /**\n * @ignore\n */\n uploadPercent: number = 0;\n /**\n * @ignore\n */\n replaceTexts: ReplaceTexts = {\n selectFileBtn: 'Selecionar Arquivo',\n resetBtn: 'Resetar',\n uploadBtn: 'Enviar',\n dragNDropBox: 'Arraste e solte',\n attachPinBtn: 'Anexar Arquivo...',\n afterUploadMsg_success: 'Enviado com sucesso !',\n afterUploadMsg_error: 'Falha no envio !',\n sizeLimit: 'Tamanho máximo',\n }\n /**\n * @ignore\n */\n currentUploads: any[] = [];\n /**\n * @ignore\n */\n fileNameIndex = true;\n /**\n * @ignore\n */\n withCredentials = false;\n /**\n * @ignore\n */\n autoUpload = true;\n /**\n * @ignore\n */\n private idDate: number = +new Date();\n\n constructor(@SkipSelf() private http: HttpClient) {}\n\n /**\n * @ignore\n */\n ngOnChanges(changes: any) {\n // Track changes in Configuration and see if user has even provided Configuration.\n if (changes.config && this.config) {\n // Assign User Configurations to Library Properties.\n this.theme = this.config.theme || '';\n this.id =\n this.config.id ||\n parseInt((this.idDate / 10000).toString().split('.')[1], 10) +\n Math.floor(Math.random() * 20) * 10000;\n this.hideProgressBar = this.config.hideProgressBar || false;\n this.hideResetBtn = this.config.hideResetBtn || false;\n this.hideSelectBtn = this.config.hideSelectBtn || false;\n this.maxSize = (this.config.maxSize || 20) * 1024000; // mb to bytes.\n if(this.config.uploadAPI) {\n this.uploadAPI = this.config.uploadAPI.url ;\n this.method = this.config.uploadAPI.method || 'POST';\n this.formatsAllowed = this.config.formatsAllowed || '*';\n this.multiple = this.config.multiple || false;\n this.headers = this.config.uploadAPI.headers || {};\n this.params = this.config.uploadAPI.params || {};\n this.responseType = this.config.uploadAPI.responseType || 'json';\n this.withCredentials = this.config.uploadAPI.withCredentials || false;\n }\n this.formatsAllowedText = this.formatsAllowed === '*' ? '' : '(' + this.formatsAllowed + ')';\n this.fileNameIndex = this.config.fileNameIndex === false ? false : true;\n this.autoUpload = this.config.autoUpload || false;\n if (this.config.replaceTexts) {\n this.replaceTexts = {\n ...this.replaceTexts,\n ...this.config.replaceTexts,\n };\n }\n }\n\n // Reset when resetUpload value changes from false to true.\n if (changes.resetUpload) {\n if (changes.resetUpload.currentValue === true) {\n this.resetFileUpload();\n }\n }\n }\n\n /* Função resetar componente */\n resetFileUpload() {\n this.allowedFiles = [];\n this.Caption = [];\n this.notAllowedFiles = [];\n this.uploadMsg = false;\n this.enableUploadBtn = false;\n }\n\n /* Detectar mudança */\n onChange(event: any) {\n this.fileSelected.emit(event);\n this.notAllowedFiles = [];\n const fileExtRegExp: RegExp = /(?:\\.([^.]+))?$/;\n let fileList: FileList;\n\n if (this.afterUpload || !this.multiple) {\n this.allowedFiles = [];\n this.Caption = [];\n this.afterUpload = false;\n }\n\n if (event.type === 'drop') {\n fileList = event.dataTransfer.files;\n } else {\n fileList = event.target.files || event.srcElement.files;\n }\n\n // 'forEach' does not exist on 'filelist' that's why this good old 'for' is used.\n // tslint:disable-next-line: for-of\n for (let i = 0; i < fileList.length; i++) {\n const _currentFileExt: any = fileExtRegExp.exec(fileList[i].name);\n const currentFileExt = typeof _currentFileExt[1] === 'string' ? _currentFileExt[1].toLowerCase() : '';\n const isFormatValid = this.formatsAllowed.includes('*')\n ? true\n : this.formatsAllowed.includes(currentFileExt);\n\n const isSizeValid = fileList[i].size <= this.maxSize;\n\n // Check whether current file format and size is correct as specified in the configurations.\n if (isFormatValid && isSizeValid) {\n this.allowedFiles.push(fileList[i]);\n } else {\n this.notAllowedFiles.push({\n fileName: fileList[i].name,\n fileSize: this.convertSize(fileList[i].size),\n errorMsg: !isFormatValid ? 'Invalid format' : 'Invalid size',\n });\n }\n }\n\n\n // If there's any allowedFiles.\n if (this.allowedFiles.length > 0) {\n this.enableUploadBtn = true;\n // Upload the files directly if theme is attach pin (as upload btn is not there for this theme) or autoUpload is true.\n if (this.theme === 'attachPin' || this.autoUpload) {\n this.uploadFiles();\n }\n } else {\n this.enableUploadBtn = false;\n }\n\n this.uploadMsg = false;\n this.uploadStarted = false;\n this.uploadPercent = 0;\n event.target.value = null;\n }\n\n /* Função para enviar arquivo para servidor */\n uploadFiles() {\n this.progressBarShow = true;\n this.uploadStarted = true;\n this.notAllowedFiles = [];\n let isError = false;\n this.isAllowedFileSingle = this.allowedFiles.length <= 1;\n const formData = new FormData();\n\n // Add data to be sent in this request\n this.allowedFiles.forEach((file, i) => {\n formData.append(\n this.Caption[i] || 'file' + (this.fileNameIndex ? i : ''),\n this.allowedFiles[i]\n );\n });\n\n\n this.http\n .request(this.method.toUpperCase(), this.uploadAPI, {\n body: formData,\n reportProgress: true,\n observe: 'events',\n headers: this.headers,\n params: this.params,\n responseType: this.responseType,\n withCredentials: this.withCredentials,\n })\n .subscribe(\n (event) => {\n // Upload Progress\n if (event.type === HttpEventType.UploadProgress) {\n this.enableUploadBtn = false; // button should be disabled if process uploading\n const currentDone = event.loaded / event.total;\n this.uploadPercent = Math.round((event.loaded / event.total) * 100);\n } else if (event.type === HttpEventType.Response) {\n if (event.status === 200 || event.status === 201) {\n // Success\n this.progressBarShow = false;\n this.enableUploadBtn = false;\n this.uploadMsg = true;\n this.afterUpload = true;\n if (!isError) {\n this.uploadMsgText = this.replaceTexts.afterUploadMsg_success || 'Successfully Uploaded !';\n this.uploadMsgClass = 'text-success lead';\n }\n } else {\n // Failure\n isError = true;\n this.handleErrors();\n }\n this.ApiResponse.emit(event);\n } else {\n //console.log('Event Other: ', event);\n }\n },\n (error) => {\n // Failure\n isError = true;\n this.handleErrors();\n this.ApiResponse.emit(error);\n }\n );\n }\n\n handleErrors() {\n this.progressBarShow = false;\n this.enableUploadBtn = false;\n this.uploadMsg = true;\n this.afterUpload = true;\n this.uploadMsgText = this.replaceTexts.afterUploadMsg_error || 'Error in uploading files';\n this.uploadMsgClass = 'text-danger lead';\n }\n\n removeFile(i: any, sf_na: any) {\n if (sf_na === 'sf') {\n this.allowedFiles.splice(i, 1);\n this.Caption.splice(i, 1);\n } else {\n this.notAllowedFiles.splice(i, 1);\n }\n\n if (this.allowedFiles.length === 0) {\n this.enableUploadBtn = false;\n }\n }\n\n convertSize(fileSize: number): string {\n return fileSize < 1024000\n ? (fileSize / 1024).toFixed(2) + ' KB'\n : (fileSize / 1024000).toFixed(2) + ' MB';\n }\n\n attachpinOnclick() {\n const element = document.getElementById('sel' + this.id);\n if (element !== null) {\n element.click();\n }\n }\n\n drop(event: any) {\n event.stopPropagation();\n event.preventDefault();\n this.onChange(event);\n }\n\n allowDrop(event: any) {\n event.stopPropagation();\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n }\n}\n","<label for=\"sel{{id}}\" class=\"wco-file-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n <div class=\"upload__drop-info\">\n <span>Arraste-os aqui ou</span>\n <div class=\"upload__button\">\n <span class=\"material-icons\">cloud_upload</span>\n <span>{{replaceTexts.selectFileBtn}}</span>\n </div>\n </div>\n <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n <ng-container *ngIf=\"allowedFiles.length\">\n <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n </span>\n </ng-container>\n <input class=\"upload__file\" type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MsgBoxFeedbackTypes } from './msg-box-feeback.types';\nimport { animate, style, transition, trigger } from '@angular/animations';\n@Component({\n selector: 'wco-msg-box-feedback',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './msg-box-feedback.component.html',\n styleUrls: ['./msg-box-feedback.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('fadeSlideInOut', [\n transition(':enter', [\n style({ opacity: 0, transform: 'translateY(10px)' }),\n animate('500ms', style({ opacity: 1, transform: 'translateY(0)' })),\n ]),\n transition(':leave', [\n animate('500ms', style({ opacity: 0, transform: 'translateY(10px)' })),\n ]),\n ]),\n ],\n})\nexport class MsgBoxFeedbackComponent {\n\n\n\n /* \n * Sombra do componente\n * @param {boolean} shadow\n * @default true\n * @example true | false\n */\n @Input() shadow = false;\n\n /*\n * Modo do componente\n * @param {MsgBoxFeedbackTypes['mode']} mode\n * @default 'fit'\n * @example 'fit' | 'full'\n */\n @Input() mode: MsgBoxFeedbackTypes['mode'] = 'fit';\n /* \n * Título do componente\n * @param {MsgBoxFeedbackTypes['title']} title\n */\n @Input() title!: MsgBoxFeedbackTypes['title'];\n /*\n * Mensagem do componente\n * @param {MsgBoxFeedbackTypes['message']} message\n */\n @Input() message!: MsgBoxFeedbackTypes['message'];\n /*\n * Tipo do componente\n * @param {MsgBoxFeedbackTypes['type']} type\n */\n @Input() type: MsgBoxFeedbackTypes['type'] = 'error';\n /*\n * Evento emitido ao fechar o componente\n * @param {EventEmitter<any>}\n */\n @Output() onClose = new EventEmitter<any>();\n\n constructor() { }\n\n close(): void {\n this.onClose.emit(true);\n }\n}\n","<div \n [ngClass]=\"'box-feedback box-feedback-' + type + ' mode-' + mode\"\n [className]=\"shadow ? 'mode-shadow' : ''\"\n @fadeSlideInOut>\n <svg *ngIf=\"type !== 'loading'\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path *ngIf=\"type === 'error'\"\n d=\"M10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 11C9.45 11 9 10.55 9 10V6C9 5.45 9.45 5 10 5C10.55 5 11 5.45 11 6V10C11 10.55 10.55 11 10 11ZM11 15H9V13H11V15Z\"\n fill=\"var(--box-feedback-icon-color)\" />\n <path *ngIf=\"type === 'success'\"\n d=\"M0.25 10C0.25 4.61807 4.61807 0.25 10 0.25C15.3819 0.25 19.75 4.61807 19.75 10C19.75 15.3819 15.3819 19.75 10 19.75C4.61807 19.75 0.25 15.3819 0.25 10ZM3.52322 10.8768L7.11322 14.4668C7.59915 14.9527 8.39831 14.9565 8.87783 14.4657C8.87824 14.4653 8.87865 14.4649 8.87906 14.4645L16.4668 6.87678C16.9544 6.38915 16.9544 5.60085 16.4668 5.11322C15.9791 4.62559 15.1909 4.62559 14.7032 5.11322L7.99969 11.8168L5.28678 9.11322C5.28672 9.11316 5.28666 9.1131 5.2866 9.11304C4.79895 8.62559 4.01079 8.62565 3.52322 9.11322C3.03559 9.60085 3.03559 10.3891 3.52322 10.8768Z\"\n fill=\"var(--box-feedback-icon-color)\" fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n <path *ngIf=\"type === 'warning'\"\n d=\"M19.0436 15.1252L19.0436 15.1253C19.7173 16.2888 18.8771 17.75 17.53 17.75H2.47C1.12285 17.75 0.282712 16.2888 0.956356 15.1253L0.956371 15.1252L8.48636 2.11526C8.48636 2.11525 8.48637 2.11524 8.48637 2.11523C9.16008 0.951589 10.8399 0.951589 11.5136 2.11523C11.5136 2.11524 11.5136 2.11525 11.5136 2.11526L19.0436 15.1252ZM11 15.25H11.25V15V13V12.75H11H9H8.75V13V15V15.25H9H11ZM8.75 10C8.75 10.6881 9.31193 11.25 10 11.25C10.6881 11.25 11.25 10.6881 11.25 10V8C11.25 7.31193 10.6881 6.75 10 6.75C9.31193 6.75 8.75 7.31193 8.75 8V10Z\"\n fill=\"var(--box-feedback-icon-color)\" fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n <path *ngIf=\"type === 'info'\"\n d=\"M11 7.25H11.25V7V5V4.75H11H9H8.75V5V7V7.25H9H11ZM0.25 10C0.25 4.61807 4.61807 0.25 10 0.25C15.3819 0.25 19.75 4.61807 19.75 10C19.75 15.3819 15.3819 19.75 10 19.75C4.61807 19.75 0.25 15.3819 0.25 10ZM8.75 14C8.75 14.6881 9.31193 15.25 10 15.25C10.6881 15.25 11.25 14.6881 11.25 14V10C11.25 9.31193 10.6881 8.75 10 8.75C9.31193 8.75 8.75 9.31193 8.75 10V14Z\"\n fill=\"var(--box-feedback-icon-color)\" stroke-width=\"0.5\" />\n </svg>\n <svg *ngIf=\"type === 'loading'\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle class=\"loading-icon\" fill=\"none\" stroke=\"var(--box-feedback-icon-color)\" stroke-width=\"6\"\n stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n </svg>\n <div class=\"box-feedback--content\">\n <div class=\"box-feedback--header\"> \n <h6 class=\"display-6 bold\">\n {{ title }}\n </h6>\n <a class=\"btn-close\" (click)=\"close()\">\n <svg viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M11.25 0.758431C10.925 0.433431 10.4 0.433431 10.075 0.758431L5.99998 4.8251L1.92498 0.750098C1.59998 0.425098 1.07498 0.425098 0.749976 0.750098C0.424976 1.0751 0.424976 1.6001 0.749976 1.9251L4.82498 6.0001L0.749976 10.0751C0.424976 10.4001 0.424976 10.9251 0.749976 11.2501C1.07498 11.5751 1.59998 11.5751 1.92498 11.2501L5.99998 7.1751L10.075 11.2501C10.4 11.5751 10.925 11.5751 11.25 11.2501C11.575 10.9251 11.575 10.4001 11.25 10.0751L7.17497 6.0001L11.25 1.9251C11.5666 1.60843 11.5666 1.0751 11.25 0.758431Z\" />\n </svg>\n </a>\n </div>\n <p class=\"display-p\">{{ message }}</p>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, NavigationEnd, RouterModule } from '@angular/router';\nimport { NavTabsOptions } from './tabs.types';\n\n@Component({\n selector: 'wco-navtabs',\n standalone: true,\n imports: [\n CommonModule,\n RouterModule\n ],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TabsComponent implements OnChanges, AfterViewInit{\n /**\n * @ignore\n */\n @ViewChild('navTabs')\n public navTabs!: ElementRef;\n\n /**\n * Variável para definir o tipo de navegação\n * @param {string} type\n */\n @Input()\n public type: 'header' | 'nav' = 'header';\n\n /**\n * Elementos divididos igualmente ocupando toda largura\n * @param {boolean} full\n */\n @Input()\n public full: boolean = false;\n\n /**\n * Variável para definir o item ativo e monitorar a mudança\n * @param {string} selected\n */\n @Input()\n public selected = ''\n\n /** habilitar reponsivo\n * @param {Boolean} enabledResponsive\n */\n @Input('enabled-responsive')\n public enabledResponsive: Boolean = true;\n\n /**\n * Opções de navegação por rotas\n * @param {NavTabsOptions[]} links\n */\n @Input('listOptions')\n public set setListOptions(links: NavTabsOptions[]) {\n if (links.length) {\n this.links = links.map((item: NavTabsOptions) => {\n return {\n ...item,\n type: item.type || 'link',\n options: { exact: item.path === '/' ? true : false },\n };\n });\n }\n }\n \n\n /**\n * Variável para definir se o componente terá borda ou não\n * @param {boolean} noBorder\n */\n @Input('no-border')\n public noBorder: boolean = false;\n\n\n /**\n * Evento de click no botão ou link do componente\n * @param {EventEmitter<void>} handleClick\n * @returns {void}\n */\n @Output()\n public handleClick: EventEmitter<void> = new EventEmitter();\n\n /**\n * @ignore\n */\n public links: NavTabsOptions[] = [];\n\n\n /**\n * Variavel se é mobile ou não\n */\n public isMobile = false;\n\n constructor(\n private readonly router: Router,\n private el: ElementRef\n ) {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.handleActive(100, false);\n }\n });\n }\n\n /**\n * @ignore\n */\n ngOnChanges(changes: SimpleChanges) {\n if(changes['selected']) { \n this.handleActive(100, false);\n }\n }\n\n /**\n * @ignore\n */\n public ngAfterViewInit(): void {\n this.handleActive(1000, false);\n }\n\n /**\n * @ignore\n */\n public eventSubmit(): void {\n this.handleClick.emit();\n }\n\n /**\n * @ignore\n */\n public handleActive(timer = 100, buttonClick = true): void {\n setTimeout(() => {\n const _elementRef = this.el.nativeElement;\n const _element: HTMLElement = this.navTabs.nativeElement;\n\n\n if(_elementRef && _element ) {\n this.isMobile = _elementRef.clientWidth >= _element.clientWidth\n }\n\n const allActives = _element.querySelectorAll('button.active');\n\n const _elementChildActive = allActives[allActives.length - 1];\n\n if (!_elementChildActive) {\n return;\n }\n\n const left =\n _elementChildActive.getBoundingClientRect().left - _element.getBoundingClientRect().left;\n const widthbutton = _elementChildActive.getBoundingClientRect().width;\n _element.style.setProperty('--leftActive', left + 'px');\n _element.style.setProperty('--widthActive', widthbutton + 'px');\n _elementChildActive.scrollIntoView({ block: 'end', behavior: 'smooth' });\n if (buttonClick) {\n this.handleClick.emit();\n }\n if (this.enabledResponsive) {\n _elementChildActive.scrollIntoView({\n block: 'end',\n behavior: 'smooth',\n });\n }\n }, timer);\n }\n}","\n <nav \n class=\"wco-navtabs\" \n #navTabs role=\"navigation\"\n [class.no-border]=\"noBorder\" \n [class.navTabs-full]=\"full\"\n [class.navTabs-mobile]=\"!isMobile\"\n>\n <ng-container *ngFor=\"let link of links\">\n <ng-container *ngIf=\"link.type === 'link'\">\n <button \n (click)=\"eventSubmit()\" \n [class.color-to-nav]=\"type === 'nav'\"\n [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n >\n {{ link.name }}\n </button>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'wco-pagination',\n templateUrl: './pagination.component.html',\n standalone: true,\n imports: [CommonModule],\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent implements AfterContentInit {\n /**\n * Evento que se emite quando se clica em um item da paginação\n */\n @Output()\n public changePage = new EventEmitter();\n\n /**\n * Total de páginas\n * @default 0\n * @type number\n */\n @Input()\n public totalPage = 0;\n\n\n /**\n * Página atual\n * @default 1\n * @type number\n * */\n @Input()\n public currenPage = 1;\n\n /**\n * Modo de exibição da paginação\n * @default default\n * @type string\n */\n @Input()\n public mode: 'default' | 'simple' = 'default';\n\n \n\n /**\n * Verifica tamanho da tela para exibir modo simples\n */\n ngAfterContentInit() {\n if (window.innerWidth < 768) {\n this.mode = 'simple';\n }\n }\n\n\n /**\n * Retorna um array com os números das páginas e os pontos de suspensão\n */\n public pagination() {\n const current = this.currenPage;\n const last = this.totalPage;\n const delta = current >= 2 ? current >= 4 ? 1 : 2 : 3;\n const left = current - delta;\n const right = current + delta + 1;\n const range = [];\n const rangeWithDots = [];\n let l;\n\n for (let i = 1; i <= last; i++) {\n if (i === 1 || i === last || (i >= left && i < right)) {\n range.push(i);\n }\n }\n\n for (const i of range) {\n if (l) {\n if (i - l === 2) {\n rangeWithDots.push(l + 1);\n } else if (i - l !== 1) {\n rangeWithDots.push('...');\n } else {\n // empty\n }\n }\n rangeWithDots.push(i);\n l = i;\n }\n\n return rangeWithDots;\n }\n\n /**\n * Seguir para a próxima página\n */\n public nextPage() {\n if (this.currenPage < this.totalPage) {\n this.currenPage += 1;\n this.changePage.emit(this.currenPage);\n }\n }\n\n /**\n * Voltar para a página anterior\n */\n public previousPage() {\n if (this.currenPage >= 2) {\n this.currenPage -= 1;\n this.changePage.emit(this.currenPage);\n }\n }\n\n /**\n * Ir para a página selecionada\n * @param i\n * @returns void\n */\n public out(i: number | string) {\n this.currenPage = parseInt(`${i}`, 10);\n console.log(i, this.currenPage);\n this.changePage.emit(i);\n }\n}\n","<div class=\"pagination\"\n *ngIf=\"!!totalPage && totalPage >= 2\"\n ngClass=\"pagination-{{mode}}\"\n>\n\n <ng-container *ngIf=\"mode === 'simple'\">\n <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n <button class=\"active\">{{currenPage}}</button>\n <span>/</span>\n <button>{{totalPage}}</button>\n <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n title=\"Proxima Página\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n </ng-container>\n\n\n\n <ng-container *ngIf=\"mode === 'default'\">\n <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n <button *ngFor=\"let i of pagination()\" [ngClass]=\"{ \n active: currenPage === i,\n disable: i === '...'\n }\" (click)=\"out(i)\">\n {{ i }}\n </button>\n <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n title=\"Proxima Página\">\n <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n fill=\"var(--wco-color-primary-600)\" />\n </svg>\n </button>\n </ng-container>\n\n\n\n</div>\n\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n selector: 'wco-smart-select-option',\n standalone: true,\n imports: [CommonModule],\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n})\nexport class SmartSelectOptionComponent implements AfterViewInit {\n @Input() value: any;\n @Input() label!: string;\n @Input() iconPrefix!: string;\n @Input() disabled = false;\n @Input() viewOnly = false;\n safeHtmlContent: SafeHtml | undefined;\n\n constructor(private el: ElementRef, private sanitizer: DomSanitizer) {}\n\n ngAfterViewInit() {\n const rawHtmlContent = this.el.nativeElement.innerHTML.trim();\n this.safeHtmlContent =\n rawHtmlContent.length > 0\n ? this.sanitizer.bypassSecurityTrustHtml(rawHtmlContent)\n : undefined;\n }\n}\n","import {\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n QueryList,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ControlValueAccessor,\n FormControl,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n Validator,\n} from '@angular/forms';\nimport { SmartSelectOptionComponent } from './smart-select-options.component';\n\n@Component({\n selector: 'wco-smart-select',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, FormsModule],\n templateUrl: './smart-select.component.html',\n styleUrls: ['./smart-select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SmartSelectComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: SmartSelectComponent,\n multi: true,\n },\n ],\n})\nexport class SmartSelectComponent implements ControlValueAccessor, Validator {\n @ContentChildren(SmartSelectOptionComponent) options:\n | QueryList<SmartSelectOptionComponent>\n | undefined;\n\n @Output() onChange = new EventEmitter<{ type: string; value: any }>();\n\n /* Id do elemento */\n @Input()\n inputId = 'select_' + Math.random().toString(36).substring(2);\n\n /* Attr name do elemento */\n @Input() inputName?: string;\n\n @Input() IconMaterial = 'arrow_drop_down';\n\n /* Placeholder do select */\n @Input()\n placeholder = 'Selecione uma opção';\n\n /* Label do select */\n @Input() label = ' ';\n\n @Input()\n showSearch = false;\n\n /* Texto exibido quando não há resultados */\n @Input()\n textEmpty = 'Não há resultados para a busca';\n\n /* habilitar opção de multiplas seleções */\n @Input()\n multiSelect = false;\n\n /* Limitar visualização de itens selecionados */\n @Input()\n showMaxSelectedLabel = 0;\n\n /* Tipos pré definidos de checkbox, radio ou null */\n @Input()\n typePrefix: 'checkbox' | 'radio' | null = null;\n\n isMobile = window.innerWidth <= 768;\n\n formValue: any;\n isFocused = false;\n preventEscapeFocus = false;\n autocompleteControl = new FormControl();\n filteredOptions: any[] = [];\n\n showList = false;\n\n constructor(private el: ElementRef) {\n \n }\n\n onTouched = () => {\n this.isFocused = true;\n };\n\n /// estados do control\n\n ngOnInit(): void {}\n\n writeValue(obj: any): void {\n this.formValue = obj;\n this.autocompleteControl.setValue(obj);\n }\n registerOnChange(fn: any): void {\n this.autocompleteControl.valueChanges.subscribe((value) => {\n fn(value);\n });\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n validate(_control: FormControl) {\n if (this.multiSelect) {\n if (this.formValue?.length) {\n return null;\n }\n return { required: true };\n }\n if (this.formValue) {\n return null;\n }\n return { required: true };\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (isDisabled) {\n this.autocompleteControl.disable();\n } else {\n this.autocompleteControl.enable();\n }\n }\n\n /// Abertura e fechamento da lista\n onFocusIn(focus = false) {\n this.renderBoxOptions();\n this.autocompleteControl.markAsTouched();\n this.onTouched();\n this.isFocused = focus;\n this.showList = focus;\n this.positionBox();\n }\n\n /// here function to position box element top or bottom\n positionBox() {\n if (this.isMobile) {\n return;\n }\n\n const componentBox = this.el.nativeElement;\n if (!componentBox) {\n return;\n }\n const componentBoxPosition = componentBox.getBoundingClientRect();\n const inputId = componentBox.querySelector('.form-field');\n const box = componentBox.querySelector('.wco-smartSelect--box');\n const inputIdPosition = inputId.getBoundingClientRect().height;\n const pageHeight = window.innerHeight;\n if (box && componentBoxPosition.y + 320 >= pageHeight) {\n box.style.bottom = inputIdPosition + 'px';\n box.style.height = `var(--wco-smart-select-box-max-height)`;\n box.style.top = 'initial';\n } else {\n box.style.top = inputIdPosition + 'px';\n box.style.bottom = 'initial';\n box.style.height = `auto`;\n }\n }\n\n onSelect(option?: any) {\n if (option.disabled || option.viewOnly) {\n return;\n }\n\n const oldValue = this.formValue;\n\n if (this.multiSelect) {\n if (typeof option.value === 'object') {\n const list = this.compareMultiValuesArray(option);\n const hasValueOption = list.some((item: any) => item.selected);\n if (hasValueOption) {\n this.formValue = list\n .filter((item: any) => !item.selected)\n .map((item: any) => item.item);\n } else {\n this.formValue = [...(this.formValue || []), option.value];\n }\n } else {\n const index = this.formValue?.indexOf(option.value);\n if (index !== undefined && index > -1) {\n this.formValue?.splice(index, 1);\n } else {\n this.formValue = [...(this.formValue || []), option.value];\n }\n }\n this.autocompleteControl.setValue(this.formValue);\n } else {\n this.formValue = option.value;\n this.autocompleteControl.setValue(option.value);\n this.showList = false;\n }\n\n if (oldValue !== this.formValue) {\n this.onChange.emit({ type: 'updateValue', value: this.formValue });\n }\n\n this.renderBoxOptions();\n }\n\n // Show label span\n get selectedLabel() {\n const selectedOption = this.options?.find(\n (option) =>\n this.normalizeText(String(option.value)) ===\n this.normalizeText(String(this.formValue))\n );\n return selectedOption?.label || ' ';\n }\n\n // show label multi select\n get selectedLabelMulti(): { value: string; label: string }[] {\n const selectedOptions = this.options?.filter((option) => {\n if (typeof option.value === 'object') {\n return this.compareValueArray(option);\n } else {\n return this.formValue?.includes(option.value);\n }\n });\n\n if (!selectedOptions?.length) {\n return [];\n }\n\n if (!this.showMaxSelectedLabel) {\n return selectedOptions;\n }\n\n if (\n this.showMaxSelectedLabel &&\n selectedOptions.length > this.showMaxSelectedLabel\n ) {\n return selectedOptions.slice(0, this.showMaxSelectedLabel);\n }\n\n return selectedOptions;\n }\n\n private valueToArray(options: any) {\n const keys = Object.keys(options);\n const value: any[] = [];\n keys.forEach((key) => {\n if (\n options[key] && \n options[key] !== '' &&\n typeof options[key] !== 'object' && \n typeof options[key] !== 'function'&& \n typeof options[key] !== 'boolean'\n ) {\n value.push(options[key]);\n }\n });\n return value;\n }\n\n private compareValueArray(option: any, value = this.formValue): any[] {\n if (option && option.value) {\n const valuesItems = this.valueToArray(option.value);\n return value.some((item: any) => {\n const itemArray = this.valueToArray(item);\n return itemArray.every((itemValue: any) =>\n valuesItems.includes(itemValue)\n );\n });\n }\n return [];\n }\n\n private compareMultiValuesArray(option: any, value = this.formValue): any[] {\n if (option && option.value) {\n const valuesItems = this.valueToArray(option.value);\n const formValueArray = value.map((item: any, index: number) => {\n const itemArray = this.valueToArray(item);\n return {\n index,\n item,\n selected: itemArray.some((itemValue: any) =>\n valuesItems.includes(itemValue)\n ),\n };\n });\n // Remove duplicate items\n const uniqueFormValueArray = Array.from(\n new Set(formValueArray.map((item: any) => JSON.stringify(item)))\n ).map((item: any) => JSON.parse(item));\n\n return uniqueFormValueArray;\n }\n return [];\n }\n\n get selectedLabelMultiCount(): number {\n const show = this.showMaxSelectedLabel || 0;\n const selectedOptions = this.options?.filter((option) =>\n this.formValue?.includes(option.value)\n );\n if (!selectedOptions?.length) {\n return 0;\n }\n\n if (show > 0 && selectedOptions.length > show) {\n return selectedOptions.length - show;\n }\n\n return 0;\n }\n\n removeItem(option: any) {\n this.onSelect(option);\n setTimeout(() => {\n this.showList = false;\n }, 100);\n }\n\n onKeyPress(event: any) {\n event.preventDefault();\n this.renderBoxOptions();\n }\n\n onFilter(event: any) {\n const value = event.target.value;\n if (!value) {\n this.renderBoxOptions();\n return;\n }\n\n if (this.filteredOptions.length) {\n this.renderBoxOptions(value);\n }\n }\n\n onResize() {\n this.renderBoxOptions();\n this.positionBox();\n }\n\n onFocusOut() {\n if (!this.preventEscapeFocus && !this.isMobile) {\n this.isFocused = false;\n this.showList = false;\n }\n }\n\n closeList() {\n this.preventEscapeFocus = true;\n this.isFocused = false;\n this.showList = false;\n }\n\n selectedValue(option: { value: any; label: string; safeHtmlContent: any }) {\n if (this.multiSelect) {\n if (typeof option.value === 'object') {\n if (option && option.value) {\n const valuesItems = this.valueToArray(option.value);\n return this.formValue.some((item: any) => {\n const itemArray = this.valueToArray(item);\n return itemArray.every((itemValue: any) =>\n valuesItems.includes(itemValue)\n );\n });\n }\n } else {\n return this.formValue?.includes(option.value);\n }\n }\n\n return option.value === this.formValue;\n }\n\n private renderBoxOptions(filterValue: string | null = null) {\n if (!this.options || !this.options.length) {\n return;\n }\n this.filteredOptions = this.options\n ?.map((option) => {\n return {\n value: option.value,\n iconPrefix: option.iconPrefix,\n htmlLabel: option.safeHtmlContent || option.label,\n disabled: option.disabled,\n viewOnly: option.viewOnly,\n };\n })\n .filter((option) => {\n if (!filterValue) {\n return true;\n }\n const normalizedFilter = this.normalizeText(filterValue);\n const normalizedLabel = this.normalizeText(\n option.htmlLabel?.toString() || ''\n );\n return normalizedLabel.includes(normalizedFilter);\n });\n }\n\n private normalizeText(text: string): string {\n return text\n .replace(/[\\W_]+/g, '') // Remove caracteres especiais e sublinhados\n .toLowerCase();\n }\n}\n","<div\n class=\"wco-smartSelect\"\n [ngClass]=\"{\n 'wco-smartSelect--open': showList,\n 'wco-smartSelect--isMobile': isMobile,\n}\"\n (resize)=\"onResize()\"\n (mouseleave)=\"onFocusOut()\"\n>\n <div class=\"form-field\">\n <input\n *ngIf=\"!multiSelect\"\n class=\"form-field__input\"\n [ngClass]=\"{\n 'form-field--error':\n autocompleteControl.invalid && autocompleteControl.touched\n }\"\n [disabled]=\"autocompleteControl.disabled\"\n id=\"{{ inputId ? inputId : '' }}\"\n name=\"{{ inputName ? inputName : '' }}\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n (keypress)=\"onKeyPress($event)\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [value]=\"selectedLabel\"\n aria-label=\"Selecione uma opção\"\n />\n <div\n *ngIf=\"multiSelect\"\n class=\"form-field__input readonly multiSelect\"\n [ngClass]=\"{\n 'form-field--error': autocompleteControl.invalid && autocompleteControl.touched,\n 'form-field--disabled': autocompleteControl.disabled,\n }\"\n (click)=\"onFocusIn(true)\"\n (focusin)=\"onFocusIn()\"\n (keyup.escape)=\"onFocusOut()\"\n >\n <ng-container *ngIf=\"!selectedLabelMulti.length\">\n <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma opção' }}</span>\n </ng-container>\n <ng-container *ngIf=\"selectedLabelMulti.length\">\n <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n {{optionSelected.label}} \n <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n <span class=\"material-icons\">close</span>\n </span>\n </span>\n <span class=\"wco-smart-select-item\" *ngIf=\"selectedLabelMultiCount >= 1\">\n +{{selectedLabelMultiCount}} \n </span>\n </ng-container>\n </div>\n <label>{{ label }}</label>\n <span class=\"material-icons\">{{ IconMaterial }}</span>\n </div>\n <div\n class=\"wco-smartSelect--box\"\n [ngClass]=\"{\n 'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n }\"\n >\n <div class=\"wco-smartSelect--isMobile-close\">\n <button\n (click)=\"closeList()\"\n class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n >\n fechar\n </button>\n </div>\n <ul>\n <li\n tabindex=\"0\"\n class=\"wco-smart-selected-filter\"\n *ngIf=\"showList && showSearch\"\n >\n <input\n placeholder=\"buscar\"\n (keyup)=\"onFilter($event)\"\n aria-label=\"Search through site content\"\n type=\"text\"\n />\n </li>\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [tabindex]=\"i + 1\"\n [ngClass]=\"{\n 'wco-smart-selected': selectedValue(option),\n 'wc-smart-select-disabled-option': option.disabled,\n 'wc-smart-select-view-only-option': option.viewOnly,\n }\"\n (click)=\"onSelect(option)\"\n >\n <span class=\"wco-smart-select-label-prefix\">\n <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"typePrefix === 'radio'\">\n <span class=\"material-icons-outlined\">\n {{\n selectedValue(option)\n ? \"radio_button_checked\"\n : \"radio_button_unchecked\"\n }}\n </span>\n </ng-container>\n <ng-container\n *ngIf=\"\n !!option.iconPrefix &&\n typePrefix !== 'radio' &&\n typePrefix !== 'checkbox'\n \"\n >\n <span class=\"material-icons-outlined\">\n {{ option.iconPrefix }}\n </span>\n </ng-container>\n </span>\n <span\n class=\"wco-smart-select-label\"\n [innerHTML]=\"option.htmlLabel\"\n ></span>\n </li>\n <li *ngIf=\"!filteredOptions.length\">\n <p class=\"display-body\">{{ textEmpty }}</p>\n </li>\n </ul>\n </div>\n</div>\n","/*\n * Public API Surface of ngx-fenixds\n */\n\nexport * from './lib/step/step.component';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/upload/upload.component';\nexport * from './lib/upload/upload.types';\n\n\n// msg box feedback\nexport * from './lib/msg-box-feedback/msg-box-feedback.component';\nexport * from './lib/msg-box-feedback/msg-box-feeback.types';\n\n\n\n//msg navtabs\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.types';\n\n\n//Pagination \nexport * from './lib/pagination/pagination.component';\n\n\n// Smart Select\nexport * from './lib/smart-select/smart-select.component';\nexport * from './lib/smart-select/smart-select-options.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -38,12 +38,15 @@ export declare class SmartSelectComponent implements ControlValueAccessor, Valid
38
38
  setDisabledState?(isDisabled: boolean): void;
39
39
  onFocusIn(focus?: boolean): void;
40
40
  positionBox(): void;
41
- onSelect(option: any): void;
41
+ onSelect(option?: any): void;
42
42
  get selectedLabel(): string;
43
43
  get selectedLabelMulti(): {
44
44
  value: string;
45
45
  label: string;
46
46
  }[];
47
+ private valueToArray;
48
+ private compareValueArray;
49
+ private compareMultiValuesArray;
47
50
  get selectedLabelMultiCount(): number;
48
51
  removeItem(option: any): void;
49
52
  onKeyPress(event: any): void;
@@ -1 +1 @@
1
- {"version":3,"file":"smart-select.component.d.ts","sourceRoot":"","sources":["../../../../projects/ngx-components/src/lib/smart-select/smart-select.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,YAAY,EAGZ,SAAS,EAGV,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,WAAW,EAKX,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;;AAE9E,qBAoBa,oBAAqB,YAAW,oBAAoB,EAAE,SAAS;IAoD9D,OAAO,CAAC,EAAE;IAnDuB,OAAO,EAChD,SAAS,CAAC,0BAA0B,CAAC,GACrC,SAAS,CAAC;IAEJ,QAAQ;cAA4B,MAAM;eAAS,GAAG;OAAM;IAItE,OAAO,SAAuD;IAGrD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,SAAqB;IAI1C,WAAW,SAAyB;IAG3B,KAAK,SAAO;IAGrB,UAAU,UAAS;IAInB,SAAS,SAAoC;IAI7C,WAAW,UAAS;IAIpB,oBAAoB,SAAK;IAIzB,UAAU,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAAQ;IAE/C,QAAQ,UAA4B;IAEpC,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,UAAS;IAClB,kBAAkB,UAAS;IAC3B,mBAAmB,mBAAqB;IACxC,eAAe,EAAE,GAAG,EAAE,CAAM;IAE5B,QAAQ,UAAS;gBAEG,EAAE,EAAE,UAAU;IAElC,SAAS,aAEP;IAIF,QAAQ,IAAI,IAAI;IAEhB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAM/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,QAAQ,CAAC,QAAQ,EAAE,WAAW;;;IAa9B,gBAAgB,CAAC,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAS5C,SAAS,CAAC,KAAK,UAAQ;IAUvB,WAAW;IAyBX,QAAQ,CAAC,MAAM,EAAE,GAAG;IAoCpB,IAAI,aAAa,WAOhB;IAGD,IAAI,kBAAkB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAkB3D;IAED,IAAI,uBAAuB,IAAI,MAAM,CAiBpC;IAED,UAAU,CAAC,MAAM,EAAE,GAAG;IAOtB,UAAU,CAAC,KAAK,EAAE,GAAG;IAKrB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAYnB,QAAQ;IAKR,UAAU;IAOV,SAAS;IAMT,aAAa,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE;IAQzE,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;yCAtSV,oBAAoB;2CAApB,oBAAoB;CA2ShC"}
1
+ {"version":3,"file":"smart-select.component.d.ts","sourceRoot":"","sources":["../../../../projects/ngx-components/src/lib/smart-select/smart-select.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,YAAY,EAGZ,SAAS,EAGV,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,WAAW,EAKX,SAAS,EACV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;;AAE9E,qBAoBa,oBAAqB,YAAW,oBAAoB,EAAE,SAAS;IAoD9D,OAAO,CAAC,EAAE;IAnDuB,OAAO,EAChD,SAAS,CAAC,0BAA0B,CAAC,GACrC,SAAS,CAAC;IAEJ,QAAQ;cAA4B,MAAM;eAAS,GAAG;OAAM;IAItE,OAAO,SAAuD;IAGrD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,YAAY,SAAqB;IAI1C,WAAW,SAAyB;IAG3B,KAAK,SAAO;IAGrB,UAAU,UAAS;IAInB,SAAS,SAAoC;IAI7C,WAAW,UAAS;IAIpB,oBAAoB,SAAK;IAIzB,UAAU,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI,CAAQ;IAE/C,QAAQ,UAA4B;IAEpC,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,UAAS;IAClB,kBAAkB,UAAS;IAC3B,mBAAmB,mBAAqB;IACxC,eAAe,EAAE,GAAG,EAAE,CAAM;IAE5B,QAAQ,UAAS;gBAEG,EAAE,EAAE,UAAU;IAIlC,SAAS,aAEP;IAIF,QAAQ,IAAI,IAAI;IAEhB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI1B,gBAAgB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAM/B,iBAAiB,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI;IAIhC,QAAQ,CAAC,QAAQ,EAAE,WAAW;;;IAa9B,gBAAgB,CAAC,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAS5C,SAAS,CAAC,KAAK,UAAQ;IAUvB,WAAW;IAyBX,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG;IAyCrB,IAAI,aAAa,WAOhB;IAGD,IAAI,kBAAkB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAyB3D;IAED,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,uBAAuB;IAuB/B,IAAI,uBAAuB,IAAI,MAAM,CAcpC;IAED,UAAU,CAAC,MAAM,EAAE,GAAG;IAOtB,UAAU,CAAC,KAAK,EAAE,GAAG;IAKrB,QAAQ,CAAC,KAAK,EAAE,GAAG;IAYnB,QAAQ;IAKR,UAAU;IAOV,SAAS;IAMT,aAAa,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAA;KAAE;IAoBzE,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;yCAlXV,oBAAoB;2CAApB,oBAAoB;CAuXhC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wizco/fenixds-ngx",
3
3
  "description": "Componentes fenix design system para Angular.",
4
- "version": "17.0.17",
4
+ "version": "17.0.18",
5
5
  "sideEffects": false,
6
6
  "private": false,
7
7
  "license": "MIT",