@senior-gestao-relacionamento/angular-components 2.4.0 → 2.5.0-feat-crmdev-12601-c9c7bb89

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9leHBvcnQtZGF0YS9lbnRpdGllcy9leHBvcnQtZGF0YS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cG9ydENvbHVtblR5cGUsIEV4cG9ydEZpbGVGb3JtYXQsIEV4cG9ydEZpbGVUeXBlLCBFeHBvcnRPcmllbnRhdGlvbiB9IGZyb20gJy4uL2VudW1zL2V4cG9ydC1kYXRhLmVudW1zJztcblxuLyoqXG4gKiBDb25maWd1cmHDp8OjbyBkZSB1bWEgY29sdW5hIHBhcmEgZXhwb3J0YcOnw6NvLlxuICogRXNwZWxoYSBvIGBjb2x1bW5zUmVjb3JkYCBkbyBiYWNrZW5kIChtYWluLnNkbCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0Q29sdW1uIHtcbiAgLyoqIE5vbWUgZG8gY2FtcG8gbm8gcmVnaXN0cm8gKHN1cG9ydGEgcGF0aHMgYW5pbmhhZG9zOiBcImFkZHJlc3MuY2l0eVwiKSAqL1xuICBjb2x1bW5OYW1lOiBzdHJpbmc7XG4gIC8qKiBDaGF2ZSBkZSB0cmFkdcOnw6NvIG91IGxhYmVsIGV4aWJpZG8gbm8gY2FiZcOnYWxobyAqL1xuICB0cmFuc2xhdGVLZXk6IHN0cmluZztcbiAgLyoqIFRpcG8gZG8gZGFkbyDigJQgZGVmaW5lIGEgbcOhc2NhcmEgYXBsaWNhZGEgcGVsbyBiYWNrZW5kICovXG4gIGNvbHVtblR5cGU6IEV4cG9ydENvbHVtblR5cGU7XG4gIC8qKiBQcmVmaXhvIGRhIGNoYXZlIGRlIHRyYWR1w6fDo28gZG8gZW51bSAoZXg6IFwic3RhdHVzZW51bVwiKSAqL1xuICB0cmFuc2xhdGlvbktleVByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb2x1bmEgbm8gZm9ybWF0byBzaW1wbGlmaWNhZG8gKGNvbXBhdMOtdmVsIGNvbSBDb2x1bW5Db25maWcgZG8gcHJvamV0bykuXG4gKiBPIGNvbXBvbmVudGUgY29udmVydGUgYXV0b21hdGljYW1lbnRlIHBhcmEgRXhwb3J0Q29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydENvbHVtbklucHV0IHtcbiAgLyoqIE5vbWUgZG8gY2FtcG8gKGV4OiBcIm5hbWVcIiwgXCJzdGFnZS5uYW1lXCIpICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBleGliaWRvIG5vIGNhYmXDp2FsaG8gKi9cbiAgaGVhZGVyOiBzdHJpbmc7XG4gIC8qKiBUaXBvIHBhcmEgZXhwb3J0YcOnw6NvOiBURVhULCBOVU1CRVIsIEVOVU0sIERBVEUsIERBVEVUSU1FLCBDVVJSRU5DWSAqL1xuICBleHBvcnRUeXBlPzogc3RyaW5nO1xuICAvKiogUHJlZml4byBkYSBjaGF2ZSBkZSB0cmFkdcOnw6NvIGRvIGVudW0gKi9cbiAgdHJhbnNsYXRpb25LZXlQcmVmaXg/OiBzdHJpbmc7XG4gIC8qKiBRdWFscXVlciBvdXRyYSBwcm9wcmllZGFkZSAoc29ydGFibGUsIHdpZHRoLCB0eXBlLCBldGMpIMOpIGlnbm9yYWRhICovXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbi8qKlxuICogRGF0YXNvdXJjZSBxdWUgaWRlbnRpZmljYSBkZSBvbmRlIGJ1c2NhciBvcyBkYWRvcyBubyBiYWNrZW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4cG9ydERhdGFzb3VyY2Uge1xuICBuYW1lRG9tYWluOiBzdHJpbmc7XG4gIG5hbWVTZXJ2aWNlOiBzdHJpbmc7XG4gIHByaW1pdGl2ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBheWxvYWQgZW52aWFkbyBhbyBzaWduYWwgYGV4cG9ydFNlbGVjdGVkUmVjb3Jkc1NpZ25hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0U2VsZWN0ZWRQYXlsb2FkIHtcbiAgZmlsZVR5cGU6IEV4cG9ydEZpbGVUeXBlO1xuICBkYXRhc291cmNlOiBFeHBvcnREYXRhc291cmNlO1xuICBmaWVsZHM6IEV4cG9ydENvbHVtbltdO1xuICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gIGVudGl0eU5hbWU6IHN0cmluZztcbiAgb3JpZW50YXRpb24/OiBFeHBvcnRPcmllbnRhdGlvbjtcbiAgZmlsZUZvcm1hdD86IEV4cG9ydEZpbGVGb3JtYXQ7XG59XG5cbi8qKlxuICogUGF5bG9hZCBlbnZpYWRvIGFvIHNpZ25hbCBgZXhwb3J0QWxsUmVjb3Jkc1NpZ25hbGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwb3J0QWxsUGF5bG9hZCB7XG4gIGZpbGVUeXBlOiBFeHBvcnRGaWxlVHlwZTtcbiAgZGF0YXNvdXJjZTogRXhwb3J0RGF0YXNvdXJjZTtcbiAgZmllbGRzOiBFeHBvcnRDb2x1bW5bXTtcbiAgZmlsdGVyOiBzdHJpbmc7XG4gIGVudGl0eU5hbWU6IHN0cmluZztcbiAgb3JpZW50YXRpb24/OiBFeHBvcnRPcmllbnRhdGlvbjtcbiAgZmlsZUZvcm1hdD86IEV4cG9ydEZpbGVGb3JtYXQ7XG59XG5cbi8qKlxuICogQ29uZmlndXJhw6fDo28gcGFzc2FkYSBhbyBjb21wb25lbnRlIGRlIGV4cG9ydGHDp8Ojby5cbiAqXG4gKiBBY2VpdGEgY29sdW5hcyBlbSBkb2lzIGZvcm1hdG9zOlxuICogLSBgRXhwb3J0Q29sdW1uW11gIChmb3JtYXRvIGNvbXBsZXRvIGNvbSBjb2x1bW5OYW1lL3RyYW5zbGF0ZUtleS9jb2x1bW5UeXBlKVxuICogLSBgRXhwb3J0Q29sdW1uSW5wdXRbXWAgKGZvcm1hdG8gc2ltcGxpZmljYWRvIGNvbSBmaWVsZC9oZWFkZXIvZXhwb3J0VHlwZSDigJQgY29tcGF0w612ZWwgY29tIENvbHVtbkNvbmZpZylcbiAqXG4gKiBPIGNvbXBvbmVudGUgbm9ybWFsaXphIGludGVybmFtZW50ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBvcnREYXRhQ29uZmlnIHtcbiAgLyoqIE5vbWUgZGEgZW50aWRhZGUgZXhpYmlkbyBubyB0w610dWxvIGRvIGFycXVpdm8gKi9cbiAgZW50aXR5TmFtZTogc3RyaW5nO1xuICAvKiogRGF0YXNvdXJjZTogZG9tw61uaW8sIHNlcnZpw6dvIGUgcHJpbWl0aXZhIGRlIGxpc3RhZ2VtICovXG4gIGRhdGFzb3VyY2U6IEV4cG9ydERhdGFzb3VyY2U7XG4gIC8qKiBDb2x1bmFzIGRpc3BvbsOtdmVpcyBwYXJhIGV4cG9ydGHDp8OjbyAqL1xuICBjb2x1bW5zOiAoRXhwb3J0Q29sdW1uIHwgRXhwb3J0Q29sdW1uSW5wdXQpW107XG4gIC8qKiBGaWx0cm8gYXRpdm8gbmEgbGlzdGFnZW0gKHVzYWRvIHF1YW5kbyBleHBvcnRhIHRvZG9zKSAqL1xuICBhY3RpdmVGaWx0ZXI/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ export var ExportFileType;
2
+ (function (ExportFileType) {
3
+ ExportFileType["Excel"] = "EXCEL";
4
+ ExportFileType["Pdf"] = "PDF";
5
+ })(ExportFileType || (ExportFileType = {}));
6
+ export var ExportOrientation;
7
+ (function (ExportOrientation) {
8
+ ExportOrientation["Portrait"] = "PORTRAIT";
9
+ ExportOrientation["Landscape"] = "LANDSCAPE";
10
+ })(ExportOrientation || (ExportOrientation = {}));
11
+ export var ExportFileFormat;
12
+ (function (ExportFileFormat) {
13
+ ExportFileFormat["A3"] = "A3";
14
+ ExportFileFormat["A4"] = "A4";
15
+ })(ExportFileFormat || (ExportFileFormat = {}));
16
+ export var ExportColumnType;
17
+ (function (ExportColumnType) {
18
+ ExportColumnType["Text"] = "TEXT";
19
+ ExportColumnType["Enum"] = "ENUM";
20
+ ExportColumnType["Date"] = "DATE";
21
+ ExportColumnType["Datetime"] = "DATETIME";
22
+ ExportColumnType["Currency"] = "CURRENCY";
23
+ ExportColumnType["Number"] = "NUMBER";
24
+ })(ExportColumnType || (ExportColumnType = {}));
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kYXRhL2VudW1zL2V4cG9ydC1kYXRhLmVudW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsaUNBQWUsQ0FBQTtJQUNmLDZCQUFXLENBQUE7QUFDYixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxpQkFHWDtBQUhELFdBQVksaUJBQWlCO0lBQzNCLDBDQUFxQixDQUFBO0lBQ3JCLDRDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBRzVCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQiw2QkFBUyxDQUFBO0lBQ1QsNkJBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUMxQixpQ0FBYSxDQUFBO0lBQ2IsaUNBQWEsQ0FBQTtJQUNiLGlDQUFhLENBQUE7SUFDYix5Q0FBcUIsQ0FBQTtJQUNyQix5Q0FBcUIsQ0FBQTtJQUNyQixxQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEV4cG9ydEZpbGVUeXBlIHtcbiAgRXhjZWwgPSAnRVhDRUwnLFxuICBQZGYgPSAnUERGJ1xufVxuXG5leHBvcnQgZW51bSBFeHBvcnRPcmllbnRhdGlvbiB7XG4gIFBvcnRyYWl0ID0gJ1BPUlRSQUlUJyxcbiAgTGFuZHNjYXBlID0gJ0xBTkRTQ0FQRSdcbn1cblxuZXhwb3J0IGVudW0gRXhwb3J0RmlsZUZvcm1hdCB7XG4gIEEzID0gJ0EzJyxcbiAgQTQgPSAnQTQnXG59XG5cbmV4cG9ydCBlbnVtIEV4cG9ydENvbHVtblR5cGUge1xuICBUZXh0ID0gJ1RFWFQnLFxuICBFbnVtID0gJ0VOVU0nLFxuICBEYXRlID0gJ0RBVEUnLFxuICBEYXRldGltZSA9ICdEQVRFVElNRScsXG4gIEN1cnJlbmN5ID0gJ0NVUlJFTkNZJyxcbiAgTnVtYmVyID0gJ05VTUJFUidcbn1cbiJdfQ==
@@ -0,0 +1,133 @@
1
+ import { Component, computed, input, output, signal } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { DialogModule } from 'primeng/dialog';
5
+ import { ButtonModule } from 'primeng/button';
6
+ import { RadioButtonModule } from 'primeng/radiobutton';
7
+ import { CheckboxModule } from 'primeng/checkbox';
8
+ import { ExportFileType, ExportOrientation, ExportFileFormat, ExportColumnType } from './enums/export-data.enums';
9
+ import { TranslatePipe } from '@seniorsistemas/components-ai';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "primeng/dialog";
14
+ import * as i4 from "primeng/api";
15
+ import * as i5 from "primeng/button";
16
+ import * as i6 from "primeng/radiobutton";
17
+ import * as i7 from "primeng/checkbox";
18
+ /**
19
+ * Componente de exportação de dados (s-export-data).
20
+ * Permite ao usuário escolher o formato do arquivo (Excel ou PDF), a orientação da página,
21
+ * o formato da folha, o escopo (todos os registros ou apenas os selecionados) e
22
+ * as colunas a serem exportadas.
23
+ *
24
+ * Comunica-se com o `crmx-data-export-backend` via HTTP (fire-and-forget).
25
+ */
26
+ export class ExportDataComponent {
27
+ visible = input(false);
28
+ visibleChange = output();
29
+ config = input.required();
30
+ selectedIds = input([]);
31
+ exported = output();
32
+ exportError = output();
33
+ selectedFileType = signal(ExportFileType.Excel);
34
+ selectedOrientation = signal(ExportOrientation.Landscape);
35
+ selectedFileFormat = signal(ExportFileFormat.A4);
36
+ exportScope = signal('all');
37
+ exporting = signal(false);
38
+ columnSelections = signal([]);
39
+ get selectedFileTypeModel() { return this.selectedFileType(); }
40
+ set selectedFileTypeModel(v) { this.selectedFileType.set(v); }
41
+ get selectedOrientationModel() { return this.selectedOrientation(); }
42
+ set selectedOrientationModel(v) { this.selectedOrientation.set(v); }
43
+ get selectedFileFormatModel() { return this.selectedFileFormat(); }
44
+ set selectedFileFormatModel(v) { this.selectedFileFormat.set(v); }
45
+ get exportScopeModel() { return this.exportScope(); }
46
+ set exportScopeModel(v) { this.exportScope.set(v); }
47
+ selectedColumnsCount = computed(() => this.columnSelections().filter(c => c.selected).length);
48
+ hasSelectedIds = computed(() => this.selectedIds().length > 0);
49
+ canExport = computed(() => this.selectedColumnsCount() > 0 && !this.exporting());
50
+ fileTypes = [
51
+ { value: ExportFileType.Excel, label: 'Excel', icon: 'pi-file-excel', description: 'Planilha com colunas ajustáveis' },
52
+ { value: ExportFileType.Pdf, label: 'PDF', icon: 'pi-file-pdf', description: 'Documento formatado para impressão' }
53
+ ];
54
+ orientations = [
55
+ { value: ExportOrientation.Landscape, label: 'Paisagem (Horizontal)', icon: 'pi-arrows-h' },
56
+ { value: ExportOrientation.Portrait, label: 'Retrato (Vertical)', icon: 'pi-arrows-v' }
57
+ ];
58
+ fileFormats = [
59
+ { value: ExportFileFormat.A4, label: 'A4', description: 'Padrão (210×297mm)' },
60
+ { value: ExportFileFormat.A3, label: 'A3', description: 'Grande (297×420mm)' }
61
+ ];
62
+ ngOnChanges() {
63
+ let cfg;
64
+ try {
65
+ cfg = this.config();
66
+ }
67
+ catch (e) {
68
+ return; // config ainda não foi setado (required input)
69
+ }
70
+ if (cfg?.columns) {
71
+ this.columnSelections.set(cfg.columns.map(col => ({ column: this.normalizeColumn(col), selected: true })));
72
+ }
73
+ // Sincroniza escopo com presença de IDs
74
+ const scope = this.selectedIds().length > 0 ? 'selected' : 'all';
75
+ this.exportScope.set(scope);
76
+ }
77
+ isExportColumn(col) {
78
+ return 'columnName' in col && 'translateKey' in col && 'columnType' in col;
79
+ }
80
+ normalizeColumn(col) {
81
+ if (this.isExportColumn(col)) {
82
+ return col;
83
+ }
84
+ const input = col;
85
+ const typeMap = {
86
+ 'TEXT': ExportColumnType.Text, 'NUMBER': ExportColumnType.Number,
87
+ 'ENUM': ExportColumnType.Enum, 'DATE': ExportColumnType.Date,
88
+ 'DATETIME': ExportColumnType.Datetime, 'CURRENCY': ExportColumnType.Currency,
89
+ 'status': ExportColumnType.Enum, 'number': ExportColumnType.Number, 'text': ExportColumnType.Text
90
+ };
91
+ return {
92
+ columnName: input.field,
93
+ translateKey: input.header,
94
+ columnType: typeMap[input.exportType ?? 'TEXT'] ?? ExportColumnType.Text,
95
+ translationKeyPrefix: input.translationKeyPrefix
96
+ };
97
+ }
98
+ selectAllColumns() {
99
+ this.columnSelections.update(cols => cols.map(c => ({ ...c, selected: true })));
100
+ }
101
+ deselectAllColumns() {
102
+ this.columnSelections.update(cols => cols.map(c => ({ ...c, selected: false })));
103
+ }
104
+ toggleColumn(col) {
105
+ col.selected = !col.selected;
106
+ this.refreshColumns();
107
+ }
108
+ refreshColumns() {
109
+ this.columnSelections.update(cols => [...cols]);
110
+ }
111
+ onDialogHide() {
112
+ this.visibleChange.emit(false);
113
+ }
114
+ async doExport() {
115
+ this.exported.emit();
116
+ this.visibleChange.emit(false);
117
+ }
118
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ExportDataComponent, isStandalone: true, selector: "s-export-data", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, selectedIds: { classPropertyName: "selectedIds", publicName: "selectedIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange", exported: "exported", exportError: "exportError" }, usesOnChanges: true, ngImport: i0, template: "<p-dialog\n [visible]=\"visible()\"\n (visibleChange)=\"visibleChange.emit($event)\"\n (onHide)=\"onDialogHide()\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n styleClass=\"s-export-dialog s-export-dialog-width\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"custom-header\">\n <i class=\"pi pi-download header-icon\"></i>\n <span>{{ 'crmx.components.export_title' | translate }}</span>\n </div>\n </ng-template>\n\n <div class=\"export-content\">\n\n <!-- Formato de Exporta\u00E7\u00E3o -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-file\"></i></div>\n <h3>{{ 'crmx.components.export_file_format' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let fmt of fileTypes\"\n class=\"format-card\"\n [class.selected]=\"selectedFileType() === fmt.value\"\n [for]=\"'fmt_' + fmt.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"fmt.value\"\n [(ngModel)]=\"selectedFileTypeModel\"\n [inputId]=\"'fmt_' + fmt.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\" [class.excel]=\"fmt.value === 'EXCEL'\" [class.pdf]=\"fmt.value === 'PDF'\">\n <i class=\"pi\" [ngClass]=\"fmt.icon\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ fmt.label }}</span>\n <span class=\"card-description\">{{ fmt.description }}</span>\n </div>\n </label>\n </div>\n </div>\n\n <!-- Orienta\u00E7\u00E3o + Formato da folha (apenas PDF) -->\n @if (selectedFileType() === 'PDF') {\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-arrows-alt\"></i></div>\n <h3>{{ 'crmx.components.export_orientation' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let o of orientations\"\n class=\"format-card\"\n [class.selected]=\"selectedOrientation() === o.value\"\n [for]=\"'orient_' + o.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"o.value\"\n [(ngModel)]=\"selectedOrientationModel\"\n [inputId]=\"'orient_' + o.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\">\n <i class=\"pi\" [ngClass]=\"o.icon\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ o.label }}</span>\n </div>\n </label>\n </div>\n </div>\n\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-stop\"></i></div>\n <h3>{{ 'crmx.components.export_sheet_format' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let f of fileFormats\"\n class=\"format-card\"\n [class.selected]=\"selectedFileFormat() === f.value\"\n [for]=\"'format_' + f.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"f.value\"\n [(ngModel)]=\"selectedFileFormatModel\"\n [inputId]=\"'format_' + f.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ f.label }}</span>\n <span class=\"card-description\">{{ f.description }}</span>\n </div>\n </label>\n </div>\n </div>\n }\n\n <!-- Escopo -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-filter\"></i></div>\n <h3>{{ 'crmx.components.export_scope' | translate }}</h3>\n </div>\n <div class=\"scope-options\" role=\"radiogroup\">\n <label\n class=\"scope-card\"\n [class.selected]=\"!hasSelectedIds()\"\n for=\"scope_all\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n value=\"all\"\n [(ngModel)]=\"exportScopeModel\"\n inputId=\"scope_all\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\"><i class=\"pi pi-list\"></i></div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ 'crmx.components.export_scope_all' | translate }}</span>\n <span class=\"card-description\">{{ 'crmx.components.export_scope_all_desc' | translate }}</span>\n </div>\n </label>\n <label\n class=\"scope-card\"\n [class.selected]=\"hasSelectedIds()\"\n [class.disabled]=\"!hasSelectedIds()\"\n for=\"scope_selected\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n value=\"selected\"\n [(ngModel)]=\"exportScopeModel\"\n inputId=\"scope_selected\"\n [disabled]=\"!hasSelectedIds()\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\"><i class=\"pi pi-check-square\"></i></div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ 'crmx.components.export_scope_selected' | translate }}</span>\n <span class=\"card-description\">{{ 'crmx.components.export_scope_selected_desc' | translate }}</span>\n <span class=\"card-count\">\n <i class=\"pi pi-circle-fill\"></i>\n {{ 'crmx.components.export_records_selected' | translate:{ count: selectedIds().length } }}\n </span>\n </div>\n </label>\n </div>\n </div>\n\n <!-- Sele\u00E7\u00E3o de Colunas -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-table\"></i></div>\n <h3>{{ 'crmx.components.export_columns' | translate }}</h3>\n <div class=\"column-actions\">\n <button type=\"button\" class=\"action-link\" (click)=\"selectAllColumns()\">\n {{ 'crmx.components.export_columns_all' | translate }}\n </button>\n <span class=\"separator\">|</span>\n <button type=\"button\" class=\"action-link\" (click)=\"deselectAllColumns()\">\n {{ 'crmx.components.export_columns_none' | translate }}\n </button>\n </div>\n </div>\n <div class=\"columns-grid\">\n <label\n *ngFor=\"let col of columnSelections()\"\n class=\"column-item\"\n [class.selected]=\"col.selected\"\n [for]=\"'col_' + col.column.columnName\"\n >\n <p-checkbox\n [(ngModel)]=\"col.selected\"\n [binary]=\"true\"\n [inputId]=\"'col_' + col.column.columnName\"\n (onChange)=\"refreshColumns()\"\n ></p-checkbox>\n <span class=\"column-label\">{{ col.column.translateKey | translate }}</span>\n </label>\n </div>\n <div class=\"columns-summary\">\n <i class=\"pi pi-info-circle\"></i>\n <span>\n {{\n 'crmx.components.export_columns_summary'\n | translate:{ selected: selectedColumnsCount(), total: columnSelections().length }\n }}\n </span>\n </div>\n </div>\n\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n [label]=\"'crmx.components.cancel' | translate\"\n icon=\"pi pi-times\"\n severity=\"secondary\"\n [text]=\"true\"\n (onClick)=\"onDialogHide()\"\n />\n <p-button\n [label]=\"'crmx.components.export_button' | translate\"\n icon=\"pi pi-download\"\n [disabled]=\"!canExport()\"\n [loading]=\"exporting()\"\n (onClick)=\"doExport()\"\n />\n </ng-template>\n</p-dialog>\n", styles: ["::ng-deep .s-export-dialog .p-dialog{border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d}::ng-deep .s-export-dialog-width .p-dialog{width:700px}::ng-deep .s-export-dialog .p-dialog-content{padding:0;background:#fff;max-height:70vh;overflow-y:auto}::ng-deep .s-export-dialog .p-dialog-footer{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:16px 32px}.custom-header{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:600}.custom-header .header-icon{font-size:22px;color:var(--p-primary-500)}.export-content{padding:28px 32px}.export-section{margin-bottom:32px}.export-section:last-child{margin-bottom:0}.section-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.section-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.1),rgba(var(--p-primary-rgb),.15));border-radius:10px}.section-icon i{font-size:18px;color:var(--p-primary-500)}.section-header h3{margin:0;font-size:17px;font-weight:700;color:var(--neutral-color-800, #1f2937);flex:1}.column-actions{display:flex;align-items:center;gap:10px;font-size:13px}.action-link{background:none;border:none;color:var(--p-primary-500);cursor:pointer;font-weight:600;padding:0;transition:all .2s;font-size:13px}.separator{color:var(--neutral-color-300, #d1d5db)}.format-options{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.format-card{display:flex;align-items:center;gap:16px;padding:20px;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);background:#fff;position:relative;overflow:hidden}.format-card:before{content:\"\";position:absolute;inset:0;background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.03),rgba(var(--p-primary-rgb),.06));opacity:0;transition:opacity .3s}.format-card:hover{border-color:var(--p-primary-500);transform:translateY(-2px);box-shadow:0 8px 24px rgba(var(--p-primary-rgb),.15)}.format-card:hover:before{opacity:1}.format-card.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08));box-shadow:0 0 0 4px rgba(var(--p-primary-rgb),.1)}.card-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:12px;transition:all .3s;position:relative;z-index:1;background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%)}.card-icon i{font-size:22px;color:var(--p-primary-500)}.card-count i{font-size:6px}.columns-summary i{color:var(--p-primary-500);font-size:18px}.card-icon.excel{background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%)}.card-icon.excel i{color:#107c41;font-size:26px}.card-icon.pdf{background:linear-gradient(135deg,#fee8e8,#fdd4d4)}.card-icon.pdf i{color:#dc2626;font-size:26px}.format-card.selected .card-icon{background:linear-gradient(135deg,var(--p-primary-500) 0%,var(--p-primary-500) 100%);transform:scale(1.05)}.format-card.selected .card-icon i{color:#fff}.card-info{flex:1;display:flex;flex-direction:column;gap:4px;position:relative;z-index:1}.card-label{font-size:16px;font-weight:700;color:var(--neutral-color-800, #1f2937);cursor:pointer;margin:0}.card-description{font-size:13px;color:var(--neutral-color-600, #4b5563);line-height:1.4}.scope-options{display:flex;flex-direction:column;gap:14px}.scope-card{display:flex;align-items:center;gap:16px;padding:20px;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);background:#fff;position:relative;overflow:hidden}.scope-card:hover:not(.disabled){border-color:var(--p-primary-500);box-shadow:0 4px 16px rgba(var(--p-primary-rgb),.12)}.scope-card.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08));box-shadow:0 0 0 4px rgba(var(--p-primary-rgb),.1)}.card-count{font-size:13px;font-weight:600;color:var(--p-primary-500);margin-top:6px;display:inline-flex;align-items:center;gap:6px}.scope-card.disabled{opacity:.5;cursor:not-allowed;background:#f9fafb}.scope-card.selected .card-icon{background:linear-gradient(135deg,var(--p-primary-500) 0%,var(--p-primary-500) 100%);transform:scale(1.05)}.scope-card.selected .card-icon i{color:#fff}.columns-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.column-item{display:flex;align-items:center;gap:12px;padding:16px;border:2px solid #e5e7eb;border-radius:10px;transition:all .2s;background:#fff;cursor:pointer}.column-item:hover{border-color:var(--p-primary-500);background:rgba(var(--p-primary-rgb),.03)}.column-item.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08))}.column-label{font-size:14px;font-weight:600;color:var(--neutral-color-800, #1f2937);cursor:pointer;margin:0;-webkit-user-select:none;user-select:none}.columns-summary{display:flex;align-items:center;gap:10px;padding:14px 18px;background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%);border-radius:10px;font-size:14px;color:var(--neutral-color-700, #374151);font-weight:600}@media (max-width: 768px){::ng-deep .s-export-dialog .p-dialog{width:95vw!important;margin:0}.export-content{padding:24px}.format-options,.columns-grid{grid-template-columns:1fr}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i5.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i6.RadioButton, selector: "p-radioButton, p-radiobutton, p-radio-button", inputs: ["value", "formControlName", "name", "disabled", "variant", "size", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "autofocus", "binary"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i7.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
120
+ }
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataComponent, decorators: [{
122
+ type: Component,
123
+ args: [{ selector: 's-export-data', standalone: true, imports: [
124
+ CommonModule,
125
+ FormsModule,
126
+ DialogModule,
127
+ ButtonModule,
128
+ RadioButtonModule,
129
+ CheckboxModule,
130
+ TranslatePipe
131
+ ], template: "<p-dialog\n [visible]=\"visible()\"\n (visibleChange)=\"visibleChange.emit($event)\"\n (onHide)=\"onDialogHide()\"\n [modal]=\"true\"\n [draggable]=\"false\"\n [resizable]=\"false\"\n styleClass=\"s-export-dialog s-export-dialog-width\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"custom-header\">\n <i class=\"pi pi-download header-icon\"></i>\n <span>{{ 'crmx.components.export_title' | translate }}</span>\n </div>\n </ng-template>\n\n <div class=\"export-content\">\n\n <!-- Formato de Exporta\u00E7\u00E3o -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-file\"></i></div>\n <h3>{{ 'crmx.components.export_file_format' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let fmt of fileTypes\"\n class=\"format-card\"\n [class.selected]=\"selectedFileType() === fmt.value\"\n [for]=\"'fmt_' + fmt.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"fmt.value\"\n [(ngModel)]=\"selectedFileTypeModel\"\n [inputId]=\"'fmt_' + fmt.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\" [class.excel]=\"fmt.value === 'EXCEL'\" [class.pdf]=\"fmt.value === 'PDF'\">\n <i class=\"pi\" [ngClass]=\"fmt.icon\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ fmt.label }}</span>\n <span class=\"card-description\">{{ fmt.description }}</span>\n </div>\n </label>\n </div>\n </div>\n\n <!-- Orienta\u00E7\u00E3o + Formato da folha (apenas PDF) -->\n @if (selectedFileType() === 'PDF') {\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-arrows-alt\"></i></div>\n <h3>{{ 'crmx.components.export_orientation' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let o of orientations\"\n class=\"format-card\"\n [class.selected]=\"selectedOrientation() === o.value\"\n [for]=\"'orient_' + o.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"o.value\"\n [(ngModel)]=\"selectedOrientationModel\"\n [inputId]=\"'orient_' + o.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\">\n <i class=\"pi\" [ngClass]=\"o.icon\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ o.label }}</span>\n </div>\n </label>\n </div>\n </div>\n\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-stop\"></i></div>\n <h3>{{ 'crmx.components.export_sheet_format' | translate }}</h3>\n </div>\n <div class=\"format-options\" role=\"radiogroup\">\n <label\n *ngFor=\"let f of fileFormats\"\n class=\"format-card\"\n [class.selected]=\"selectedFileFormat() === f.value\"\n [for]=\"'format_' + f.value\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n [value]=\"f.value\"\n [(ngModel)]=\"selectedFileFormatModel\"\n [inputId]=\"'format_' + f.value\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\">\n <i class=\"pi pi-file\"></i>\n </div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ f.label }}</span>\n <span class=\"card-description\">{{ f.description }}</span>\n </div>\n </label>\n </div>\n </div>\n }\n\n <!-- Escopo -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-filter\"></i></div>\n <h3>{{ 'crmx.components.export_scope' | translate }}</h3>\n </div>\n <div class=\"scope-options\" role=\"radiogroup\">\n <label\n class=\"scope-card\"\n [class.selected]=\"!hasSelectedIds()\"\n for=\"scope_all\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n value=\"all\"\n [(ngModel)]=\"exportScopeModel\"\n inputId=\"scope_all\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\"><i class=\"pi pi-list\"></i></div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ 'crmx.components.export_scope_all' | translate }}</span>\n <span class=\"card-description\">{{ 'crmx.components.export_scope_all_desc' | translate }}</span>\n </div>\n </label>\n <label\n class=\"scope-card\"\n [class.selected]=\"hasSelectedIds()\"\n [class.disabled]=\"!hasSelectedIds()\"\n for=\"scope_selected\"\n >\n <div class=\"card-radio\">\n <p-radioButton\n value=\"selected\"\n [(ngModel)]=\"exportScopeModel\"\n inputId=\"scope_selected\"\n [disabled]=\"!hasSelectedIds()\"\n ></p-radioButton>\n </div>\n <div class=\"card-icon\"><i class=\"pi pi-check-square\"></i></div>\n <div class=\"card-info\">\n <span class=\"card-label\">{{ 'crmx.components.export_scope_selected' | translate }}</span>\n <span class=\"card-description\">{{ 'crmx.components.export_scope_selected_desc' | translate }}</span>\n <span class=\"card-count\">\n <i class=\"pi pi-circle-fill\"></i>\n {{ 'crmx.components.export_records_selected' | translate:{ count: selectedIds().length } }}\n </span>\n </div>\n </label>\n </div>\n </div>\n\n <!-- Sele\u00E7\u00E3o de Colunas -->\n <div class=\"export-section\">\n <div class=\"section-header\">\n <div class=\"section-icon\"><i class=\"pi pi-table\"></i></div>\n <h3>{{ 'crmx.components.export_columns' | translate }}</h3>\n <div class=\"column-actions\">\n <button type=\"button\" class=\"action-link\" (click)=\"selectAllColumns()\">\n {{ 'crmx.components.export_columns_all' | translate }}\n </button>\n <span class=\"separator\">|</span>\n <button type=\"button\" class=\"action-link\" (click)=\"deselectAllColumns()\">\n {{ 'crmx.components.export_columns_none' | translate }}\n </button>\n </div>\n </div>\n <div class=\"columns-grid\">\n <label\n *ngFor=\"let col of columnSelections()\"\n class=\"column-item\"\n [class.selected]=\"col.selected\"\n [for]=\"'col_' + col.column.columnName\"\n >\n <p-checkbox\n [(ngModel)]=\"col.selected\"\n [binary]=\"true\"\n [inputId]=\"'col_' + col.column.columnName\"\n (onChange)=\"refreshColumns()\"\n ></p-checkbox>\n <span class=\"column-label\">{{ col.column.translateKey | translate }}</span>\n </label>\n </div>\n <div class=\"columns-summary\">\n <i class=\"pi pi-info-circle\"></i>\n <span>\n {{\n 'crmx.components.export_columns_summary'\n | translate:{ selected: selectedColumnsCount(), total: columnSelections().length }\n }}\n </span>\n </div>\n </div>\n\n </div>\n\n <ng-template pTemplate=\"footer\">\n <p-button\n [label]=\"'crmx.components.cancel' | translate\"\n icon=\"pi pi-times\"\n severity=\"secondary\"\n [text]=\"true\"\n (onClick)=\"onDialogHide()\"\n />\n <p-button\n [label]=\"'crmx.components.export_button' | translate\"\n icon=\"pi pi-download\"\n [disabled]=\"!canExport()\"\n [loading]=\"exporting()\"\n (onClick)=\"doExport()\"\n />\n </ng-template>\n</p-dialog>\n", styles: ["::ng-deep .s-export-dialog .p-dialog{border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d}::ng-deep .s-export-dialog-width .p-dialog{width:700px}::ng-deep .s-export-dialog .p-dialog-content{padding:0;background:#fff;max-height:70vh;overflow-y:auto}::ng-deep .s-export-dialog .p-dialog-footer{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:16px 32px}.custom-header{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:600}.custom-header .header-icon{font-size:22px;color:var(--p-primary-500)}.export-content{padding:28px 32px}.export-section{margin-bottom:32px}.export-section:last-child{margin-bottom:0}.section-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.section-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.1),rgba(var(--p-primary-rgb),.15));border-radius:10px}.section-icon i{font-size:18px;color:var(--p-primary-500)}.section-header h3{margin:0;font-size:17px;font-weight:700;color:var(--neutral-color-800, #1f2937);flex:1}.column-actions{display:flex;align-items:center;gap:10px;font-size:13px}.action-link{background:none;border:none;color:var(--p-primary-500);cursor:pointer;font-weight:600;padding:0;transition:all .2s;font-size:13px}.separator{color:var(--neutral-color-300, #d1d5db)}.format-options{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.format-card{display:flex;align-items:center;gap:16px;padding:20px;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);background:#fff;position:relative;overflow:hidden}.format-card:before{content:\"\";position:absolute;inset:0;background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.03),rgba(var(--p-primary-rgb),.06));opacity:0;transition:opacity .3s}.format-card:hover{border-color:var(--p-primary-500);transform:translateY(-2px);box-shadow:0 8px 24px rgba(var(--p-primary-rgb),.15)}.format-card:hover:before{opacity:1}.format-card.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08));box-shadow:0 0 0 4px rgba(var(--p-primary-rgb),.1)}.card-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:12px;transition:all .3s;position:relative;z-index:1;background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%)}.card-icon i{font-size:22px;color:var(--p-primary-500)}.card-count i{font-size:6px}.columns-summary i{color:var(--p-primary-500);font-size:18px}.card-icon.excel{background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%)}.card-icon.excel i{color:#107c41;font-size:26px}.card-icon.pdf{background:linear-gradient(135deg,#fee8e8,#fdd4d4)}.card-icon.pdf i{color:#dc2626;font-size:26px}.format-card.selected .card-icon{background:linear-gradient(135deg,var(--p-primary-500) 0%,var(--p-primary-500) 100%);transform:scale(1.05)}.format-card.selected .card-icon i{color:#fff}.card-info{flex:1;display:flex;flex-direction:column;gap:4px;position:relative;z-index:1}.card-label{font-size:16px;font-weight:700;color:var(--neutral-color-800, #1f2937);cursor:pointer;margin:0}.card-description{font-size:13px;color:var(--neutral-color-600, #4b5563);line-height:1.4}.scope-options{display:flex;flex-direction:column;gap:14px}.scope-card{display:flex;align-items:center;gap:16px;padding:20px;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);background:#fff;position:relative;overflow:hidden}.scope-card:hover:not(.disabled){border-color:var(--p-primary-500);box-shadow:0 4px 16px rgba(var(--p-primary-rgb),.12)}.scope-card.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08));box-shadow:0 0 0 4px rgba(var(--p-primary-rgb),.1)}.card-count{font-size:13px;font-weight:600;color:var(--p-primary-500);margin-top:6px;display:inline-flex;align-items:center;gap:6px}.scope-card.disabled{opacity:.5;cursor:not-allowed;background:#f9fafb}.scope-card.selected .card-icon{background:linear-gradient(135deg,var(--p-primary-500) 0%,var(--p-primary-500) 100%);transform:scale(1.05)}.scope-card.selected .card-icon i{color:#fff}.columns-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.column-item{display:flex;align-items:center;gap:12px;padding:16px;border:2px solid #e5e7eb;border-radius:10px;transition:all .2s;background:#fff;cursor:pointer}.column-item:hover{border-color:var(--p-primary-500);background:rgba(var(--p-primary-rgb),.03)}.column-item.selected{border-color:var(--p-primary-500);background:linear-gradient(135deg,rgba(var(--p-primary-rgb),.05),rgba(var(--p-primary-rgb),.08))}.column-label{font-size:14px;font-weight:600;color:var(--neutral-color-800, #1f2937);cursor:pointer;margin:0;-webkit-user-select:none;user-select:none}.columns-summary{display:flex;align-items:center;gap:10px;padding:14px 18px;background:linear-gradient(135deg,var(--p-primary-50, #f0fdf4) 0%,var(--p-primary-100, #dcfce7) 100%);border-radius:10px;font-size:14px;color:var(--neutral-color-700, #374151);font-weight:600}@media (max-width: 768px){::ng-deep .s-export-dialog .p-dialog{width:95vw!important;margin:0}.export-content{padding:24px}.format-options,.columns-grid{grid-template-columns:1fr}}\n"] }]
132
+ }] });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9leHBvcnQtZGF0YS9leHBvcnQtZGF0YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kYXRhL2V4cG9ydC1kYXRhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7O0FBRTlEOzs7Ozs7O0dBT0c7QUFnQkgsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixPQUFPLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLGFBQWEsR0FBRyxNQUFNLEVBQVcsQ0FBQztJQUNsQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBb0IsQ0FBQztJQUM1QyxXQUFXLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsR0FBRyxNQUFNLEVBQVEsQ0FBQztJQUMxQixXQUFXLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFFdEIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFpQixjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEUsbUJBQW1CLEdBQUcsTUFBTSxDQUFvQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RSxrQkFBa0IsR0FBRyxNQUFNLENBQW1CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLFdBQVcsR0FBRyxNQUFNLENBQXFCLEtBQUssQ0FBQyxDQUFDO0lBQ2hELFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFnRCxFQUFFLENBQUMsQ0FBQztJQUV0RixJQUFJLHFCQUFxQixLQUFxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRSxJQUFJLHFCQUFxQixDQUFDLENBQWlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUUsSUFBSSx3QkFBd0IsS0FBd0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsSUFBSSx3QkFBd0IsQ0FBQyxDQUFvQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXZGLElBQUksdUJBQXVCLEtBQXVCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLElBQUksdUJBQXVCLENBQUMsQ0FBbUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwRixJQUFJLGdCQUFnQixLQUFhLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxJQUFJLGdCQUFnQixDQUFDLENBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXpFLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FDdkQsQ0FBQztJQUNPLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRWpGLFNBQVMsR0FBRztRQUNuQixFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUU7UUFDdEgsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLEdBQUcsRUFBSSxLQUFLLEVBQUUsS0FBSyxFQUFJLElBQUksRUFBRSxhQUFhLEVBQUksV0FBVyxFQUFFLG9DQUFvQyxFQUFFO0tBQzFILENBQUM7SUFDTyxZQUFZLEdBQUc7UUFDdEIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1FBQzNGLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLFFBQVEsRUFBRyxLQUFLLEVBQUUsb0JBQW9CLEVBQUssSUFBSSxFQUFFLGFBQWEsRUFBRTtLQUM1RixDQUFDO0lBQ08sV0FBVyxHQUFHO1FBQ3JCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtRQUM5RSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUU7S0FDL0UsQ0FBQztJQUVGLFdBQVc7UUFDVCxJQUFJLEdBQWlDLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQywrQ0FBK0M7UUFDekQsQ0FBQztRQUNELElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQ3ZCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ2hGLENBQUM7UUFDSixDQUFDO1FBQ0Qsd0NBQXdDO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQXFDO1FBQzFELE9BQU8sWUFBWSxJQUFJLEdBQUcsSUFBSSxjQUFjLElBQUksR0FBRyxJQUFJLFlBQVksSUFBSSxHQUFHLENBQUM7SUFDN0UsQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFxQztRQUMzRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxHQUF3QixDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFxQztZQUNoRCxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQ2hFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLElBQUk7WUFDNUQsVUFBVSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTtZQUM1RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixDQUFDLElBQUk7U0FDbEcsQ0FBQztRQUNGLE9BQU87WUFDTCxVQUFVLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDdkIsWUFBWSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3hFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFnRDtRQUMzRCxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7d0dBOUdVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJrQkMzQ2hDLDBxUUFnT0EsazVLRGhNSSxZQUFZLHlQQUNaLFdBQVcsOFZBQ1gsWUFBWSwwZ0NBQ1osWUFBWSxpYkFDWixpQkFBaUIsaVdBQ2pCLGNBQWMsOGJBQ2QsYUFBYTs7NEZBS0osbUJBQW1CO2tCQWYvQixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsYUFBYTtxQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgT25DaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kaWFsb2cnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XG5cblxuaW1wb3J0IHsgRXhwb3J0RGF0YUNvbmZpZywgRXhwb3J0Q29sdW1uLCBFeHBvcnRDb2x1bW5JbnB1dCB9IGZyb20gJy4vZW50aXRpZXMvZXhwb3J0LWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEV4cG9ydEZpbGVUeXBlLCBFeHBvcnRPcmllbnRhdGlvbiwgRXhwb3J0RmlsZUZvcm1hdCwgRXhwb3J0Q29sdW1uVHlwZSB9IGZyb20gJy4vZW51bXMvZXhwb3J0LWRhdGEuZW51bXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9jb21wb25lbnRzLWFpJztcblxuLyoqXG4gKiBDb21wb25lbnRlIGRlIGV4cG9ydGHDp8OjbyBkZSBkYWRvcyAocy1leHBvcnQtZGF0YSkuXG4gKiBQZXJtaXRlIGFvIHVzdcOhcmlvIGVzY29saGVyIG8gZm9ybWF0byBkbyBhcnF1aXZvIChFeGNlbCBvdSBQREYpLCBhIG9yaWVudGHDp8OjbyBkYSBww6FnaW5hLFxuICogbyBmb3JtYXRvIGRhIGZvbGhhLCBvIGVzY29wbyAodG9kb3Mgb3MgcmVnaXN0cm9zIG91IGFwZW5hcyBvcyBzZWxlY2lvbmFkb3MpIGVcbiAqIGFzIGNvbHVuYXMgYSBzZXJlbSBleHBvcnRhZGFzLlxuICpcbiAqIENvbXVuaWNhLXNlIGNvbSBvIGBjcm14LWRhdGEtZXhwb3J0LWJhY2tlbmRgIHZpYSBIVFRQIChmaXJlLWFuZC1mb3JnZXQpLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzLWV4cG9ydC1kYXRhJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFJhZGlvQnV0dG9uTW9kdWxlLFxuICAgIENoZWNrYm94TW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2V4cG9ydC1kYXRhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2V4cG9ydC1kYXRhLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgdmlzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZUNoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xuICBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxFeHBvcnREYXRhQ29uZmlnPigpO1xuICBzZWxlY3RlZElkcyA9IGlucHV0PHN0cmluZ1tdPihbXSk7XG4gIGV4cG9ydGVkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIGV4cG9ydEVycm9yID0gb3V0cHV0PHN0cmluZz4oKTtcblxuICByZWFkb25seSBzZWxlY3RlZEZpbGVUeXBlID0gc2lnbmFsPEV4cG9ydEZpbGVUeXBlPihFeHBvcnRGaWxlVHlwZS5FeGNlbCk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkT3JpZW50YXRpb24gPSBzaWduYWw8RXhwb3J0T3JpZW50YXRpb24+KEV4cG9ydE9yaWVudGF0aW9uLkxhbmRzY2FwZSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkRmlsZUZvcm1hdCA9IHNpZ25hbDxFeHBvcnRGaWxlRm9ybWF0PihFeHBvcnRGaWxlRm9ybWF0LkE0KTtcbiAgcmVhZG9ubHkgZXhwb3J0U2NvcGUgPSBzaWduYWw8J2FsbCcgfCAnc2VsZWN0ZWQnPignYWxsJyk7XG4gIHJlYWRvbmx5IGV4cG9ydGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGNvbHVtblNlbGVjdGlvbnMgPSBzaWduYWw8eyBjb2x1bW46IEV4cG9ydENvbHVtbjsgc2VsZWN0ZWQ6IGJvb2xlYW4gfVtdPihbXSk7XG5cbiAgZ2V0IHNlbGVjdGVkRmlsZVR5cGVNb2RlbCgpOiBFeHBvcnRGaWxlVHlwZSB7IHJldHVybiB0aGlzLnNlbGVjdGVkRmlsZVR5cGUoKTsgfVxuICBzZXQgc2VsZWN0ZWRGaWxlVHlwZU1vZGVsKHY6IEV4cG9ydEZpbGVUeXBlKSB7IHRoaXMuc2VsZWN0ZWRGaWxlVHlwZS5zZXQodik7IH1cblxuICBnZXQgc2VsZWN0ZWRPcmllbnRhdGlvbk1vZGVsKCk6IEV4cG9ydE9yaWVudGF0aW9uIHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcmllbnRhdGlvbigpOyB9XG4gIHNldCBzZWxlY3RlZE9yaWVudGF0aW9uTW9kZWwodjogRXhwb3J0T3JpZW50YXRpb24pIHsgdGhpcy5zZWxlY3RlZE9yaWVudGF0aW9uLnNldCh2KTsgfVxuXG4gIGdldCBzZWxlY3RlZEZpbGVGb3JtYXRNb2RlbCgpOiBFeHBvcnRGaWxlRm9ybWF0IHsgcmV0dXJuIHRoaXMuc2VsZWN0ZWRGaWxlRm9ybWF0KCk7IH1cbiAgc2V0IHNlbGVjdGVkRmlsZUZvcm1hdE1vZGVsKHY6IEV4cG9ydEZpbGVGb3JtYXQpIHsgdGhpcy5zZWxlY3RlZEZpbGVGb3JtYXQuc2V0KHYpOyB9XG5cbiAgZ2V0IGV4cG9ydFNjb3BlTW9kZWwoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZXhwb3J0U2NvcGUoKTsgfVxuICBzZXQgZXhwb3J0U2NvcGVNb2RlbCh2OiBzdHJpbmcpIHsgdGhpcy5leHBvcnRTY29wZS5zZXQodiBhcyAnYWxsJyB8ICdzZWxlY3RlZCcpOyB9XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRDb2x1bW5zQ291bnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1uU2VsZWN0aW9ucygpLmZpbHRlcihjID0+IGMuc2VsZWN0ZWQpLmxlbmd0aFxuICApO1xuICByZWFkb25seSBoYXNTZWxlY3RlZElkcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJZHMoKS5sZW5ndGggPiAwKTtcbiAgcmVhZG9ubHkgY2FuRXhwb3J0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZENvbHVtbnNDb3VudCgpID4gMCAmJiAhdGhpcy5leHBvcnRpbmcoKSk7XG5cbiAgcmVhZG9ubHkgZmlsZVR5cGVzID0gW1xuICAgIHsgdmFsdWU6IEV4cG9ydEZpbGVUeXBlLkV4Y2VsLCBsYWJlbDogJ0V4Y2VsJywgaWNvbjogJ3BpLWZpbGUtZXhjZWwnLCBkZXNjcmlwdGlvbjogJ1BsYW5pbGhhIGNvbSBjb2x1bmFzIGFqdXN0w6F2ZWlzJyB9LFxuICAgIHsgdmFsdWU6IEV4cG9ydEZpbGVUeXBlLlBkZiwgICBsYWJlbDogJ1BERicsICAgaWNvbjogJ3BpLWZpbGUtcGRmJywgICBkZXNjcmlwdGlvbjogJ0RvY3VtZW50byBmb3JtYXRhZG8gcGFyYSBpbXByZXNzw6NvJyB9XG4gIF07XG4gIHJlYWRvbmx5IG9yaWVudGF0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiBFeHBvcnRPcmllbnRhdGlvbi5MYW5kc2NhcGUsIGxhYmVsOiAnUGFpc2FnZW0gKEhvcml6b250YWwpJywgaWNvbjogJ3BpLWFycm93cy1oJyB9LFxuICAgIHsgdmFsdWU6IEV4cG9ydE9yaWVudGF0aW9uLlBvcnRyYWl0LCAgbGFiZWw6ICdSZXRyYXRvIChWZXJ0aWNhbCknLCAgICBpY29uOiAncGktYXJyb3dzLXYnIH1cbiAgXTtcbiAgcmVhZG9ubHkgZmlsZUZvcm1hdHMgPSBbXG4gICAgeyB2YWx1ZTogRXhwb3J0RmlsZUZvcm1hdC5BNCwgbGFiZWw6ICdBNCcsIGRlc2NyaXB0aW9uOiAnUGFkcsOjbyAoMjEww5cyOTdtbSknIH0sXG4gICAgeyB2YWx1ZTogRXhwb3J0RmlsZUZvcm1hdC5BMywgbGFiZWw6ICdBMycsIGRlc2NyaXB0aW9uOiAnR3JhbmRlICgyOTfDlzQyMG1tKScgfVxuICBdO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGxldCBjZmc6IEV4cG9ydERhdGFDb25maWcgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuOyAvLyBjb25maWcgYWluZGEgbsOjbyBmb2kgc2V0YWRvIChyZXF1aXJlZCBpbnB1dClcbiAgICB9XG4gICAgaWYgKGNmZz8uY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5TZWxlY3Rpb25zLnNldChcbiAgICAgICAgY2ZnLmNvbHVtbnMubWFwKGNvbCA9PiAoeyBjb2x1bW46IHRoaXMubm9ybWFsaXplQ29sdW1uKGNvbCksIHNlbGVjdGVkOiB0cnVlIH0pKVxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gU2luY3Jvbml6YSBlc2NvcG8gY29tIHByZXNlbsOnYSBkZSBJRHNcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuc2VsZWN0ZWRJZHMoKS5sZW5ndGggPiAwID8gJ3NlbGVjdGVkJyA6ICdhbGwnO1xuICAgIHRoaXMuZXhwb3J0U2NvcGUuc2V0KHNjb3BlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFeHBvcnRDb2x1bW4oY29sOiBFeHBvcnRDb2x1bW4gfCBFeHBvcnRDb2x1bW5JbnB1dCk6IGNvbCBpcyBFeHBvcnRDb2x1bW4ge1xuICAgIHJldHVybiAnY29sdW1uTmFtZScgaW4gY29sICYmICd0cmFuc2xhdGVLZXknIGluIGNvbCAmJiAnY29sdW1uVHlwZScgaW4gY29sO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVDb2x1bW4oY29sOiBFeHBvcnRDb2x1bW4gfCBFeHBvcnRDb2x1bW5JbnB1dCk6IEV4cG9ydENvbHVtbiB7XG4gICAgaWYgKHRoaXMuaXNFeHBvcnRDb2x1bW4oY29sKSkge1xuICAgICAgcmV0dXJuIGNvbDtcbiAgICB9XG4gICAgY29uc3QgaW5wdXQgPSBjb2wgYXMgRXhwb3J0Q29sdW1uSW5wdXQ7XG4gICAgY29uc3QgdHlwZU1hcDogUmVjb3JkPHN0cmluZywgRXhwb3J0Q29sdW1uVHlwZT4gPSB7XG4gICAgICAnVEVYVCc6IEV4cG9ydENvbHVtblR5cGUuVGV4dCwgJ05VTUJFUic6IEV4cG9ydENvbHVtblR5cGUuTnVtYmVyLFxuICAgICAgJ0VOVU0nOiBFeHBvcnRDb2x1bW5UeXBlLkVudW0sICdEQVRFJzogRXhwb3J0Q29sdW1uVHlwZS5EYXRlLFxuICAgICAgJ0RBVEVUSU1FJzogRXhwb3J0Q29sdW1uVHlwZS5EYXRldGltZSwgJ0NVUlJFTkNZJzogRXhwb3J0Q29sdW1uVHlwZS5DdXJyZW5jeSxcbiAgICAgICdzdGF0dXMnOiBFeHBvcnRDb2x1bW5UeXBlLkVudW0sICdudW1iZXInOiBFeHBvcnRDb2x1bW5UeXBlLk51bWJlciwgJ3RleHQnOiBFeHBvcnRDb2x1bW5UeXBlLlRleHRcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5OYW1lOiBpbnB1dC5maWVsZCxcbiAgICAgIHRyYW5zbGF0ZUtleTogaW5wdXQuaGVhZGVyLFxuICAgICAgY29sdW1uVHlwZTogdHlwZU1hcFtpbnB1dC5leHBvcnRUeXBlID8/ICdURVhUJ10gPz8gRXhwb3J0Q29sdW1uVHlwZS5UZXh0LFxuICAgICAgdHJhbnNsYXRpb25LZXlQcmVmaXg6IGlucHV0LnRyYW5zbGF0aW9uS2V5UHJlZml4XG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdEFsbENvbHVtbnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5TZWxlY3Rpb25zLnVwZGF0ZShjb2xzID0+IGNvbHMubWFwKGMgPT4gKHsgLi4uYywgc2VsZWN0ZWQ6IHRydWUgfSkpKTtcbiAgfVxuXG4gIGRlc2VsZWN0QWxsQ29sdW1ucygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtblNlbGVjdGlvbnMudXBkYXRlKGNvbHMgPT4gY29scy5tYXAoYyA9PiAoeyAuLi5jLCBzZWxlY3RlZDogZmFsc2UgfSkpKTtcbiAgfVxuXG4gIHRvZ2dsZUNvbHVtbihjb2w6IHsgY29sdW1uOiBFeHBvcnRDb2x1bW47IHNlbGVjdGVkOiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBjb2wuc2VsZWN0ZWQgPSAhY29sLnNlbGVjdGVkO1xuICAgIHRoaXMucmVmcmVzaENvbHVtbnMoKTtcbiAgfVxuXG4gIHJlZnJlc2hDb2x1bW5zKCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1uU2VsZWN0aW9ucy51cGRhdGUoY29scyA9PiBbLi4uY29sc10pO1xuICB9XG5cbiAgb25EaWFsb2dIaWRlKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIGFzeW5jIGRvRXhwb3J0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZXhwb3J0ZWQuZW1pdCgpO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiPHAtZGlhbG9nXG4gIFt2aXNpYmxlXT1cInZpc2libGUoKVwiXG4gICh2aXNpYmxlQ2hhbmdlKT1cInZpc2libGVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgKG9uSGlkZSk9XCJvbkRpYWxvZ0hpZGUoKVwiXG4gIFttb2RhbF09XCJ0cnVlXCJcbiAgW2RyYWdnYWJsZV09XCJmYWxzZVwiXG4gIFtyZXNpemFibGVdPVwiZmFsc2VcIlxuICBzdHlsZUNsYXNzPVwicy1leHBvcnQtZGlhbG9nIHMtZXhwb3J0LWRpYWxvZy13aWR0aFwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWhlYWRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1kb3dubG9hZCBoZWFkZXItaWNvblwiPjwvaT5cbiAgICAgIDxzcGFuPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3RpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiZXhwb3J0LWNvbnRlbnRcIj5cblxuICAgIDwhLS0gRm9ybWF0byBkZSBFeHBvcnRhw6fDo28gLS0+XG4gICAgPGRpdiBjbGFzcz1cImV4cG9ydC1zZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taWNvblwiPjxpIGNsYXNzPVwicGkgcGktZmlsZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPGgzPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X2ZpbGVfZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtYXQtb3B0aW9uc1wiIHJvbGU9XCJyYWRpb2dyb3VwXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmbXQgb2YgZmlsZVR5cGVzXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm1hdC1jYXJkXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRGaWxlVHlwZSgpID09PSBmbXQudmFsdWVcIlxuICAgICAgICAgIFtmb3JdPVwiJ2ZtdF8nICsgZm10LnZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXJhZGlvXCI+XG4gICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZm10LnZhbHVlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZpbGVUeXBlTW9kZWxcIlxuICAgICAgICAgICAgICBbaW5wdXRJZF09XCInZm10XycgKyBmbXQudmFsdWVcIlxuICAgICAgICAgICAgPjwvcC1yYWRpb0J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pY29uXCIgW2NsYXNzLmV4Y2VsXT1cImZtdC52YWx1ZSA9PT0gJ0VYQ0VMJ1wiIFtjbGFzcy5wZGZdPVwiZm10LnZhbHVlID09PSAnUERGJ1wiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cImZtdC5pY29uXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWluZm9cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbFwiPnt7IGZtdC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiPnt7IGZtdC5kZXNjcmlwdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBPcmllbnRhw6fDo28gKyBGb3JtYXRvIGRhIGZvbGhhIChhcGVuYXMgUERGKSAtLT5cbiAgICBAaWYgKHNlbGVjdGVkRmlsZVR5cGUoKSA9PT0gJ1BERicpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJleHBvcnQtc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pY29uXCI+PGkgY2xhc3M9XCJwaSBwaS1hcnJvd3MtYWx0XCI+PC9pPjwvZGl2PlxuICAgICAgICAgIDxoMz57eyAnY3JteC5jb21wb25lbnRzLmV4cG9ydF9vcmllbnRhdGlvbicgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1hdC1vcHRpb25zXCIgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvIG9mIG9yaWVudGF0aW9uc1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm1hdC1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZE9yaWVudGF0aW9uKCkgPT09IG8udmFsdWVcIlxuICAgICAgICAgICAgW2Zvcl09XCInb3JpZW50XycgKyBvLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1yYWRpb1wiPlxuICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkT3JpZW50YXRpb25Nb2RlbFwiXG4gICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiJ29yaWVudF8nICsgby52YWx1ZVwiXG4gICAgICAgICAgICAgID48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaVwiIFtuZ0NsYXNzXT1cIm8uaWNvblwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaW5mb1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWxcIj57eyBvLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImV4cG9ydC1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWljb25cIj48aSBjbGFzcz1cInBpIHBpLXN0b3BcIj48L2k+PC9kaXY+XG4gICAgICAgICAgPGgzPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3NoZWV0X2Zvcm1hdCcgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1hdC1vcHRpb25zXCIgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmIG9mIGZpbGVGb3JtYXRzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybWF0LWNhcmRcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cInNlbGVjdGVkRmlsZUZvcm1hdCgpID09PSBmLnZhbHVlXCJcbiAgICAgICAgICAgIFtmb3JdPVwiJ2Zvcm1hdF8nICsgZi52YWx1ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtcmFkaW9cIj5cbiAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZpbGVGb3JtYXRNb2RlbFwiXG4gICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiJ2Zvcm1hdF8nICsgZi52YWx1ZVwiXG4gICAgICAgICAgICAgID48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1maWxlXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbmZvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbFwiPnt7IGYubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiPnt7IGYuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRXNjb3BvIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJleHBvcnQtc2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWljb25cIj48aSBjbGFzcz1cInBpIHBpLWZpbHRlclwiPjwvaT48L2Rpdj5cbiAgICAgICAgPGgzPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3Njb3BlJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzY29wZS1vcHRpb25zXCIgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgY2xhc3M9XCJzY29wZS1jYXJkXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiIWhhc1NlbGVjdGVkSWRzKClcIlxuICAgICAgICAgIGZvcj1cInNjb3BlX2FsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1yYWRpb1wiPlxuICAgICAgICAgICAgPHAtcmFkaW9CdXR0b25cbiAgICAgICAgICAgICAgdmFsdWU9XCJhbGxcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImV4cG9ydFNjb3BlTW9kZWxcIlxuICAgICAgICAgICAgICBpbnB1dElkPVwic2NvcGVfYWxsXCJcbiAgICAgICAgICAgID48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPjxpIGNsYXNzPVwicGkgcGktbGlzdFwiPjwvaT48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbmZvXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWxcIj57eyAnY3JteC5jb21wb25lbnRzLmV4cG9ydF9zY29wZV9hbGwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWRlc2NyaXB0aW9uXCI+e3sgJ2NybXguY29tcG9uZW50cy5leHBvcnRfc2NvcGVfYWxsX2Rlc2MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBjbGFzcz1cInNjb3BlLWNhcmRcIlxuICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJoYXNTZWxlY3RlZElkcygpXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkSWRzKClcIlxuICAgICAgICAgIGZvcj1cInNjb3BlX3NlbGVjdGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXJhZGlvXCI+XG4gICAgICAgICAgICA8cC1yYWRpb0J1dHRvblxuICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJleHBvcnRTY29wZU1vZGVsXCJcbiAgICAgICAgICAgICAgaW5wdXRJZD1cInNjb3BlX3NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZElkcygpXCJcbiAgICAgICAgICAgID48L3AtcmFkaW9CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPjxpIGNsYXNzPVwicGkgcGktY2hlY2stc3F1YXJlXCI+PC9pPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWluZm9cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbFwiPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3Njb3BlX3NlbGVjdGVkJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3Njb3BlX3NlbGVjdGVkX2Rlc2MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWNvdW50XCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2lyY2xlLWZpbGxcIj48L2k+XG4gICAgICAgICAgICAgIHt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X3JlY29yZHNfc2VsZWN0ZWQnIHwgdHJhbnNsYXRlOnsgY291bnQ6IHNlbGVjdGVkSWRzKCkubGVuZ3RoIH0gfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWxlw6fDo28gZGUgQ29sdW5hcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZXhwb3J0LXNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pY29uXCI+PGkgY2xhc3M9XCJwaSBwaS10YWJsZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPGgzPnt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X2NvbHVtbnMnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhY3Rpb24tbGlua1wiIChjbGljayk9XCJzZWxlY3RBbGxDb2x1bW5zKClcIj5cbiAgICAgICAgICAgIHt7ICdjcm14LmNvbXBvbmVudHMuZXhwb3J0X2NvbHVtbnNfYWxsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VwYXJhdG9yXCI+fDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFjdGlvbi1saW5rXCIgKGNsaWNrKT1cImRlc2VsZWN0QWxsQ29sdW1ucygpXCI+XG4gICAgICAgICAgICB7eyAnY3JteC5jb21wb25lbnRzLmV4cG9ydF9jb2x1bW5zX25vbmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucy1ncmlkXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uU2VsZWN0aW9ucygpXCJcbiAgICAgICAgICBjbGFzcz1cImNvbHVtbi1pdGVtXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY29sLnNlbGVjdGVkXCJcbiAgICAgICAgICBbZm9yXT1cIidjb2xfJyArIGNvbC5jb2x1bW4uY29sdW1uTmFtZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cC1jaGVja2JveFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2JpbmFyeV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpbnB1dElkXT1cIidjb2xfJyArIGNvbC5jb2x1bW4uY29sdW1uTmFtZVwiXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwicmVmcmVzaENvbHVtbnMoKVwiXG4gICAgICAgICAgPjwvcC1jaGVja2JveD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbi1sYWJlbFwiPnt7IGNvbC5jb2x1bW4udHJhbnNsYXRlS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucy1zdW1tYXJ5XCI+XG4gICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIj48L2k+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnY3JteC5jb21wb25lbnRzLmV4cG9ydF9jb2x1bW5zX3N1bW1hcnknXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlOnsgc2VsZWN0ZWQ6IHNlbGVjdGVkQ29sdW1uc0NvdW50KCksIHRvdGFsOiBjb2x1bW5TZWxlY3Rpb25zKCkubGVuZ3RoIH1cbiAgICAgICAgICB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgPHAtYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiJ2NybXguY29tcG9uZW50cy5jYW5jZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICBbdGV4dF09XCJ0cnVlXCJcbiAgICAgIChvbkNsaWNrKT1cIm9uRGlhbG9nSGlkZSgpXCJcbiAgICAvPlxuICAgIDxwLWJ1dHRvblxuICAgICAgW2xhYmVsXT1cIidjcm14LmNvbXBvbmVudHMuZXhwb3J0X2J1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY2FuRXhwb3J0KClcIlxuICAgICAgW2xvYWRpbmddPVwiZXhwb3J0aW5nKClcIlxuICAgICAgKG9uQ2xpY2spPVwiZG9FeHBvcnQoKVwiXG4gICAgLz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcC1kaWFsb2c+XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ /**
6
+ * Serviço que dispara os signals de exportação no `crmx-data-export-backend`.
7
+ *
8
+ * Os signals são fire-and-forget: o backend processa e gera o arquivo de forma assíncrona.
9
+ */
10
+ export class ExportDataService {
11
+ http;
12
+ signalsUrl = '/crmx/data_export/signals';
13
+ constructor(http) {
14
+ this.http = http;
15
+ }
16
+ /**
17
+ * Dispara `exportSelectedRecordsSignal` — exporta apenas os IDs informados.
18
+ */
19
+ async exportSelectedRecords(payload) {
20
+ await firstValueFrom(this.http.post(`${this.signalsUrl}/exportSelectedRecordsSignal`, payload));
21
+ }
22
+ /**
23
+ * Dispara `exportAllRecordsSignal` — exporta todos os registros com filtro.
24
+ */
25
+ async exportAllRecords(payload) {
26
+ await firstValueFrom(this.http.post(`${this.signalsUrl}/exportAllRecordsSignal`, payload));
27
+ }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, providedIn: 'root' });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ExportDataService, decorators: [{
32
+ type: Injectable,
33
+ args: [{ providedIn: 'root' }]
34
+ }], ctorParameters: () => [{ type: i1.HttpClient }] });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZXhwb3J0LWRhdGEvc2VydmljZXMvZXhwb3J0LWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUd0Qzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQUdDO0lBRlosVUFBVSxHQUFHLDJCQUEyQixDQUFDO0lBRTFELFlBQTZCLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBRyxDQUFDO0lBRWpEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQThCO1FBQ3hELE1BQU0sY0FBYyxDQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxDQUNoRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQXlCO1FBQzlDLE1BQU0sY0FBYyxDQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUMzRSxDQUFDO0lBQ0osQ0FBQzt3R0FyQlUsaUJBQWlCOzRHQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXhwb3J0QWxsUGF5bG9hZCwgRXhwb3J0U2VsZWN0ZWRQYXlsb2FkIH0gZnJvbSAnLi4vZW50aXRpZXMvZXhwb3J0LWRhdGEuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBTZXJ2acOnbyBxdWUgZGlzcGFyYSBvcyBzaWduYWxzIGRlIGV4cG9ydGHDp8OjbyBubyBgY3JteC1kYXRhLWV4cG9ydC1iYWNrZW5kYC5cbiAqXG4gKiBPcyBzaWduYWxzIHPDo28gZmlyZS1hbmQtZm9yZ2V0OiBvIGJhY2tlbmQgcHJvY2Vzc2EgZSBnZXJhIG8gYXJxdWl2byBkZSBmb3JtYSBhc3PDrW5jcm9uYS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBFeHBvcnREYXRhU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2lnbmFsc1VybCA9ICcvY3JteC9kYXRhX2V4cG9ydC9zaWduYWxzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgLyoqXG4gICAqIERpc3BhcmEgYGV4cG9ydFNlbGVjdGVkUmVjb3Jkc1NpZ25hbGAg4oCUIGV4cG9ydGEgYXBlbmFzIG9zIElEcyBpbmZvcm1hZG9zLlxuICAgKi9cbiAgYXN5bmMgZXhwb3J0U2VsZWN0ZWRSZWNvcmRzKHBheWxvYWQ6IEV4cG9ydFNlbGVjdGVkUGF5bG9hZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5odHRwLnBvc3Q8dm9pZD4oYCR7dGhpcy5zaWduYWxzVXJsfS9leHBvcnRTZWxlY3RlZFJlY29yZHNTaWduYWxgLCBwYXlsb2FkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGFyYSBgZXhwb3J0QWxsUmVjb3Jkc1NpZ25hbGAg4oCUIGV4cG9ydGEgdG9kb3Mgb3MgcmVnaXN0cm9zIGNvbSBmaWx0cm8uXG4gICAqL1xuICBhc3luYyBleHBvcnRBbGxSZWNvcmRzKHBheWxvYWQ6IEV4cG9ydEFsbFBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuc2lnbmFsc1VybH0vZXhwb3J0QWxsUmVjb3Jkc1NpZ25hbGAsIHBheWxvYWQpXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -106,5 +106,20 @@
106
106
  "crmx.components.chatbot_typing_2": "Analyzing your question...",
