keevo-components 1.8.0 → 1.8.1
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.
|
@@ -164,11 +164,11 @@ export class TreetableComponent {
|
|
|
164
164
|
: false;
|
|
165
165
|
}
|
|
166
166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ 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: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ 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: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i4.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i5.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6.InputText, selector: "[pInputText]" }, { kind: "component", type: i7.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i8.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
168
168
|
}
|
|
169
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, decorators: [{
|
|
170
170
|
type: Component,
|
|
171
|
-
args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
171
|
+
args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
172
172
|
}], propDecorators: { config: [{
|
|
173
173
|
type: Input
|
|
174
174
|
}], dataSource: [{
|
|
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
191
191
|
type: HostListener,
|
|
192
192
|
args: ['window:resize', ['$event']]
|
|
193
193
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVdyRixNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBT0UsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFFN0Isa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFLZixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVqQyxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7S0E0S3BFO0lBMUtDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUdELGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFZO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENB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QUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBWSxFQUFFLE9BQVk7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtZQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1lBQzlELENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDOytHQTFMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzWkNYL0IseXZaQTJTTTs7NEZEaFNPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzhCQVdoQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9QLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEt2TWVudUl0ZW0gfSBmcm9tICcuLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gJy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlJztcclxuaW1wb3J0IHsgTWVudUl0ZW1Db21tYW5kRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXRyZWUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVldGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWV0YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVldGFibGVDb21wb25lbnQge1xyXG5cclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIGNvbW1hbmRFdmVudCE6IE1lbnVJdGVtQ29tbWFuZEV2ZW50O1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY29lc0xpbmhhVGFiZWxhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbUxvdGUocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbUxvdGUuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVHJlZVRhYmxlLCBldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hSW5pY2lhbCA9XHJcbiAgICAgICAgKCRldmVudD8uZmlyc3QgPiAwID8gJGV2ZW50LmZpcnN0IC8gJGV2ZW50LnJvd3MgOiAkZXZlbnQuZmlyc3QpICsgMTtcclxuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcclxuICAgICAgbGV0IG9yZGVuYWNhbyA9ICcnO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5nbG9iYWxGaWx0ZXIpIHRlcm1vUGVzcXVpc2EgPSAkZXZlbnQuZ2xvYmFsRmlsdGVyO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5zb3J0RmllbGQpXHJcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7JGV2ZW50LnNvcnRGaWVsZH0gJHskZXZlbnQuc29ydE9yZGVyID09PSAxID8gJ0FTQycgOiAnREVTQydcclxuICAgICAgICAgIH1gO1xyXG5cclxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xyXG4gICAgICAgIHBhZ2luYUluaWNpYWw6IHBhZ2luYUluaWNpYWwsXHJcbiAgICAgICAgdGFtYW5ob1BhZ2luYTogJGV2ZW50LnJvd3MsXHJcbiAgICAgICAgdGVybW9QZXNxdWlzYTogdGVybW9QZXNxdWlzYSxcclxuICAgICAgICBvcmRlbmFjYW86IG9yZGVuYWNhbyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMub25QYWdpbmF0ZS5lbWl0KG9iamV0byk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm5TdHlsZVJvdyhjb2w6IGFueSwgcm93Tm9kZTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGlzRmlyc3RDb2x1bW4gPSBjb2wuZmllbGQgPT09IHRoaXMuY29uZmlnLmNvbHVtbnNbMF0uZmllbGQ7XHJcbiAgICBjb25zdCBiYXNlT3BhY2l0eSA9IDE7XHJcbiAgICBjb25zdCBtYXhMZXZlbHMgPSA0O1xyXG5cclxuICAgIGlmIChpc0ZpcnN0Q29sdW1uICYmIHJvd05vZGUubGV2ZWwgPj0gMCkge1xyXG4gICAgICBjb25zdCBvcGFjaXR5ID0gYmFzZU9wYWNpdHkgLSAocm93Tm9kZS5sZXZlbCAvIG1heExldmVscyk7XHJcblxyXG4gICAgICByZXR1cm4gYGJvcmRlci1sZWZ0OiBzb2xpZCA0cHggcmdiYSg1OSwgMTEwLCAxNTgsICR7b3BhY2l0eX0pICFpbXBvcnRhbnQ7YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocm93Tm9kZS5sZXZlbCA9PSAwKVxyXG4gICAgICByZXR1cm4gJ2JvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50J1xyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGFsaWduQ29sdW5hc0hlYWRlcihjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQ6IGVuZCc7XHJcbiAgICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcbiAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuY2VudHJhbGl6ZSkge1xyXG4gICAgICByZXR1cm4gJ3RleHQtYWxpZ246IGNlbnRlcjsgJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGFsaWduQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIHJldHVybiBgdGV4dC1hbGlnbjogJHtjb2wuYWxpZ259YDtcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBjcmlhck1lbnVzTW9kYWwoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9ucyAmJiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5jb25maWcuYWN0aW9ucy5tYXAoKGFjdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdpY29uJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICd0b29sdGlwJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcFBvc2l0aW9uID0gdGhpcy5yZXRvcm5hckNhbXBvKFxyXG4gICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICd0b29sdGlwUG9zaXRpb24nXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdsYWJlbCcpO1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQ6IGFueSA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdjb21tYW5kJyk7XHJcbiAgICAgICAgY29uc3QgdmlzaWJsZTogYm9vbGVhbiA9IGFjdGlvbi52aXNpYmxlID8gYWN0aW9uLnZpc2libGUoZGF0YSkgOiB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGRpc2FibGVkOiBib29sZWFuID0gYWN0aW9uLmRpc2FibGVkXHJcbiAgICAgICAgICA/IGFjdGlvbi5kaXNhYmxlZChkYXRhKVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgbWVudUluc2VydDogS3ZNZW51SXRlbSA9IHtcclxuICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgaWNvbixcclxuICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb24sXHJcbiAgICAgICAgICBjb21tYW5kLFxyXG4gICAgICAgICAgZGlzYWJsZWQsXHJcbiAgICAgICAgICB2aXNpYmxlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5tZW51SXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHgpID0+IHguY29tbWFuZCA9PSBtZW51SW5zZXJ0LmNvbW1hbmRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5sZW5ndGggPT0gMCkgdGhpcy5tZW51SXRlbXMucHVzaChtZW51SW5zZXJ0KTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LmxhYmVsICE9IGl0ZW1bMF0ubGFiZWwpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC52aXNpYmxlICE9IGl0ZW1bMF0udmlzaWJsZSkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LmRpc2FibGVkICE9IGl0ZW1bMF0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0b3JuYXJDYW1wbyhhY3Rpb246IEt2TWVudUl0ZW0sIHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBfZnVuY3Rpb24gPSBhY3Rpb24uZHluYW1pY2ZpZWxkc1xyXG4gICAgICA/IChhY3Rpb24uZHluYW1pY2ZpZWxkc1tmaWVsZF0gYXMgRnVuY3Rpb24pXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IF9maWVsZDogc3RyaW5nID0gX2Z1bmN0aW9uXHJcbiAgICAgID8gX2Z1bmN0aW9uLmFwcGx5KGFjdGlvbiwgW3Jvd0RhdGFdKVxyXG4gICAgICA6IGFjdGlvbltmaWVsZF07XHJcbiAgICByZXR1cm4gX2ZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZXhpYmlyQ2FtcG8oZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVBY3Rpb25Qb3NpdGlvbihyb3dOb2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zUGFpICYmIHJvd05vZGUubGV2ZWwgPT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgZWxzZSByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcblxyXG4gIGRvdWJsZUNsaWNrKGU6IGFueSwgcm93RGF0YTogYW55KSB7XHJcblxyXG4gICAgbGV0IGV2ZW50RG91YmxlQ2xpY2sgPSB7IGV2ZW50OiBlLCByb3dEYXRhOiByb3dEYXRhIH07XHJcblxyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZS50YXJnZXQuY2xhc3NMaXN0LmZvckVhY2goKHg6IGFueSkgPT4gYXJyYXkucHVzaCh4KSk7XHJcblxyXG4gICAgLy8gaWYgKGFycmF5LmZpbmQoKHg6IGFueSkgPT4geCA9PSAnbmctc3Rhci1pbnNlcnRlZCcpICE9IHVuZGVmaW5lZClcclxuICAgIHRoaXMuZG91YmxlQ2xpY2tFdmVudC5lbWl0KGV2ZW50RG91YmxlQ2xpY2spO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGE6IGFueSwgcm93Tm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uKHJvd0RhdGEsIHJvd05vZGUpXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2PlxyXG4gICAgPHAtdHJlZVRhYmxlXHJcbiAgICAgICAgI3R0XHJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgICAgICBbcmVzaXphYmxlQ29sdW1uc109XCJ0cnVlXCJcclxuICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICc1MHJlbSd9XCJcclxuICAgICAgICBbcmVzaXphYmxlQ29sdW1uc109XCJ0cnVlXCJcclxuICAgICAgICBbc3R5bGVDbGFzc109XCJncmlkTGluZXMgPyAncC10cmVldGFibGUtZ3JpZGxpbmVzJyA6ICcnXCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgID5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImNhcHRpb25cIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVDYXRpb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy50aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tZCBmb250LWJvbGQgbXktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcudGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnN1YnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIG1iLTQgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLnN1YnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJcclxuICAgICAgICAgICAgdGFtYW5ob1RlbGEgPCA3NjhcclxuICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBjb2wtMTAgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlciBpbnB1dC1zZWFyY2gnXHJcbiAgICAgICAgICBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcih0dCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMi41cmVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29sLTEganVzdGlmeS1jb250ZW50LWVuZCBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNMb3RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5zLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhY3Rpb25Mb3RlQnRuc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uTG90ZUJ0bnMgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbj8uY29tbWFuZChjb21tYW5kRXZlbnQpOyBhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICd0b29sdGlwJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICdidG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2Rpc2FibGVkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtZC0yMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2ljb25CdG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCBcImljb25cIikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBmbGV4OiBpID09IDAsICdnYXAtMyc6IGkgPT0gMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PSAwICYmIGNvbmZpZy5lbmFibGVTZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICYmIGFsaWduQ29sdW5hc0hlYWRlcihjb2wpID09ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93J1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICAgICAgICBsZXQtY29sdW1uc1xyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICB0dFJlc2l6YWJsZUNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb2wuY2VudHJhbGl6ZSA/ICd0ZXh0LWFsaWduOiBjZW50ZXI7JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19IDxicj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICA+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgICAgICAgbGV0LXJvd05vZGVcclxuICAgICAgICAgICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgW3R0Um93XT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImRvdWJsZUNsaWNrKCRldmVudCwgcm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7ICBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwicmV0dXJuU3R5bGVSb3coY29sLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cInJvd05vZGUubGV2ZWwgIT09IDAgPyAnc3RpY2t5JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInJvd05vZGUubGV2ZWwgIT09IDAgPyByb3dOb2RlLmxldmVsKjMwIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93ICB7e2NvbC5ib29sZWFuID8gJ2p1c3RpZnktY29udGVudC1jZW50ZXInIDogJycgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwtaC1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGEsIHJvd05vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVTZWxlY3QgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyaWdodENvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmlnaHRDb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLmJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBpIHt7cm93RGF0YVtjb2wuZmllbGRdID8gJ3BpLWNoZWNrIHRleHQtZ3JlZW4tMzAwJyA6ICcnfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMS4xcmVtO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sLmJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLTBcIj57eyByb3dEYXRhW2NvbC5maWVsZF0gfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LXNlbWlib2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7cm93RGF0YVtjb2wuc3VidGl0bGVdfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lO1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCAmJiB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKHJvd05vZGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY29lc0xpbmhhVGFiZWxhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkge3thY3Rpb24uaWNvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uLnNldmVyaXR5ID8gYWN0aW9uLnNldmVyaXR5IDogJ3NlY29uZGFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7d2lkdGg6ICcycmVtJywgaGVpZ2h0OiAnMnJlbSd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24uY29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYWNvZXNMaW5oYVRhYmVsYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIycHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1tZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI21lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cIm1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtbWVudT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmFjdGlvbnNQYWk/Lmxlbmd0aCA+IDAgJiYgcm93Tm9kZS5sZXZlbCA9PSAwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSB7e2FjdGlvblBhaS5pY29ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3VuZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgPyBhY3Rpb25QYWkuc2V2ZXJpdHkgOiAnc2Vjb25kYXJ5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInt3aWR0aDogJzJyZW0nLCBoZWlnaHQ6ICcycmVtJ31cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSk7YWN0aW9uUGFpLmNvbW1hbmQoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8L3AtdHJlZVRhYmxlPlxyXG48L2Rpdj4iXX0=
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi90cmVldGFibGUvdHJlZXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVdyRixNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBT0UsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFFN0Isa0JBQWEsR0FBUSxFQUFFLENBQUM7UUFLZixjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVqQyxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7S0E0S3BFO0lBMUtDLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUdELGNBQWM7UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxPQUFZO1FBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENB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QUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBWSxFQUFFLE9BQVk7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtZQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1lBQzlELENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDWixDQUFDOytHQTFMVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzWkNYL0IsaXRaQTRTTTs7NEZEalNPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzhCQVdoQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU9QLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEt2TWVudUl0ZW0gfSBmcm9tICcuLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gJy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlJztcclxuaW1wb3J0IHsgTWVudUl0ZW1Db21tYW5kRXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LXRyZWUtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVldGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWV0YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVldGFibGVDb21wb25lbnQge1xyXG5cclxuICBtZW51SXRlbXM6IEt2TWVudUl0ZW1bXSA9IFtdO1xyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIGNvbW1hbmRFdmVudCE6IE1lbnVJdGVtQ29tbWFuZEV2ZW50O1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBhbnk7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBhY29lc0xpbmhhVGFiZWxhOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbUxvdGUocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbUxvdGUuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVHJlZVRhYmxlLCBldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hSW5pY2lhbCA9XHJcbiAgICAgICAgKCRldmVudD8uZmlyc3QgPiAwID8gJGV2ZW50LmZpcnN0IC8gJGV2ZW50LnJvd3MgOiAkZXZlbnQuZmlyc3QpICsgMTtcclxuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcclxuICAgICAgbGV0IG9yZGVuYWNhbyA9ICcnO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5nbG9iYWxGaWx0ZXIpIHRlcm1vUGVzcXVpc2EgPSAkZXZlbnQuZ2xvYmFsRmlsdGVyO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5zb3J0RmllbGQpXHJcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7JGV2ZW50LnNvcnRGaWVsZH0gJHskZXZlbnQuc29ydE9yZGVyID09PSAxID8gJ0FTQycgOiAnREVTQydcclxuICAgICAgICAgIH1gO1xyXG5cclxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xyXG4gICAgICAgIHBhZ2luYUluaWNpYWw6IHBhZ2luYUluaWNpYWwsXHJcbiAgICAgICAgdGFtYW5ob1BhZ2luYTogJGV2ZW50LnJvd3MsXHJcbiAgICAgICAgdGVybW9QZXNxdWlzYTogdGVybW9QZXNxdWlzYSxcclxuICAgICAgICBvcmRlbmFjYW86IG9yZGVuYWNhbyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMub25QYWdpbmF0ZS5lbWl0KG9iamV0byk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm5TdHlsZVJvdyhjb2w6IGFueSwgcm93Tm9kZTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGlzRmlyc3RDb2x1bW4gPSBjb2wuZmllbGQgPT09IHRoaXMuY29uZmlnLmNvbHVtbnNbMF0uZmllbGQ7XHJcbiAgICBjb25zdCBiYXNlT3BhY2l0eSA9IDE7XHJcbiAgICBjb25zdCBtYXhMZXZlbHMgPSA0O1xyXG5cclxuICAgIGlmIChpc0ZpcnN0Q29sdW1uICYmIHJvd05vZGUubGV2ZWwgPj0gMCkge1xyXG4gICAgICBjb25zdCBvcGFjaXR5ID0gYmFzZU9wYWNpdHkgLSAocm93Tm9kZS5sZXZlbCAvIG1heExldmVscyk7XHJcblxyXG4gICAgICByZXR1cm4gYGJvcmRlci1sZWZ0OiBzb2xpZCA0cHggcmdiYSg1OSwgMTEwLCAxNTgsICR7b3BhY2l0eX0pICFpbXBvcnRhbnQ7YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocm93Tm9kZS5sZXZlbCA9PSAwKVxyXG4gICAgICByZXR1cm4gJ2JvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7IGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50J1xyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGFsaWduQ29sdW5hc0hlYWRlcihjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQ6IGVuZCc7XHJcbiAgICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gICAgfSBlbHNlIHJldHVybiAnJztcclxuICB9XHJcbiAgY2VudHJhbGl6YXJDb2x1bmFzKGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChjb2wuY2VudHJhbGl6ZSkge1xyXG4gICAgICByZXR1cm4gJ3RleHQtYWxpZ246IGNlbnRlcjsgJztcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG4gIGFsaWduQ29sdW5hcyhjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmFsaWduKSB7XHJcbiAgICAgIHJldHVybiBgdGV4dC1hbGlnbjogJHtjb2wuYWxpZ259YDtcclxuICAgIH0gZWxzZSByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBjcmlhck1lbnVzTW9kYWwoZGF0YTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9ucyAmJiBkYXRhKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5jb25maWcuYWN0aW9ucy5tYXAoKGFjdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdpY29uJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICd0b29sdGlwJyk7XHJcbiAgICAgICAgY29uc3QgdG9vbHRpcFBvc2l0aW9uID0gdGhpcy5yZXRvcm5hckNhbXBvKFxyXG4gICAgICAgICAgYWN0aW9uLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICd0b29sdGlwUG9zaXRpb24nXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdsYWJlbCcpO1xyXG4gICAgICAgIGNvbnN0IGNvbW1hbmQ6IGFueSA9IHRoaXMucmV0b3JuYXJDYW1wbyhhY3Rpb24sIGRhdGEsICdjb21tYW5kJyk7XHJcbiAgICAgICAgY29uc3QgdmlzaWJsZTogYm9vbGVhbiA9IGFjdGlvbi52aXNpYmxlID8gYWN0aW9uLnZpc2libGUoZGF0YSkgOiB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGRpc2FibGVkOiBib29sZWFuID0gYWN0aW9uLmRpc2FibGVkXHJcbiAgICAgICAgICA/IGFjdGlvbi5kaXNhYmxlZChkYXRhKVxyXG4gICAgICAgICAgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgbWVudUluc2VydDogS3ZNZW51SXRlbSA9IHtcclxuICAgICAgICAgIGxhYmVsLFxyXG4gICAgICAgICAgaWNvbixcclxuICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb24sXHJcbiAgICAgICAgICBjb21tYW5kLFxyXG4gICAgICAgICAgZGlzYWJsZWQsXHJcbiAgICAgICAgICB2aXNpYmxlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5tZW51SXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgKHgpID0+IHguY29tbWFuZCA9PSBtZW51SW5zZXJ0LmNvbW1hbmRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5sZW5ndGggPT0gMCkgdGhpcy5tZW51SXRlbXMucHVzaChtZW51SW5zZXJ0KTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LmxhYmVsICE9IGl0ZW1bMF0ubGFiZWwpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC52aXNpYmxlICE9IGl0ZW1bMF0udmlzaWJsZSkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm1lbnVJdGVtcy5pbmRleE9mKGl0ZW1bMF0pO1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChtZW51SW5zZXJ0LmRpc2FibGVkICE9IGl0ZW1bMF0uZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0b3JuYXJDYW1wbyhhY3Rpb246IEt2TWVudUl0ZW0sIHJvd0RhdGE6IGFueSwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBfZnVuY3Rpb24gPSBhY3Rpb24uZHluYW1pY2ZpZWxkc1xyXG4gICAgICA/IChhY3Rpb24uZHluYW1pY2ZpZWxkc1tmaWVsZF0gYXMgRnVuY3Rpb24pXHJcbiAgICAgIDogbnVsbDtcclxuICAgIGNvbnN0IF9maWVsZDogc3RyaW5nID0gX2Z1bmN0aW9uXHJcbiAgICAgID8gX2Z1bmN0aW9uLmFwcGx5KGFjdGlvbiwgW3Jvd0RhdGFdKVxyXG4gICAgICA6IGFjdGlvbltmaWVsZF07XHJcbiAgICByZXR1cm4gX2ZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZXhpYmlyQ2FtcG8oZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVBY3Rpb25Qb3NpdGlvbihyb3dOb2RlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5hY3Rpb25zUGFpICYmIHJvd05vZGUubGV2ZWwgPT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgZWxzZSByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcblxyXG4gIGRvdWJsZUNsaWNrKGU6IGFueSwgcm93RGF0YTogYW55KSB7XHJcblxyXG4gICAgbGV0IGV2ZW50RG91YmxlQ2xpY2sgPSB7IGV2ZW50OiBlLCByb3dEYXRhOiByb3dEYXRhIH07XHJcblxyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZS50YXJnZXQuY2xhc3NMaXN0LmZvckVhY2goKHg6IGFueSkgPT4gYXJyYXkucHVzaCh4KSk7XHJcblxyXG4gICAgLy8gaWYgKGFycmF5LmZpbmQoKHg6IGFueSkgPT4geCA9PSAnbmctc3Rhci1pbnNlcnRlZCcpICE9IHVuZGVmaW5lZClcclxuICAgIHRoaXMuZG91YmxlQ2xpY2tFdmVudC5lbWl0KGV2ZW50RG91YmxlQ2xpY2spO1xyXG4gIH1cclxuXHJcbiAgaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGE6IGFueSwgcm93Tm9kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcuZGlzYWJsZUNvbnRyb2xDaGVja2JveEZ1bmN0aW9uKHJvd0RhdGEsIHJvd05vZGUpXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2PlxyXG4gICAgPHAtdHJlZVRhYmxlXHJcbiAgICAgICAgI3R0XHJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgICAgICBbcmVzaXphYmxlQ29sdW1uc109XCJ0cnVlXCJcclxuICAgICAgICBbdGFibGVTdHlsZV09XCJ7J21pbi13aWR0aCc6ICc1MHJlbSd9XCJcclxuICAgICAgICBbcmVzaXphYmxlQ29sdW1uc109XCJ0cnVlXCJcclxuICAgICAgICBbc3R5bGVDbGFzc109XCJncmlkTGluZXMgPyAncC10cmVldGFibGUtZ3JpZGxpbmVzJyA6ICcnXCJcclxuICAgICAgICAob25MYXp5TG9hZCk9XCJwYWdpbmF0ZSgkZXZlbnQpXCJcclxuICAgID5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImNhcHRpb25cIlxyXG4gICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVDYXRpb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ3JpZCBmb3JtZ3JpZCBwLWZsdWlkIGNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy50aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1tZCBmb250LWJvbGQgbXktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb25maWcudGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLnN1YnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIG1iLTQgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY29uZmlnLnN1YnRpdGxlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJcclxuICAgICAgICAgICAgdGFtYW5ob1RlbGEgPCA3NjhcclxuICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBjb2wtMTAgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlciBpbnB1dC1zZWFyY2gnXHJcbiAgICAgICAgICBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb25maWcuZW5hYmxlRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcih0dCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMi41cmVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29sLTEganVzdGlmeS1jb250ZW50LWVuZCBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNMb3RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5zLW9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhY3Rpb25Mb3RlQnRuc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgICAgIGV4aWJpckNhbXBvKGFjdGlvbiwgdGhpcy5hY3Rpb24pXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uTG90ZUJ0bnMgcC1idXR0b24tcmFpc2VkIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbj8uY29tbWFuZChjb21tYW5kRXZlbnQpOyBhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICd0b29sdGlwJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgcmV0b3JuYXJDYW1wbyhhY3Rpb24sIHNlbGVjdGVkSXRlbXMsICdidG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2Rpc2FibGVkJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBtZC0yMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICByZXRvcm5hckNhbXBvKGFjdGlvbiwgc2VsZWN0ZWRJdGVtcywgJ2ljb25CdG5Db2xvcicpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJldG9ybmFyQ2FtcG8oYWN0aW9uLCBzZWxlY3RlZEl0ZW1zLCBcImljb25cIikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXHJcbiAgICAgICAgICAgIGxldC1jb2x1bW5zXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGhcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7IGluZGV4IGFzIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBmbGV4OiBpID09IDAsICdnYXAtMyc6IGkgPT0gMCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaSA9PSAwICYmIGNvbmZpZy5lbmFibGVTZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIj48L3AtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbnRyYWxpemFyQ29sdW5hcyhjb2wpICYmIGFsaWduQ29sdW5hc0hlYWRlcihjb2wpID09ICcnXHJcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICA6ICdmbGV4IGZsZXgtcm93J1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJhbGlnbkNvbHVuYXNIZWFkZXIoY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbC5zb3J0YWJsZSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC1zb3J0SWNvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJoZWFkZXJcIlxyXG4gICAgICAgICAgICBsZXQtY29sdW1uc1xyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICB0dFJlc2l6YWJsZUNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJjb2wuY2VudHJhbGl6ZSA/ICd0ZXh0LWFsaWduOiBjZW50ZXI7JyA6ICcnXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19IDxicj5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRoXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICA+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgICAgICAgbGV0LXJvd05vZGVcclxuICAgICAgICAgICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDx0clxyXG4gICAgICAgICAgICAgICAgW3R0Um93XT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImRvdWJsZUNsaWNrKCRldmVudCwgcm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8dGRcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnM7ICBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwicmV0dXJuU3R5bGVSb3coY29sLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cInJvd05vZGUubGV2ZWwgIT09IDAgPyAnc3RpY2t5JyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cInJvd05vZGUubGV2ZWwgIT09IDAgPyByb3dOb2RlLmxldmVsKjMwIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93ICB7e2NvbC5ib29sZWFuID8gJ2p1c3RpZnktY29udGVudC1jZW50ZXInIDogJycgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwtaC1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSA9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KHJvd0RhdGEsIHJvd05vZGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbmZpZy5lbmFibGVTZWxlY3QgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZUNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvcC10cmVlVGFibGVUb2dnbGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93Tm9kZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFyaWdodENvbGxhcHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtdHJlZVRhYmxlVG9nZ2xlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlblZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dOb2RlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmlnaHRDb2xsYXBzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLXRyZWVUYWJsZVRvZ2dsZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sLmJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBpIHt7cm93RGF0YVtjb2wuZmllbGRdID8gJ3BpLWNoZWNrIHRleHQtZ3JlZW4tMzAwJyA6ICcnfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMS4xcmVtO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sLmJvb2xlYW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLTBcIj57eyByb3dEYXRhW2NvbC5maWVsZF0gfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb2wuc3VidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LXNlbWlib2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7cm93RGF0YVtjb2wuc3VidGl0bGVdfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lO1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29uZmlnLmFjdGlvbnMubGVuZ3RoID4gMCAmJiB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKHJvd05vZGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY29lc0xpbmhhVGFiZWxhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkge3thY3Rpb24uaWNvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91bmRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uLnNldmVyaXR5ID8gYWN0aW9uLnNldmVyaXR5IDogJ3NlY29uZGFyeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ7d2lkdGg6ICcycmVtJywgaGVpZ2h0OiAnMnJlbSd9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24uY29tbWFuZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3AtYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYWNvZXNMaW5oYVRhYmVsYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtZW51LnRvZ2dsZSgkZXZlbnQpOyBhY3RpdmVJdGVtKHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY29uZmlnLmFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbChyb3dEYXRhKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLW1lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3AtbWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb25maWcuYWN0aW9uc1BhaT8ubGVuZ3RoID4gMCAmJiByb3dOb2RlLmxldmVsID09IDBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb25QYWkgb2YgY29uZmlnLmFjdGlvbnNQYWlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHt7YWN0aW9uUGFpLmljb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdW5kZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblBhaS5zZXZlcml0eSA/IGFjdGlvblBhaS5zZXZlcml0eSA6ICdzZWNvbmRhcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwie3dpZHRoOiAnMnJlbScsIGhlaWdodDogJzJyZW0nfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTthY3Rpb25QYWkuY29tbWFuZCgkZXZlbnQpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDwvcC10cmVlVGFibGU+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -5097,11 +5097,11 @@ class TreetableComponent {
|
|
|
5097
5097
|
: false;
|
|
5098
5098
|
}
|
|
5099
5099
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ 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: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6$3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6$1.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i14.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9$1.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9$1.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9$1.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9$1.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9$1.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9$1.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9$1.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
5100
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TreetableComponent, selector: "kv-tree-table", inputs: { config: "config", dataSource: "dataSource", gridLines: "gridLines", acoesLinhaTabela: "acoesLinhaTabela" }, outputs: { onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, ngImport: i0, template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"], dependencies: [{ 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: "directive", type: i1$2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i6$3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i1$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "size", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i6$1.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "component", type: i14.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i9$1.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel"] }, { kind: "component", type: i9$1.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9$1.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "directive", type: i9$1.TTResizableColumn, selector: "[ttResizableColumn]", inputs: ["ttResizableColumnDisabled"] }, { kind: "directive", type: i9$1.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9$1.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9$1.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }] }); }
|
|
5101
5101
|
}
|
|
5102
5102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreetableComponent, decorators: [{
|
|
5103
5103
|
type: Component,
|
|
5104
|
-
args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
5104
|
+
args: [{ selector: 'kv-tree-table', template: "<div>\r\n <p-treeTable\r\n #tt\r\n [value]=\"dataSource\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{'min-width': '50rem'}\"\r\n [resizableColumns]=\"true\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n >\r\n\r\n <ng-template\r\n pTemplate=\"caption\"\r\n *ngIf=\"config.enableCation\"\r\n >\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12\">\r\n <div class=\"col-12 flex flex-column\">\r\n <div\r\n *ngIf=\"config.title\"\r\n class=\"text-md font-bold my-3\"\r\n >\r\n {{ config.title }}\r\n </div>\r\n <div\r\n *ngIf=\"config.subtitle\"\r\n class=\"text-sm mb-4 font-medium\"\r\n >\r\n {{ config.subtitle }}\r\n </div>\r\n </div>\r\n\r\n <div [class]=\"\r\n tamanhoTela < 768\r\n ? 'flex flex-row align-items-center col-10 md:col-6 lg:col-4 justify-content-center'\r\n : 'flex flex-row align-items-center col-12 md:col-6 lg:col-4 justify-content-center input-search'\r\n \">\r\n\r\n <span\r\n *ngIf=\"config.enableFilter\"\r\n class=\"p-input-icon-left\"\r\n >\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2.5rem\"\r\n />\r\n </span>\r\n\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div\r\n *ngFor=\"let action of config.actionsLote\"\r\n class=\"btns-options\"\r\n >\r\n <button\r\n id=\"actionLoteBtns\"\r\n pButton\r\n *ngIf=\"\r\n (selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo(action, this.action)\r\n \"\r\n class=\"actionLoteBtns p-button-raised p-button-text\"\r\n (click)=\"action?.command(commandEvent); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"retornarCampo(action, selectedItems, 'tooltip')\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [style.backgroundColor]=\"\r\n retornarCampo(action, selectedItems, 'btnColor')\r\n \"\r\n [disabled]=\"retornarCampo(action, selectedItems, 'disabled')\"\r\n >\r\n <span\r\n class=\"material-symbols-outlined md-22\"\r\n [style.color]=\"\r\n retornarCampo(action, selectedItems, 'iconBtnColor')\r\n \"\r\n >\r\n {{ retornarCampo(action, selectedItems, \"icon\") }}\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns; index as i\"\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n class=\"text-sm\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: i == 0, 'gap-3': i == 0 }\">\r\n <div *ngIf=\"i == 0 && config.enableSelect\">\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"></p-treeTableHeaderCheckbox>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n centralizarColunas(col) && alignColunasHeader(col) == ''\r\n ? 'flex flex-row justify-content-center'\r\n : 'flex flex-row'\r\n \"\r\n [style]=\"alignColunasHeader(col)\"\r\n >\r\n <span>{{ col.header }}</span>\r\n <p-sortIcon\r\n *ngIf=\"col.sortable === true\"\r\n [field]=\"col.field\"\r\n style=\"font-size: 10px\"\r\n ></p-sortIcon>\r\n\r\n <span\r\n *ngIf=\"col.headerTooltip\"\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >info</span>\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template\r\n pTemplate=\"header\"\r\n let-columns\r\n >\r\n <tr>\r\n <th\r\n *ngFor=\"let col of columns\"\r\n ttResizableColumn\r\n [style.width]=\"col.width\"\r\n [style]=\"col.centralize ? 'text-align: center;' : ''\"\r\n >\r\n {{ col.header }} <br>\r\n </th>\r\n\r\n <th\r\n [style.width]=\"5\"\r\n *ngIf=\"config.actions.length > 0\"\r\n ></th>\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n >\r\n <td\r\n *ngFor=\"let col of columns; let i = index\"\r\n [style]=\"returnStyleRow(col, rowNode)\"\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"rowNode.level !== 0 ? rowNode.level*30 : null\"\r\n >\r\n\r\n <div class=\"flex flex-row {{col.boolean ? 'justify-content-center' : '' }}\">\r\n <div\r\n class=\"w-full-h-full flex align-items-center\"\r\n *ngIf=\"i == 0\"\r\n >\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n *ngIf=\"config.enableSelect == true\"\r\n ></p-treeTableCheckbox>\r\n\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n ></p-treeTableToggler>\r\n <!-- \r\n <p-treeTableToggler\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"!rightCollapse\"\r\n ></p-treeTableToggler>\r\n <p-treeTableToggler\r\n class=\"hiddenVisible\"\r\n [rowNode]=\"rowNode\"\r\n *ngIf=\"rightCollapse\"\r\n ></p-treeTableToggler> -->\r\n </div>\r\n\r\n\r\n <div class=\"flex flex-row align-items-center\">\r\n <div class=\"flex flex-row align-items-center justify-content-center\">\r\n\r\n <i\r\n *ngIf=\"col.boolean\"\r\n class=\"pi {{rowData[col.field] ? 'pi-check text-green-300' : ''}}\"\r\n style=\"font-size: 1.1rem;\"\r\n ></i>\r\n\r\n\r\n <div\r\n class=\"flex flex-column\"\r\n *ngIf=\"!col.boolean\"\r\n >\r\n <span class=\"m-0\">{{ rowData[col.field] }}</span>\r\n\r\n <p\r\n *ngIf=\"col.subtitle\"\r\n class=\"m-0 text-xs font-semibold\"\r\n >{{rowData[col.subtitle]}}</p>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n <td style=\"border-left: none;\">\r\n\r\n <div *ngIf=\"config.actions.length > 0 && validateActionPosition(rowNode)\">\r\n <div\r\n *ngFor=\"let action of config.actions\"\r\n class=\"flex justify-content-center\"\r\n >\r\n\r\n <p-button\r\n *ngIf=\"acoesLinhaTabela\"\r\n icon=\"pi {{action.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"action.severity ? action.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"action.command($event)\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n <span\r\n *ngIf=\"!acoesLinhaTabela\"\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 22px\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n <div *ngFor=\"let action of config.actions\">\r\n {{ criarMenusModal(rowData) }}\r\n </div>\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"config.actionsPai?.length > 0 && rowNode.level == 0\">\r\n\r\n <div\r\n *ngFor=\"let actionPai of config.actionsPai\"\r\n class=\"flex justify-content-end\"\r\n >\r\n\r\n <p-button\r\n icon=\"pi {{actionPai.icon}}\"\r\n [rounded]=\"true\"\r\n [severity]=\"actionPai.severity ? actionPai.severity : 'secondary'\"\r\n [style]=\"{width: '2rem', height: '2rem'}\"\r\n (onClick)=\"activeItem(rowData);actionPai.command($event);\"\r\n ></p-button>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </td>\r\n\r\n </tr>\r\n </ng-template>\r\n\r\n </p-treeTable>\r\n</div>", styles: ["@charset \"UTF-8\";:host ::ng-deep .p-treetable table{border-spacing:0 3px}#botaoFiltro:hover{color:#d4d4d4}:host ::ng-deep .p-treetable .p-treetable-header{background-color:#d1d1d1;padding:2px 0 0!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.5rem!important;margin-bottom:-5px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.5rem!important}:host ::ng-deep .p-treetable .p-treetable-thead{border-spacing:0 1px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:first-of-type{background-color:#eaeaea;padding:.5rem!important;border-radius:5px!important}:host ::ng-deep .p-treetable .p-treetable-thead>tr>th:last-child{background-color:#eaeaea;padding:.5rem!important;border-radius:0 5px 5px 0!important;-webkit-border-radius:0 5px 5px 0!important;-moz-border-radius:0 5px 5px 0!important;-ms-border-radius:0 5px 5px 0!important;-o-border-radius:0 5px 5px 0!important}:host ::ng-deep .p-treetable-scrollable-header-box{padding:0!important}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th{background-color:#f2f2f2}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:first-of-type{border-radius:5px 0 0 5px}:host ::ng-deep .p-treetable.p-treetable-sm .p-treetable-thead>tr>th:last-child{border-radius:0 5px 5px 0}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td{border-bottom:1px solid #ddd!important;border-top:1px solid #ddd!important}:host ::ng-deep #tr-style{border-left:solid 4px #5289B4!important;border-radius:10px!important;display:block}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:first-of-type{border-left:solid 4px #5289B4!important;border-right:none!important;border-radius:10px 0 0 10px!important;-webkit-border-radius:10px 0 0 10px!important;-moz-border-radius:10px 0 0 10px!important;-ms-border-radius:10px 0 0 10px!important;-o-border-radius:10px 0 0 10px!important}:host ::ng-deep .p-treetable .p-treetable-tbody>tr>td:last-child{border-radius:0 10px 10px 0!important;border-right:1px solid #ddd!important;-webkit-border-radius:0 10px 10px 0!important;-moz-border-radius:0 10px 10px 0!important;-ms-border-radius:0 10px 10px 0!important;-o-border-radius:0 10px 10px 0!important}:host ::ng-deep .actionBtns,:host ::ng-deep .actionLoteBtns{border-radius:50%;box-shadow:#0000003d 0 3px 8px;width:2.5rem!important;height:2.5rem!important;display:flex;align-items:center;justify-content:center}:host ::ng-deep .p-treetable table{border-collapse:separate!important;table-layout:auto!important}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transform:scale(1.1);transition:color .3s,transform .3s}\n"] }]
|
|
5105
5105
|
}], propDecorators: { config: [{
|
|
5106
5106
|
type: Input
|
|
5107
5107
|
}], dataSource: [{
|