@dev-tcloud/tcloud-ui 2.2.0 → 2.2.2

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.
@@ -453,7 +453,7 @@ export class TCloudUiFiltersComponent {
453
453
  this.result.emit(data);
454
454
  }
455
455
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiFiltersComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
456
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiFiltersComponent, selector: "tcloud-ui-filters", inputs: { data: "data", filters: "filters", submitText: "submitText", btnSubmitClass: "btnSubmitClass", useOnChangeSubmit: "useOnChangeSubmit", useButtonSubmit: "useButtonSubmit", useNormalizeCaseSensitive: "useNormalizeCaseSensitive", useRangeDate: "useRangeDate", useFilterAccept: "useFilterAccept" }, outputs: { result: "result", onFilter: "onFilter", onChange: "onChange", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "_formulario", first: true, predicate: ["_formulario"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"show_filters\" class=\"tcloud-ui-filters area-filter\">\r\n <ng-container *ngFor=\"let item of filters; let i = index\">\r\n\r\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\r\n\r\n <ng-container *ngIf=\"item.type === 'date-local'\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker \r\n #_input\r\n name=\"input_{{i+1}}\"\r\n [modeInput]=\"true\"\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"searchIn(item, _input)\">\r\n </tcloud-ui-datepicker>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type !== 'date-local'\">\r\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\r\n\r\n <ng-container *ngIf=\"(item.id === 'start' || item.id === 'stop') && useRangeDate\">\r\n <!-- PERIOD RANGE DATE -->\r\n <ng-container *ngIf=\"item.id === 'start'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+start_stop_width+''+start_stop_und : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(_range_date && _range_date.result && _range_date.result.start && _range_date.result.stop )\" class=\"fas fa-filter icon-filter\"></i>&nbsp;</div>\r\n <range-date \r\n #_range_date ngModel name=\"input_{{i+1}}\" \r\n [defaultValuePeriodStartStop]=\"item.defaultValuePeriodStartStop\"\r\n [descriptionStart]=\"descriptionStart\"\r\n [descriptionStop]=\"descriptionStop\"\r\n required \r\n (onChange)=\"searchInRange(_range_date); searchIn(item, _range_date)\">\r\n </range-date>\r\n </div>\r\n </ng-container> \r\n <input *ngIf=\"item.id === 'start'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"start_value\"> \r\n <input *ngIf=\"item.id === 'stop'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"stop_value\"> \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.id || !useRangeDate\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker-time \r\n #_input \r\n [(ngModel)]=\"item.value\" \r\n name=\"input_{{i+1}}\" \r\n [useOptionsDateTime]=\"(item && item.useOptionsDateTime) ? true : false\"\r\n (eventChange)=\"searchIn(item, _input)\" >\r\n </tcloud-ui-datepicker-time>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local' && item.type !== 'date-local'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <input \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \r\n class=\"tc-form-control\" \r\n (keyup)=\"searchIn(item, $event)\"> \r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <select \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n name=\"input_{{i+1}}\" \r\n class=\"tc-form-control\" \r\n (change)=\"searchIn(item, $event)\">\r\n <option [ngValue]=\"\"></option>\r\n <ng-container *ngFor=\"let v of item.data\">\r\n <option [value]=\"v.value\">{{ v.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\r\n \r\n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis\" title=\"{{ item.description }}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"area-input-checkbox\">\r\n <div class=\"tc-form-control\">\r\n <label>\r\n {{ item.placeholder }}\r\n <input \r\n #_input\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"checkbox\" \r\n (change)=\"searchIn(item, _input.checked)\"> \r\n </label>\r\n </div> \r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\r\n <button type=\"button\" class=\"tc-btn {{ btnSubmitClass }}\" (click)=\"toSubmit()\" >{{ submitText }}</button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <pre>{{ inputs | json }}</pre> -->\r\n<!-- <pre> {{ data | json }} </pre> -->\r\n\r\n<!-- <p>FILTERS</p><pre> {{ filters | json }}</pre> -->\r\n\r\n<!--\r\n <pre>start_stop: {{ start_stop }}</pre>\r\n <pre>start_stop_width: {{ start_stop_width }}</pre>\r\n <pre>start_stop_und: {{ start_stop_und }}</pre>\r\n-->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--tc-primary)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.area-input-checkbox div.tc-form-control{height:40px}.m-description{margin-bottom:3px}input{color:#535353}input[type=text],input[type=number],select{height:40px!important}.type-hidden{display:none;width:0px!important}.box-type-global_vars{display:none!important;width:0px!important}.tc-title-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel", "useOptionsDateTime"], outputs: ["ngModelChange", "onChange", "eventChange"] }, { kind: "component", type: i4.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "childInputDateTime", "ngModel", "code"], outputs: ["onChange", "ngModelChange"] }, { kind: "component", type: i5.TCloudUiRangeDateComponent, selector: "range-date", inputs: ["defaultValuePeriodStartStop", "required", "descriptionStart", "descriptionStop"], outputs: ["onChange"] }] }); }
456
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiFiltersComponent, selector: "tcloud-ui-filters", inputs: { data: "data", filters: "filters", submitText: "submitText", btnSubmitClass: "btnSubmitClass", useOnChangeSubmit: "useOnChangeSubmit", useButtonSubmit: "useButtonSubmit", useNormalizeCaseSensitive: "useNormalizeCaseSensitive", useRangeDate: "useRangeDate", useFilterAccept: "useFilterAccept" }, outputs: { result: "result", onFilter: "onFilter", onChange: "onChange", onSubmit: "onSubmit" }, viewQueries: [{ propertyName: "_formulario", first: true, predicate: ["_formulario"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"show_filters\" class=\"tcloud-ui-filters area-filter\">\r\n <ng-container *ngFor=\"let item of filters; let i = index\">\r\n\r\n <ng-container *ngIf=\"!item.type || (item.type && item.type !== 'boolean')\">\r\n\r\n <ng-container *ngIf=\"item.type === 'date-local'\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker \r\n #_input\r\n name=\"input_{{i+1}}\"\r\n [modeInput]=\"true\"\r\n [(ngModel)]=\"item.value\"\r\n (ngModelChange)=\"searchIn(item, _input)\">\r\n </tcloud-ui-datepicker>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type !== 'date-local'\">\r\n <ng-container *ngIf=\"item.type === 'datetime-local'\">\r\n\r\n <ng-container *ngIf=\"(item.id === 'start' || item.id === 'stop') && useRangeDate\">\r\n <!-- PERIOD RANGE DATE -->\r\n <ng-container *ngIf=\"item.id === 'start'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+start_stop_width+''+start_stop_und : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(_range_date && _range_date.result && _range_date.result.start && _range_date.result.stop )\" class=\"fas fa-filter icon-filter\"></i>&nbsp;</div>\r\n <range-date \r\n #_range_date ngModel name=\"input_{{i+1}}\" \r\n [defaultValuePeriodStartStop]=\"item.defaultValuePeriodStartStop\"\r\n [descriptionStart]=\"descriptionStart\"\r\n [descriptionStop]=\"descriptionStop\"\r\n required \r\n (onChange)=\"searchInRange(_range_date); searchIn(item, _range_date)\">\r\n </range-date>\r\n </div>\r\n </ng-container> \r\n <input *ngIf=\"item.id === 'start'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"start_value\"> \r\n <input *ngIf=\"item.id === 'stop'\" #_input name=\"input_{{i+1}}\" type=\"hidden\" [(ngModel)]=\"stop_value\"> \r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!item.id || !useRangeDate\">\r\n\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"(item.value !== undefined && item.value !== null && item.value !== '')\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <tcloud-ui-datepicker-time \r\n #_input \r\n [(ngModel)]=\"item.value\" \r\n name=\"input_{{i+1}}\" \r\n [useOptionsDateTime]=\"(item && item.useOptionsDateTime) ? true : false\"\r\n (eventChange)=\"searchIn(item, _input)\" >\r\n </tcloud-ui-datepicker-time>\r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"!(item.value !== undefined && item.value !== null && item.value !== '')\" (click)=\"searchIn(item, null); item.searchText = undefined; item.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"item.type !== 'select' && item.type !== 'datetime-local' && item.type !== 'date-local'\">\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <input \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"{{ (item.type === 'number') ? 'text' : item.type }}\" \r\n class=\"tc-form-control\" \r\n (keyup)=\"searchIn(item, $event)\"> \r\n <button class=\"btn-clear-filter-text\" [class.to-hide]=\"_input.value === ''\" (click)=\"searchIn(item, null); _input.value = ''\">\r\n <i class=\"fas fa-times\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"item.type === 'select' && item.data && (item.data).length > 0\" >\r\n <div class=\"box-filter-input type-{{item.type}} box-type-{{item.type}}\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n\r\n <div class=\"m-description tc-title-ellipsis box-type-{{item.type}}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.value !== ''\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"box-type-{{item.type}}\">\r\n <select \r\n #_input\r\n [(ngModel)]=\"item.value\"\r\n name=\"input_{{i+1}}\" \r\n class=\"tc-form-control\" \r\n (change)=\"searchIn(item, $event)\">\r\n <option [ngValue]=\"\"></option>\r\n <ng-container *ngFor=\"let v of item.data\">\r\n <option [value]=\"v.value\">{{ v.description }}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n\r\n <ng-container *ngIf=\"item.type && item.type === 'boolean'\">\r\n \r\n <div class=\"box-filter-input\" [style]=\"(item.width !== '') ? 'width:'+item.width : ''\">\r\n <div class=\"m-description tc-title-ellipsis\" title=\"{{ item.description }}\" title=\"{{ item.description }}\"><i [class.to-active]=\"_input.checked === true\" class=\"fas fa-filter icon-filter\"></i>&nbsp;{{ item.description }}</div>\r\n <div class=\"area-input-checkbox\">\r\n <div class=\"tc-form-control\">\r\n <label>\r\n {{ item.placeholder }}\r\n <input \r\n #_input\r\n placeholder=\"{{ (item.placeholder !== '') ? item.placeholder : '' }}\"\r\n name=\"input_{{i+1}}\" \r\n type=\"checkbox\" \r\n (change)=\"searchIn(item, _input.checked)\"> \r\n </label>\r\n </div> \r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"text-right mb-1 mr-1\" *ngIf=\"useButtonSubmit\">\r\n <button type=\"button\" class=\"tc-btn {{ btnSubmitClass }}\" (click)=\"toSubmit()\" >{{ submitText }}</button>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- <pre>{{ inputs | json }}</pre> -->\r\n<!-- <pre> {{ data | json }} </pre> -->\r\n\r\n<!-- <p>FILTERS</p><pre> {{ filters | json }}</pre> -->\r\n\r\n<!--\r\n <pre>start_stop: {{ start_stop }}</pre>\r\n <pre>start_stop_width: {{ start_stop_width }}</pre>\r\n <pre>start_stop_und: {{ start_stop_und }}</pre>\r\n-->", styles: [".box-filter-input{display:inline-grid;padding:10px 5px;position:relative}.area-filter{border:1px solid #eeeeee;border-radius:5px;margin-bottom:5px}.btn-clear-filter-text{position:absolute;right:8px;top:38px;background-color:#fff;border:none;cursor:pointer;color:#aaa}.to-hide{display:none}.icon-filter{color:#ccc}.to-active{color:var(--tc-primary)}.area-input-checkbox label{cursor:pointer;margin-bottom:0;color:#9f9f9f}.area-input-checkbox div.tc-form-control{height:40px}.m-description{margin-bottom:3px}input{color:#535353}input[type=text],input[type=number],select{height:40px!important}.type-hidden{display:none;width:0px!important}.box-type-global_vars{display:none!important;width:0px!important}.tc-title-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TCloudUiDatepickerTimeComponent, selector: "tcloud-ui-datepicker-time", inputs: ["ngModel", "useOptionsDateTime"], outputs: ["ngModelChange", "onChange", "eventChange"] }, { kind: "component", type: i4.TCloudUiDatepickerComponent, selector: "tcloud-ui-datepicker", inputs: ["multiple", "maxNumberOfDates", "daysOfWeekDisabled", "minDate", "maxDate", "datesDisabled", "modeInput", "useBorder", "childInputDateTime", "startViewInMinDate", "startViewInMaxDate", "disabled", "ngModel", "code"], outputs: ["onChange", "ngModelChange", "onCheckDate"] }, { kind: "component", type: i5.TCloudUiRangeDateComponent, selector: "range-date", inputs: ["defaultValuePeriodStartStop", "required", "descriptionStart", "descriptionStop"], outputs: ["onChange"] }] }); }
457
457
  }
458
458
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiFiltersComponent, decorators: [{
459
459
  type: Component,
@@ -92,11 +92,11 @@ export class TCloudUiReorderItemsComponent {
92
92
  return items;
93
93
  }
94
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiReorderItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiReorderItemsComponent, selector: "tcloud-ui-reorder-items", inputs: { items: "items" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<ng-container *ngIf=\"sort_items\">\n\n\n\n <table class=\"table-sort-items\">\n\n \n\n\n <ng-container *ngFor=\"let item of sort_items; let i = index\">\n\n <tr>\n\n <td class=\"area-name-description-item\">\n {{ item }}\n <div *ngIf=\"get_description(item)\" class=\"item-description\">\n {{ get_description(item) }}\n </div>\n </td>\n\n <td class=\"area-action-item\">\n \n <ng-container>\n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i-1))\" title=\"Alterar para cima\" [disabled]=\"i===0\">\n <i class=\"fas fa-caret-up p-up\" ></i>\n </button>\n </div>\n \n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i+1))\" title=\"Alterar para baixo\" [disabled]=\"(i+1) === (sort_items).length\">\n <i class=\"fas fa-caret-down p-down\"></i>\n </button>\n \n </div>\n </ng-container>\n </td>\n\n </tr>\n </ng-container> \n\n </table>\n \n </ng-container>", styles: [".table-sort-items{width:100%;border-collapse:initial}.order-control{text-align:center}.btn-item-action-arrow{border:none;background:none;cursor:pointer;padding:0;color:var(--tc-primary);font-size:16px;line-height:0}.btn-item-action-arrow:disabled{opacity:.4;cursor:not-allowed!important}.item-description{color:#a2a2a2}.area-name-description-item{border-radius:15px 0 0 15px;border:1px solid #ccc;padding:10px}.area-action-item{background-color:var(--tc-gray-50);border-radius:0 15px 15px 0;border:1px solid #ccc;padding:10px;width:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiReorderItemsComponent, selector: "tcloud-ui-reorder-items", inputs: { items: "items" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<ng-container *ngIf=\"sort_items\">\n\n\n\n <table class=\"table-sort-items\">\n\n \n\n\n <ng-container *ngFor=\"let item of sort_items; let i = index\">\n\n <tr>\n\n <td class=\"area-name-description-item\">\n {{ item }}\n <div *ngIf=\"get_description(item)\" class=\"item-description\">\n {{ get_description(item) }}\n </div>\n </td>\n\n <td class=\"area-action-item\">\n \n <ng-container>\n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i-1))\" title=\"Alterar para cima\" [disabled]=\"i===0\">\n <i class=\"fas fa-caret-up p-up\" ></i>\n </button>\n </div>\n \n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i+1))\" title=\"Alterar para baixo\" [disabled]=\"(i+1) === (sort_items).length\">\n <i class=\"fas fa-caret-down p-down\"></i>\n </button>\n \n </div>\n </ng-container>\n </td>\n\n </tr>\n </ng-container> \n\n </table>\n \n </ng-container>", styles: [".table-sort-items{width:100%;border-collapse:initial}.order-control{text-align:center}.btn-item-action-arrow{border:none;background:none;cursor:pointer;padding:0;color:var(--tc-primary);font-size:16px;line-height:0}.btn-item-action-arrow:disabled{opacity:.4;cursor:not-allowed!important}.item-description{color:#a2a2a2}.area-name-description-item{border-radius:13px 0 0 13px;border:1px solid #ccc;padding:3px 13px}.area-action-item{background-color:var(--tc-gray-50);border-radius:0 13px 13px 0;border:1px solid #ccc;padding:3px;width:40px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiReorderItemsComponent, decorators: [{
98
98
  type: Component,
99
- args: [{ selector: 'tcloud-ui-reorder-items', template: "<ng-container *ngIf=\"sort_items\">\n\n\n\n <table class=\"table-sort-items\">\n\n \n\n\n <ng-container *ngFor=\"let item of sort_items; let i = index\">\n\n <tr>\n\n <td class=\"area-name-description-item\">\n {{ item }}\n <div *ngIf=\"get_description(item)\" class=\"item-description\">\n {{ get_description(item) }}\n </div>\n </td>\n\n <td class=\"area-action-item\">\n \n <ng-container>\n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i-1))\" title=\"Alterar para cima\" [disabled]=\"i===0\">\n <i class=\"fas fa-caret-up p-up\" ></i>\n </button>\n </div>\n \n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i+1))\" title=\"Alterar para baixo\" [disabled]=\"(i+1) === (sort_items).length\">\n <i class=\"fas fa-caret-down p-down\"></i>\n </button>\n \n </div>\n </ng-container>\n </td>\n\n </tr>\n </ng-container> \n\n </table>\n \n </ng-container>", styles: [".table-sort-items{width:100%;border-collapse:initial}.order-control{text-align:center}.btn-item-action-arrow{border:none;background:none;cursor:pointer;padding:0;color:var(--tc-primary);font-size:16px;line-height:0}.btn-item-action-arrow:disabled{opacity:.4;cursor:not-allowed!important}.item-description{color:#a2a2a2}.area-name-description-item{border-radius:15px 0 0 15px;border:1px solid #ccc;padding:10px}.area-action-item{background-color:var(--tc-gray-50);border-radius:0 15px 15px 0;border:1px solid #ccc;padding:10px;width:40px}\n"] }]
99
+ args: [{ selector: 'tcloud-ui-reorder-items', template: "<ng-container *ngIf=\"sort_items\">\n\n\n\n <table class=\"table-sort-items\">\n\n \n\n\n <ng-container *ngFor=\"let item of sort_items; let i = index\">\n\n <tr>\n\n <td class=\"area-name-description-item\">\n {{ item }}\n <div *ngIf=\"get_description(item)\" class=\"item-description\">\n {{ get_description(item) }}\n </div>\n </td>\n\n <td class=\"area-action-item\">\n \n <ng-container>\n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i-1))\" title=\"Alterar para cima\" [disabled]=\"i===0\">\n <i class=\"fas fa-caret-up p-up\" ></i>\n </button>\n </div>\n \n <div class=\"order-control\">\n <button class=\"btn-item-action-arrow\" (click)=\"move(item, i, (i+1))\" title=\"Alterar para baixo\" [disabled]=\"(i+1) === (sort_items).length\">\n <i class=\"fas fa-caret-down p-down\"></i>\n </button>\n \n </div>\n </ng-container>\n </td>\n\n </tr>\n </ng-container> \n\n </table>\n \n </ng-container>", styles: [".table-sort-items{width:100%;border-collapse:initial}.order-control{text-align:center}.btn-item-action-arrow{border:none;background:none;cursor:pointer;padding:0;color:var(--tc-primary);font-size:16px;line-height:0}.btn-item-action-arrow:disabled{opacity:.4;cursor:not-allowed!important}.item-description{color:#a2a2a2}.area-name-description-item{border-radius:13px 0 0 13px;border:1px solid #ccc;padding:3px 13px}.area-action-item{background-color:var(--tc-gray-50);border-radius:0 13px 13px 0;border:1px solid #ccc;padding:3px;width:40px}\n"] }]
100
100
  }], propDecorators: { items: [{
101
101
  type: Input
102
102
  }], itemsChange: [{
@@ -1,21 +1,46 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
3
4
  export class TCloudUiScrollBoxComponent {
4
5
  constructor() {
5
6
  this.border = true;
6
- this.maxHeight = 400;
7
+ this.maxHeight = '400';
8
+ this.unidade = 'px';
7
9
  }
8
10
  ngOnInit() {
11
+ let und = '';
12
+ if (`${this.maxHeight}`) {
13
+ und = this.retirarNumeros(`${this.maxHeight}`);
14
+ }
15
+ console.log("und", und);
16
+ if (((und) && (und).trim() === '') || !und) {
17
+ this.unidade = 'px';
18
+ }
19
+ else {
20
+ this.unidade = (und).toLowerCase();
21
+ }
22
+ this.maxHeight = (`${this.maxHeight}`).replace(this.unidade, '');
23
+ if (this.unidade === 'vh') {
24
+ this.style_height = { 'height': this.maxHeight + this.unidade };
25
+ }
26
+ else {
27
+ this.style_height = { 'max-height': this.maxHeight + this.unidade };
28
+ }
29
+ }
30
+ retirarNumeros(str) {
31
+ // Utiliza regex para substituir todos os dígitos por uma string vazia
32
+ const resultado = str.replace(/\d/g, '');
33
+ return resultado;
9
34
  }
10
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiScrollBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiScrollBoxComponent, selector: "tcloud-ui-scroll-box", inputs: { border: "border", maxHeight: "maxHeight" }, ngImport: i0, template: "<div class=\"tcloud-ui-scroll-box tc-box-scroll\" [class.tc-box-scroll-border]=\"border\" >\r\n <div class=\"box-content\" [style]=\"'max-height: '+maxHeight+'px'\" >\r\n <ng-content></ng-content>\r\n </div> \r\n</div>\r\n", styles: [".tc-box-scroll ::-webkit-scrollbar{width:13px}.tc-box-scroll ::-webkit-scrollbar-track{background:#F1F1F1;border-radius:15px}.tc-box-scroll ::-webkit-scrollbar-thumb{background:var(--tc-primary);border-radius:10px}.tc-box-scroll ::-webkit-scrollbar-thumb:hover{background:#2B95A0}.tc-box-scroll .box-content{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--tc-primary) #F1F1F1;scrollbar-gutter:stable}.tc-box-scroll-border{border:1px solid #eee;border-radius:10px;overflow:hidden}\n"] }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TCloudUiScrollBoxComponent, selector: "tcloud-ui-scroll-box", inputs: { border: "border", maxHeight: "maxHeight" }, ngImport: i0, template: "<div class=\"tcloud-ui-scroll-box tc-box-scroll\" [class.tc-box-scroll-border]=\"border\" >\r\n <div class=\"box-content\" [ngStyle]=\"style_height\" >\r\n <ng-content></ng-content>\r\n </div> \r\n</div>", styles: [".tc-box-scroll ::-webkit-scrollbar{width:13px}.tc-box-scroll ::-webkit-scrollbar-track{background:#F1F1F1;border-radius:15px}.tc-box-scroll ::-webkit-scrollbar-thumb{background:var(--tc-primary);border-radius:10px}.tc-box-scroll ::-webkit-scrollbar-thumb:hover{background:#2B95A0}.tc-box-scroll .box-content{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--tc-primary) #F1F1F1;scrollbar-gutter:stable}.tc-box-scroll-border{border:1px solid #eee;border-radius:10px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
12
37
  }
13
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TCloudUiScrollBoxComponent, decorators: [{
14
39
  type: Component,
15
- args: [{ selector: 'tcloud-ui-scroll-box', template: "<div class=\"tcloud-ui-scroll-box tc-box-scroll\" [class.tc-box-scroll-border]=\"border\" >\r\n <div class=\"box-content\" [style]=\"'max-height: '+maxHeight+'px'\" >\r\n <ng-content></ng-content>\r\n </div> \r\n</div>\r\n", styles: [".tc-box-scroll ::-webkit-scrollbar{width:13px}.tc-box-scroll ::-webkit-scrollbar-track{background:#F1F1F1;border-radius:15px}.tc-box-scroll ::-webkit-scrollbar-thumb{background:var(--tc-primary);border-radius:10px}.tc-box-scroll ::-webkit-scrollbar-thumb:hover{background:#2B95A0}.tc-box-scroll .box-content{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--tc-primary) #F1F1F1;scrollbar-gutter:stable}.tc-box-scroll-border{border:1px solid #eee;border-radius:10px;overflow:hidden}\n"] }]
40
+ args: [{ selector: 'tcloud-ui-scroll-box', template: "<div class=\"tcloud-ui-scroll-box tc-box-scroll\" [class.tc-box-scroll-border]=\"border\" >\r\n <div class=\"box-content\" [ngStyle]=\"style_height\" >\r\n <ng-content></ng-content>\r\n </div> \r\n</div>", styles: [".tc-box-scroll ::-webkit-scrollbar{width:13px}.tc-box-scroll ::-webkit-scrollbar-track{background:#F1F1F1;border-radius:15px}.tc-box-scroll ::-webkit-scrollbar-thumb{background:var(--tc-primary);border-radius:10px}.tc-box-scroll ::-webkit-scrollbar-thumb:hover{background:#2B95A0}.tc-box-scroll .box-content{overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--tc-primary) #F1F1F1;scrollbar-gutter:stable}.tc-box-scroll-border{border:1px solid #eee;border-radius:10px;overflow:hidden}\n"] }]
16
41
  }], ctorParameters: function () { return []; }, propDecorators: { border: [{
17
42
  type: Input
18
43
  }], maxHeight: [{
19
44
  type: Input
20
45
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLXNjcm9sbC1ib3gvdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLXNjcm9sbC1ib3gvdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBT3pELE1BQU0sT0FBTywwQkFBMEI7SUFLckM7UUFIUyxXQUFNLEdBQVksSUFBSSxDQUFDO1FBQ3ZCLGNBQVMsR0FBVyxHQUFHLENBQUM7SUFFakIsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzsrR0FSVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixrSENQdkMsZ1BBS0E7OzRGREVhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxzQkFBc0I7MEVBTXZCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1zY3JvbGwtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1zY3JvbGwtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaVNjcm9sbEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbWF4SGVpZ2h0OiBudW1iZXIgPSA0MDA7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidGNsb3VkLXVpLXNjcm9sbC1ib3ggdGMtYm94LXNjcm9sbFwiIFtjbGFzcy50Yy1ib3gtc2Nyb2xsLWJvcmRlcl09XCJib3JkZXJcIiA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm94LWNvbnRlbnRcIiBbc3R5bGVdPVwiJ21heC1oZWlnaHQ6ICcrbWF4SGVpZ2h0KydweCdcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+ICAgIFxyXG48L2Rpdj5cclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLXNjcm9sbC1ib3gvdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGNsb3VkLXVpL3NyYy9saWIvX21vZHVsZXMvdGNsb3VkLXVpLXNjcm9sbC1ib3gvdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU96RCxNQUFNLE9BQU8sMEJBQTBCO0lBUXJDO1FBTlMsV0FBTSxHQUFZLElBQUksQ0FBQztRQUN2QixjQUFTLEdBQW9CLEtBQUssQ0FBQztRQUU1QyxZQUFPLEdBQVcsSUFBSSxDQUFDO0lBR1AsQ0FBQztJQUVqQixRQUFRO1FBQ04sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNyQjthQUFJO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDO1NBQzdEO2FBQUk7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3hCLHNFQUFzRTtRQUN0RSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQW5DWSwwQkFBMEI7bUdBQTFCLDBCQUEwQixrSENQdkMsNk5BSU07OzRGREdPLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxzQkFBc0I7MEVBTXZCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RjbG91ZC11aS1zY3JvbGwtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RjbG91ZC11aS1zY3JvbGwtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGNsb3VkLXVpLXNjcm9sbC1ib3guY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUQ2xvdWRVaVNjcm9sbEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgYm9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbWF4SGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnNDAwJztcblxuICB1bmlkYWRlOiBzdHJpbmcgPSAncHgnO1xuICBzdHlsZV9oZWlnaHQ6IGFueSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCB1bmQgPSAnJztcbiAgICBpZiggYCR7dGhpcy5tYXhIZWlnaHR9YCApe1xuICAgICAgdW5kID0gdGhpcy5yZXRpcmFyTnVtZXJvcyhgJHt0aGlzLm1heEhlaWdodH1gKTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coXCJ1bmRcIix1bmQpO1xuXG4gICAgaWYoICgodW5kKSAmJiAodW5kKS50cmltKCkgPT09ICcnKSB8fCAhdW5kICl7XG4gICAgICB0aGlzLnVuaWRhZGUgPSAncHgnO1xuICAgIH1lbHNle1xuICAgICAgdGhpcy51bmlkYWRlID0gKHVuZCkudG9Mb3dlckNhc2UoKTsgICAgICBcbiAgICB9XG5cbiAgICB0aGlzLm1heEhlaWdodCA9IChgJHt0aGlzLm1heEhlaWdodH1gKS5yZXBsYWNlKHRoaXMudW5pZGFkZSwgJycpO1xuICAgIGlmKCB0aGlzLnVuaWRhZGUgPT09ICd2aCcgKXsgICAgICBcbiAgICAgIHRoaXMuc3R5bGVfaGVpZ2h0ID0geydoZWlnaHQnOiB0aGlzLm1heEhlaWdodCt0aGlzLnVuaWRhZGV9O1xuICAgIH1lbHNle1xuICAgICAgdGhpcy5zdHlsZV9oZWlnaHQgPSB7J21heC1oZWlnaHQnOiB0aGlzLm1heEhlaWdodCt0aGlzLnVuaWRhZGV9O1xuICAgIH1cbiAgfVxuXG4gIHJldGlyYXJOdW1lcm9zKHN0cjogc3RyaW5nKSB7XG4gICAgLy8gVXRpbGl6YSByZWdleCBwYXJhIHN1YnN0aXR1aXIgdG9kb3Mgb3MgZMOtZ2l0b3MgcG9yIHVtYSBzdHJpbmcgdmF6aWFcbiAgICBjb25zdCByZXN1bHRhZG8gPSBzdHIucmVwbGFjZSgvXFxkL2csICcnKTtcbiAgICByZXR1cm4gcmVzdWx0YWRvO1xufVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidGNsb3VkLXVpLXNjcm9sbC1ib3ggdGMtYm94LXNjcm9sbFwiIFtjbGFzcy50Yy1ib3gtc2Nyb2xsLWJvcmRlcl09XCJib3JkZXJcIiA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm94LWNvbnRlbnRcIiBbbmdTdHlsZV09XCJzdHlsZV9oZWlnaHRcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+ICAgIFxyXG48L2Rpdj4iXX0=