107
107
  "crmx.components.chatbot_typing_3": "Gathering information...",
108
108
  "crmx.components.chatbot_typing_4": "Almost there!",
109
- "crmx.components.chatbot_typing_5": "Wrapping up the answer..."
109
+ "crmx.components.chatbot_typing_5": "Wrapping up the answer...",
110
+ "crmx.components.export_title": "Export Data",
111
+ "crmx.components.export_file_format": "File format",
112
+ "crmx.components.export_orientation": "Page orientation",
113
+ "crmx.components.export_sheet_format": "Sheet format",
114
+ "crmx.components.export_scope": "Export scope",
115
+ "crmx.components.export_scope_all": "All records",
116
+ "crmx.components.export_scope_all_desc": "Exports all records with the active filter",
117
+ "crmx.components.export_scope_selected": "Selected records",
118
+ "crmx.components.export_scope_selected_desc": "Exports only the checked items",
119
+ "crmx.components.export_records_selected": "{{count}} record(s) selected",
120
+ "crmx.components.export_columns": "Columns",
121
+ "crmx.components.export_columns_all": "All",
122
+ "crmx.components.export_columns_none": "None",
123
+ "crmx.components.export_columns_summary": "{{selected}} of {{total}} columns selected",
124
+ "crmx.components.export_button": "Export"
110
125
  }
@@ -106,5 +106,20 @@
106
106
  "crmx.components.chatbot_typing_2": "Analizando tu pregunta...",
107
107
  "crmx.components.chatbot_typing_3": "Reuniendo información...",
108
108
  "crmx.components.chatbot_typing_4": "¡Casi listo!",
109
- "crmx.components.chatbot_typing_5": "Finalizando la respuesta..."
109
+ "crmx.components.chatbot_typing_5": "Finalizando la respuesta...",
110
+ "crmx.components.export_title": "Exportar Datos",
111
+ "crmx.components.export_file_format": "Formato de archivo",
112
+ "crmx.components.export_orientation": "Orientación de página",
113
+ "crmx.components.export_sheet_format": "Formato de hoja",
114
+ "crmx.components.export_scope": "Alcance de exportación",
115
+ "crmx.components.export_scope_all": "Todos los registros",
116
+ "crmx.components.export_scope_all_desc": "Exporta todos con el filtro activo",
117
+ "crmx.components.export_scope_selected": "Registros seleccionados",
118
+ "crmx.components.export_scope_selected_desc": "Exporta solo los elementos marcados",
119
+ "crmx.components.export_records_selected": "{{count}} registro(s) seleccionado(s)",
120
+ "crmx.components.export_columns": "Columnas",
121
+ "crmx.components.export_columns_all": "Todas",
122
+ "crmx.components.export_columns_none": "Ninguna",
123
+ "crmx.components.export_columns_summary": "{{selected}} de {{total}} columnas seleccionadas",
124
+ "crmx.components.export_button": "Exportar"
110
125
  }
@@ -106,5 +106,20 @@
106
106
  "crmx.components.chatbot_typing_2": "Analisando sua pergunta...",
107
107
  "crmx.components.chatbot_typing_3": "Reunindo informações...",
108
108
  "crmx.components.chatbot_typing_4": "Quase pronto!",
109
- "crmx.components.chatbot_typing_5": "Finalizando a resposta..."
109
+ "crmx.components.chatbot_typing_5": "Finalizando a resposta...",
110
+ "crmx.components.export_title": "Exportar Dados",
111
+ "crmx.components.export_file_format": "Formato do arquivo",
112
+ "crmx.components.export_orientation": "Orientação da página",
113
+ "crmx.components.export_sheet_format": "Formato da folha",
114
+ "crmx.components.export_scope": "Escopo da exportação",
115
+ "crmx.components.export_scope_all": "Todos os registros",
116
+ "crmx.components.export_scope_all_desc": "Exporta todos com o filtro ativo",
117
+ "crmx.components.export_scope_selected": "Registros selecionados",
118
+ "crmx.components.export_scope_selected_desc": "Exporta apenas os itens marcados",
119
+ "crmx.components.export_records_selected": "{{count}} registro(s) selecionado(s)",
120
+ "crmx.components.export_columns": "Colunas",
121
+ "crmx.components.export_columns_all": "Todas",
122
+ "crmx.components.export_columns_none": "Nenhuma",
123
+ "crmx.components.export_columns_summary": "{{selected}} de {{total}} colunas selecionadas",
124
+ "crmx.components.export_button": "Exportar"
110
125
  }
@@ -15,4 +15,8 @@ export { ScheduleDetailComponent } from './lib/components/schedule/schedule-deta
15
15
  export { ScheduleService } from './lib/components/schedule/services/schedule.service';
16
16
  export { ScheduleTypeService } from './lib/components/schedule/services/schedule-type.service';
17
17
  export { SchedulePriority, ScheduleRecurrence, WeekDay, Month, RepeatWhen, OrdinalWeekDay, ParticipantConfirmation, Status } from './lib/components/schedule/enums/schedule.enums';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLFdBQVc7QUFDWCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFOUcsU0FBUztBQUNULE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBWTVHLFVBQVU7QUFDVixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUc5RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDeEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBSS9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0RBQWdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBzZW5pb3ItZ2VzdGFvLXJlbGFjaW9uYW1lbnRvL2FuZ3VsYXItY29tcG9uZW50c1xuICovXG5cbmV4cG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnLi9saWIvYW5ndWxhci1jb21wb25lbnRzLm1vZHVsZSc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL3N0b3JhZ2Uvc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCB7IEN1cnJlbnRDb2xsYWJvcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY3VycmVudC1jb2xsYWJvcmF0b3IvY3VycmVudC1jb2xsYWJvcmF0b3Iuc2VydmljZSc7XG5cbi8vIENvbmZpZ1xuZXhwb3J0IHsgcHJvdmlkZUFuZ3VsYXJDb21wb25lbnRzVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9saWIvY29uZmlnL3Byb3ZpZGUtYW5ndWxhci1jb21wb25lbnRzLXRyYW5zbGF0aW9ucyc7XG5cbi8vIE1vZGVsc1xuZXhwb3J0IHR5cGUge1xuICBDb2xsYWJvcmF0b3IsXG4gIENvbGxhYm9yYXRvckxlYWRlcixcbiAgQ29sbGFib3JhdG9yQnJhbmNoLFxuICBCcmFuY2gsXG4gIENvbXBhbnksXG4gIEpvYlRpdGxlXG59IGZyb20gJy4vbGliL3NlcnZpY2VzL2N1cnJlbnQtY29sbGFib3JhdG9yL21vZGVscy9jb2xsYWJvcmF0b3IubW9kZWwnO1xuXG4vLyBDaGF0Ym90XG5leHBvcnQgeyBDaGF0Ym90Q29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGF0Ym90L2NoYXRib3QuY29tcG9uZW50JztcbmV4cG9ydCB0eXBlIHsgQ2hhdGJvdE1lc3NhZ2UgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXRib3QvY2hhdGJvdC5jb21wb25lbnQnO1xuXG4vLyBTY2hlZHVsZVxuZXhwb3J0IHsgU2NoZWR1bGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9zY2hlZHVsZS1mb3JtL3NjaGVkdWxlLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVkdWxlRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9zY2hlZHVsZS1kZXRhaWwvc2NoZWR1bGUtZGV0YWlsLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTY2hlZHVsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL3NlcnZpY2VzL3NjaGVkdWxlLnNlcnZpY2UnO1xuZXhwb3J0IHsgU2NoZWR1bGVUeXBlU2VydmljZSB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2NoZWR1bGUvc2VydmljZXMvc2NoZWR1bGUtdHlwZS5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHsgU2NoZWR1bGUsIFNjaGVkdWxlUmVjdXJyZW5jZUl0ZW0sIFJlY3VycmVuY2VEYXRlc1JlY29yZCwgU2NoZWR1bGVQYXJ0aWNpcGFudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2NoZWR1bGUvZW50aXRpZXMvc2NoZWR1bGUuaW50ZXJmYWNlJztcbmV4cG9ydCB0eXBlIHsgU2NoZWR1bGVUeXBlIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9lbnRpdGllcy9zY2hlZHVsZS10eXBlLmludGVyZmFjZSc7XG5leHBvcnQgdHlwZSB7IFBhcnRpY2lwYW50TG9va3VwLCBQYXJ0aWNpcGFudE9yaWdpbiwgU2NoZWR1bGVTdW1tYXJ5QnlEYXRlIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9lbnRpdGllcy9wYXJ0aWNpcGFudC1sb29rdXAuaW50ZXJmYWNlJztcbmV4cG9ydCB7IFNjaGVkdWxlUHJpb3JpdHksIFNjaGVkdWxlUmVjdXJyZW5jZSwgV2Vla0RheSwgTW9udGgsIFJlcGVhdFdoZW4sIE9yZGluYWxXZWVrRGF5LCBQYXJ0aWNpcGFudENvbmZpcm1hdGlvbiwgU3RhdHVzIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9lbnVtcy9zY2hlZHVsZS5lbnVtcyc7XG4iXX0=
18
+ // Export Data
19
+ export { ExportDataComponent } from './lib/components/export-data/export-data.component';
20
+ export { ExportDataService } from './lib/components/export-data/services/export-data.service';
21
+ export { ExportFileType, ExportOrientation, ExportFileFormat, ExportColumnType } from './lib/components/export-data/enums/export-data.enums';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLFdBQVc7QUFDWCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFFOUcsU0FBUztBQUNULE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBWTVHLFVBQVU7QUFDVixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUc5RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDeEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDOUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBSS9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFbkwsY0FBYztBQUNkLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQHNlbmlvci1nZXN0YW8tcmVsYWNpb25hbWVudG8vYW5ndWxhci1jb21wb25lbnRzXG4gKi9cblxuZXhwb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuL2xpYi9hbmd1bGFyLWNvbXBvbmVudHMubW9kdWxlJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvc3RvcmFnZS9zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ3VycmVudENvbGxhYm9yYXRvclNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jdXJyZW50LWNvbGxhYm9yYXRvci9jdXJyZW50LWNvbGxhYm9yYXRvci5zZXJ2aWNlJztcblxuLy8gQ29uZmlnXG5leHBvcnQgeyBwcm92aWRlQW5ndWxhckNvbXBvbmVudHNUcmFuc2xhdGlvbnMgfSBmcm9tICcuL2xpYi9jb25maWcvcHJvdmlkZS1hbmd1bGFyLWNvbXBvbmVudHMtdHJhbnNsYXRpb25zJztcblxuLy8gTW9kZWxzXG5leHBvcnQgdHlwZSB7XG4gIENvbGxhYm9yYXRvcixcbiAgQ29sbGFib3JhdG9yTGVhZGVyLFxuICBDb2xsYWJvcmF0b3JCcmFuY2gsXG4gIEJyYW5jaCxcbiAgQ29tcGFueSxcbiAgSm9iVGl0bGVcbn0gZnJvbSAnLi9saWIvc2VydmljZXMvY3VycmVudC1jb2xsYWJvcmF0b3IvbW9kZWxzL2NvbGxhYm9yYXRvci5tb2RlbCc7XG5cbi8vIENoYXRib3RcbmV4cG9ydCB7IENoYXRib3RDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2NoYXRib3QvY2hhdGJvdC5jb21wb25lbnQnO1xuZXhwb3J0IHR5cGUgeyBDaGF0Ym90TWVzc2FnZSB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hhdGJvdC9jaGF0Ym90LmNvbXBvbmVudCc7XG5cbi8vIFNjaGVkdWxlXG5leHBvcnQgeyBTY2hlZHVsZUZvcm1Db21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL3NjaGVkdWxlLWZvcm0vc2NoZWR1bGUtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2NoZWR1bGVEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL3NjaGVkdWxlLWRldGFpbC9zY2hlZHVsZS1kZXRhaWwuY29tcG9uZW50JztcbmV4cG9ydCB7IFNjaGVkdWxlU2VydmljZSB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2NoZWR1bGUvc2VydmljZXMvc2NoZWR1bGUuc2VydmljZSc7XG5leHBvcnQgeyBTY2hlZHVsZVR5cGVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9zZXJ2aWNlcy9zY2hlZHVsZS10eXBlLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUgeyBTY2hlZHVsZSwgU2NoZWR1bGVSZWN1cnJlbmNlSXRlbSwgUmVjdXJyZW5jZURhdGVzUmVjb3JkLCBTY2hlZHVsZVBhcnRpY2lwYW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zY2hlZHVsZS9lbnRpdGllcy9zY2hlZHVsZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHR5cGUgeyBTY2hlZHVsZVR5cGUgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL2VudGl0aWVzL3NjaGVkdWxlLXR5cGUuaW50ZXJmYWNlJztcbmV4cG9ydCB0eXBlIHsgUGFydGljaXBhbnRMb29rdXAsIFBhcnRpY2lwYW50T3JpZ2luLCBTY2hlZHVsZVN1bW1hcnlCeURhdGUgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL2VudGl0aWVzL3BhcnRpY2lwYW50LWxvb2t1cC5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgU2NoZWR1bGVQcmlvcml0eSwgU2NoZWR1bGVSZWN1cnJlbmNlLCBXZWVrRGF5LCBNb250aCwgUmVwZWF0V2hlbiwgT3JkaW5hbFdlZWtEYXksIFBhcnRpY2lwYW50Q29uZmlybWF0aW9uLCBTdGF0dXMgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjaGVkdWxlL2VudW1zL3NjaGVkdWxlLmVudW1zJztcblxuLy8gRXhwb3J0IERhdGFcbmV4cG9ydCB7IEV4cG9ydERhdGFDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kYXRhL2V4cG9ydC1kYXRhLmNvbXBvbmVudCc7XG5leHBvcnQgeyBFeHBvcnREYXRhU2VydmljZSB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvZXhwb3J0LWRhdGEvc2VydmljZXMvZXhwb3J0LWRhdGEuc2VydmljZSc7XG5leHBvcnQgeyBFeHBvcnRGaWxlVHlwZSwgRXhwb3J0T3JpZW50YXRpb24sIEV4cG9ydEZpbGVGb3JtYXQsIEV4cG9ydENvbHVtblR5cGUgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kYXRhL2VudW1zL2V4cG9ydC1kYXRhLmVudW1zJztcbmV4cG9ydCB0eXBlIHsgRXhwb3J0Q29sdW1uLCBFeHBvcnRDb2x1bW5JbnB1dCwgRXhwb3J0RGF0YXNvdXJjZSwgRXhwb3J0RGF0YUNvbmZpZywgRXhwb3J0U2VsZWN0ZWRQYXlsb2FkLCBFeHBvcnRBbGxQYXlsb2FkIH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9leHBvcnQtZGF0YS9lbnRpdGllcy9leHBvcnQtZGF0YS5pbnRlcmZhY2UnO1xuIl19