keevo-components 2.0.88 → 2.0.90
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.
- package/esm2022/lib/api/components/table/table.config.mjs +1 -1
- package/esm2022/lib/api/services/pdf.service.mjs +48 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.mjs +11 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.mjs +40 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/config/kv-editor.config.mjs +108 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +148 -97
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.mjs +7 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.mjs +135 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.mjs +169 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.mjs +78 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.mjs +95 -0
- package/esm2022/lib/components/kv-inputs/kv-editor/types/kv-editor.types.mjs +2 -0
- package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +28 -4
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +3 -3
- package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +3 -3
- package/esm2022/lib/components/kv-table/kv-table.component.mjs +3 -3
- package/esm2022/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.mjs +15 -0
- package/esm2022/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.mjs +18 -0
- package/esm2022/lib/components/kv-table-viewer/kv-table-viewer.component.mjs +166 -0
- package/esm2022/lib/components/kv-tags/kv-tags.component.mjs +2 -2
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/keevo-components.mjs +1196 -298
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/api/base-components/base-component-dropdown.d.ts +1 -1
- package/lib/api/components/table/table.config.d.ts +2 -0
- package/lib/api/services/pdf.service.d.ts +7 -0
- package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +1 -1
- package/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.d.ts +5 -0
- package/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.d.ts +14 -0
- package/lib/components/kv-inputs/kv-editor/config/kv-editor.config.d.ts +55 -0
- package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +39 -13
- package/lib/components/kv-inputs/kv-editor/kv-editor.d.ts +6 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.d.ts +41 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.d.ts +41 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.d.ts +28 -0
- package/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.d.ts +45 -0
- package/lib/components/kv-inputs/kv-editor/types/kv-editor.types.d.ts +32 -0
- package/lib/components/kv-inputs/kv-inputs.module.d.ts +7 -1
- package/lib/components/kv-stepper/kv-stepper.component.d.ts +1 -1
- package/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.d.ts +8 -0
- package/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.d.ts +7 -0
- package/lib/components/kv-table-viewer/kv-table-viewer.component.d.ts +64 -0
- package/lib/components/kv-tag/kv-tag.component.d.ts +1 -1
- package/package.json +6 -4
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import Quill from 'quill';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class KvEditorMentionService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.filteredVariables = signal([]);
|
|
7
|
+
this.mentionStartIndex = null;
|
|
8
|
+
this.mentionEndIndex = null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Processa o sistema de menções durante a digitação
|
|
12
|
+
*/
|
|
13
|
+
handleMention(quill, variaveis) {
|
|
14
|
+
const range = quill.getSelection();
|
|
15
|
+
if (!range) {
|
|
16
|
+
this.closeMention();
|
|
17
|
+
return { shouldShowPanel: false, filteredVariables: [] };
|
|
18
|
+
}
|
|
19
|
+
const text = quill.getText(0, range.index);
|
|
20
|
+
const lastHashIndex = text.lastIndexOf('#');
|
|
21
|
+
if (lastHashIndex !== -1 && !/\s/.test(text.substring(lastHashIndex + 1))) {
|
|
22
|
+
this.mentionStartIndex = lastHashIndex;
|
|
23
|
+
this.mentionEndIndex = range.index;
|
|
24
|
+
const searchTerm = text.substring(lastHashIndex + 1).toLowerCase();
|
|
25
|
+
const filtered = variaveis.filter(v => v.descricao.toLowerCase().includes(searchTerm));
|
|
26
|
+
this.filteredVariables.set(filtered);
|
|
27
|
+
if (filtered.length > 0) {
|
|
28
|
+
const bounds = this.calculateMentionBounds(quill, lastHashIndex);
|
|
29
|
+
return {
|
|
30
|
+
shouldShowPanel: true,
|
|
31
|
+
filteredVariables: filtered,
|
|
32
|
+
mentionBounds: bounds
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
this.closeMention();
|
|
37
|
+
return { shouldShowPanel: false, filteredVariables: [] };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Calcula a posição onde o painel de menções deve aparecer
|
|
41
|
+
*/
|
|
42
|
+
calculateMentionBounds(quill, lastHashIndex) {
|
|
43
|
+
const editorEl = document.querySelector('#kv-editor');
|
|
44
|
+
if (!editorEl)
|
|
45
|
+
return { top: 0, left: 0 };
|
|
46
|
+
const editorRect = editorEl.getBoundingClientRect();
|
|
47
|
+
// Verifica se o '#' está no início de uma linha
|
|
48
|
+
const charBefore = lastHashIndex > 0 ? quill.getText(lastHashIndex - 1, 1) : null;
|
|
49
|
+
const isAtStartOfLine = (lastHashIndex === 0 || charBefore === '\n');
|
|
50
|
+
if (isAtStartOfLine) {
|
|
51
|
+
// Posiciona no canto superior esquerdo do editor
|
|
52
|
+
return {
|
|
53
|
+
top: editorRect.top + 5,
|
|
54
|
+
left: editorRect.left + 5
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Usa getBounds() para posição precisa
|
|
59
|
+
const cursorBounds = quill.getBounds(lastHashIndex);
|
|
60
|
+
if (cursorBounds) {
|
|
61
|
+
return {
|
|
62
|
+
top: editorRect.top + cursorBounds.bottom,
|
|
63
|
+
left: editorRect.left + cursorBounds.left
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return {
|
|
68
|
+
top: editorRect.top + 5,
|
|
69
|
+
left: editorRect.left + 5
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Insere uma variável selecionada no editor
|
|
76
|
+
*/
|
|
77
|
+
insertVariable(quill, variable) {
|
|
78
|
+
const startIndex = this.mentionStartIndex;
|
|
79
|
+
const endIndex = this.mentionEndIndex;
|
|
80
|
+
if (startIndex === null || endIndex === null)
|
|
81
|
+
return;
|
|
82
|
+
const lengthToDelete = endIndex - startIndex;
|
|
83
|
+
const variableHtml = `<span
|
|
84
|
+
style="background-color: #e6f7ff; color: #0066cc; border-radius: 3px; padding: 2px 4px; font-weight: 500;"
|
|
85
|
+
class="variavel-inserida"
|
|
86
|
+
title="${variable.descricao}">${variable.descricao}</span> `;
|
|
87
|
+
const insertedTextLength = variable.descricao.length + 1;
|
|
88
|
+
const Delta = Quill.import('delta');
|
|
89
|
+
const insertionDelta = quill.clipboard.convert({ html: variableHtml });
|
|
90
|
+
quill.updateContents(new Delta()
|
|
91
|
+
.retain(startIndex)
|
|
92
|
+
.delete(lengthToDelete)
|
|
93
|
+
.concat(insertionDelta), 'user');
|
|
94
|
+
const newCursorPosition = startIndex + insertedTextLength;
|
|
95
|
+
setTimeout(() => {
|
|
96
|
+
quill.setSelection(newCursorPosition, 0, 'user');
|
|
97
|
+
quill.focus();
|
|
98
|
+
}, 0);
|
|
99
|
+
this.closeMention();
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Fecha o sistema de menções
|
|
103
|
+
*/
|
|
104
|
+
closeMention() {
|
|
105
|
+
this.mentionStartIndex = null;
|
|
106
|
+
this.mentionEndIndex = null;
|
|
107
|
+
this.filteredVariables.set([]);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Obtém as variáveis filtradas
|
|
111
|
+
*/
|
|
112
|
+
getFilteredVariables() {
|
|
113
|
+
return this.filteredVariables();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Cria uma regex especial para busca em texto com HTML
|
|
117
|
+
*/
|
|
118
|
+
createInterleavedRegex(text) {
|
|
119
|
+
const specialChars = /[-\/\\^$*+?.()|[\]{}]/g;
|
|
120
|
+
const pattern = text
|
|
121
|
+
.split('')
|
|
122
|
+
.map(char => char.replace(specialChars, '\\$&'))
|
|
123
|
+
.join('(<[^>]*>)*');
|
|
124
|
+
return new RegExp(pattern, 'gi');
|
|
125
|
+
}
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorMentionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
127
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorMentionService, providedIn: 'root' }); }
|
|
128
|
+
}
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorMentionService, decorators: [{
|
|
130
|
+
type: Injectable,
|
|
131
|
+
args: [{
|
|
132
|
+
providedIn: 'root'
|
|
133
|
+
}]
|
|
134
|
+
}] });
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Ivc2VydmljZXMva3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFLVSxzQkFBaUIsR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO0tBZ0ovQztJQTlJQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxLQUFZLEVBQUUsU0FBNkI7UUFLdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLENBQUMs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SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsSUFBWTtRQUNqQyxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJO2FBQ2pCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEIsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0FuSlUsc0JBQXNCO2tIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xyXG5pbXBvcnQgeyBLdkVkaXRvclZhcmlhdmVsIH0gZnJvbSAnLi4vdHlwZXMva3YtZWRpdG9yLnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RWRpdG9yTWVudGlvblNlcnZpY2Uge1xyXG4gIFxyXG4gIHByaXZhdGUgZmlsdGVyZWRWYXJpYWJsZXMgPSBzaWduYWw8S3ZFZGl0b3JWYXJpYXZlbFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBtZW50aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBtZW50aW9uRW5kSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzYSBvIHNpc3RlbWEgZGUgbWVuw6fDtWVzIGR1cmFudGUgYSBkaWdpdGHDp8Ojb1xyXG4gICAqL1xyXG4gIGhhbmRsZU1lbnRpb24ocXVpbGw6IFF1aWxsLCB2YXJpYXZlaXM6IEt2RWRpdG9yVmFyaWF2ZWxbXSk6IHtcclxuICAgIHNob3VsZFNob3dQYW5lbDogYm9vbGVhbjtcclxuICAgIGZpbHRlcmVkVmFyaWFibGVzOiBLdkVkaXRvclZhcmlhdmVsW107XHJcbiAgICBtZW50aW9uQm91bmRzPzogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH07XHJcbiAgfSB7XHJcbiAgICBjb25zdCByYW5nZSA9IHF1aWxsLmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFyYW5nZSkge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudGlvbigpO1xyXG4gICAgICByZXR1cm4geyBzaG91bGRTaG93UGFuZWw6IGZhbHNlLCBmaWx0ZXJlZFZhcmlhYmxlczogW10gfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0ZXh0ID0gcXVpbGwuZ2V0VGV4dCgwLCByYW5nZS5pbmRleCk7XHJcbiAgICBjb25zdCBsYXN0SGFzaEluZGV4ID0gdGV4dC5sYXN0SW5kZXhPZignIycpO1xyXG5cclxuICAgIGlmIChsYXN0SGFzaEluZGV4ICE9PSAtMSAmJiAhL1xccy8udGVzdCh0ZXh0LnN1YnN0cmluZyhsYXN0SGFzaEluZGV4ICsgMSkpKSB7XHJcbiAgICAgIHRoaXMubWVudGlvblN0YXJ0SW5kZXggPSBsYXN0SGFzaEluZGV4O1xyXG4gICAgICB0aGlzLm1lbnRpb25FbmRJbmRleCA9IHJhbmdlLmluZGV4O1xyXG5cclxuICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IHRleHQuc3Vic3RyaW5nKGxhc3RIYXNoSW5kZXggKyAxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHZhcmlhdmVpcy5maWx0ZXIodiA9PiBcclxuICAgICAgICB2LmRlc2NyaWNhby50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFyaWFibGVzLnNldChmaWx0ZXJlZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuY2FsY3VsYXRlTWVudGlvbkJvdW5kcyhxdWlsbCwgbGFzdEhhc2hJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHNob3VsZFNob3dQYW5lbDogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcmVkVmFyaWFibGVzOiBmaWx0ZXJlZCxcclxuICAgICAgICAgIG1lbnRpb25Cb3VuZHM6IGJvdW5kc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlTWVudGlvbigpO1xyXG4gICAgcmV0dXJuIHsgc2hvdWxkU2hvd1BhbmVsOiBmYWxzZSwgZmlsdGVyZWRWYXJpYWJsZXM6IFtdIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhIGEgcG9zacOnw6NvIG9uZGUgbyBwYWluZWwgZGUgbWVuw6fDtWVzIGRldmUgYXBhcmVjZXJcclxuICAgKi9cclxuICBwcml2YXRlIGNhbGN1bGF0ZU1lbnRpb25Cb3VuZHMocXVpbGw6IFF1aWxsLCBsYXN0SGFzaEluZGV4OiBudW1iZXIpOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCBlZGl0b3JFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNrdi1lZGl0b3InKTtcclxuICAgIGlmICghZWRpdG9yRWwpIHJldHVybiB7IHRvcDogMCwgbGVmdDogMCB9O1xyXG5cclxuICAgIGNvbnN0IGVkaXRvclJlY3QgPSBlZGl0b3JFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIFxyXG4gICAgLy8gVmVyaWZpY2Egc2UgbyAnIycgZXN0w6Egbm8gaW7DrWNpbyBkZSB1bWEgbGluaGFcclxuICAgIGNvbnN0IGNoYXJCZWZvcmUgPSBsYXN0SGFzaEluZGV4ID4gMCA/IHF1aWxsLmdldFRleHQobGFzdEhhc2hJbmRleCAtIDEsIDEpIDogbnVsbDtcclxuICAgIGNvbnN0IGlzQXRTdGFydE9mTGluZSA9IChsYXN0SGFzaEluZGV4ID09PSAwIHx8IGNoYXJCZWZvcmUgPT09ICdcXG4nKTtcclxuXHJcbiAgICBpZiAoaXNBdFN0YXJ0T2ZMaW5lKSB7XHJcbiAgICAgIC8vIFBvc2ljaW9uYSBubyBjYW50byBzdXBlcmlvciBlc3F1ZXJkbyBkbyBlZGl0b3JcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0b3A6IGVkaXRvclJlY3QudG9wICsgNSxcclxuICAgICAgICBsZWZ0OiBlZGl0b3JSZWN0LmxlZnQgKyA1XHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBVc2EgZ2V0Qm91bmRzKCkgcGFyYSBwb3Npw6fDo28gcHJlY2lzYVxyXG4gICAgICBjb25zdCBjdXJzb3JCb3VuZHMgPSBxdWlsbC5nZXRCb3VuZHMobGFzdEhhc2hJbmRleCk7XHJcbiAgICAgIGlmIChjdXJzb3JCb3VuZHMpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdG9wOiBlZGl0b3JSZWN0LnRvcCArIGN1cnNvckJvdW5kcy5ib3R0b20sXHJcbiAgICAgICAgICBsZWZ0OiBlZGl0b3JSZWN0LmxlZnQgKyBjdXJzb3JCb3VuZHMubGVmdFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHRvcDogZWRpdG9yUmVjdC50b3AgKyA1LFxyXG4gICAgICAgICAgbGVmdDogZWRpdG9yUmVjdC5sZWZ0ICsgNVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VyZSB1bWEgdmFyacOhdmVsIHNlbGVjaW9uYWRhIG5vIGVkaXRvclxyXG4gICAqL1xyXG4gIGluc2VydFZhcmlhYmxlKHF1aWxsOiBRdWlsbCwgdmFyaWFibGU6IEt2RWRpdG9yVmFyaWF2ZWwpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLm1lbnRpb25TdGFydEluZGV4O1xyXG4gICAgY29uc3QgZW5kSW5kZXggPSB0aGlzLm1lbnRpb25FbmRJbmRleDtcclxuXHJcbiAgICBpZiAoc3RhcnRJbmRleCA9PT0gbnVsbCB8fCBlbmRJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGxlbmd0aFRvRGVsZXRlID0gZW5kSW5kZXggLSBzdGFydEluZGV4O1xyXG4gICAgY29uc3QgdmFyaWFibGVIdG1sID0gYDxzcGFuIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2U2ZjdmZjsgY29sb3I6ICMwMDY2Y2M7IGJvcmRlci1yYWRpdXM6IDNweDsgcGFkZGluZzogMnB4IDRweDsgZm9udC13ZWlnaHQ6IDUwMDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFyaWF2ZWwtaW5zZXJpZGFcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIiR7dmFyaWFibGUuZGVzY3JpY2FvfVwiPiR7dmFyaWFibGUuZGVzY3JpY2FvfTwvc3Bhbj4mbmJzcDtgO1xyXG4gICAgXHJcbiAgICBjb25zdCBpbnNlcnRlZFRleHRMZW5ndGggPSB2YXJpYWJsZS5kZXNjcmljYW8ubGVuZ3RoICsgMTtcclxuICAgIGNvbnN0IERlbHRhID0gUXVpbGwuaW1wb3J0KCdkZWx0YScpO1xyXG4gICAgY29uc3QgaW5zZXJ0aW9uRGVsdGEgPSBxdWlsbC5jbGlwYm9hcmQuY29udmVydCh7IGh0bWw6IHZhcmlhYmxlSHRtbCB9KTtcclxuXHJcbiAgICBxdWlsbC51cGRhdGVDb250ZW50cyhcclxuICAgICAgbmV3IERlbHRhKClcclxuICAgICAgICAucmV0YWluKHN0YXJ0SW5kZXgpXHJcbiAgICAgICAgLmRlbGV0ZShsZW5ndGhUb0RlbGV0ZSlcclxuICAgICAgICAuY29uY2F0KGluc2VydGlvbkRlbHRhKSxcclxuICAgICAgJ3VzZXInXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IG5ld0N1cnNvclBvc2l0aW9uID0gc3RhcnRJbmRleCArIGluc2VydGVkVGV4dExlbmd0aDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5zZXRTZWxlY3Rpb24obmV3Q3Vyc29yUG9zaXRpb24sIDAsICd1c2VyJyk7XHJcbiAgICAgIHF1aWxsLmZvY3VzKCk7XHJcbiAgICB9LCAwKTtcclxuXHJcbiAgICB0aGlzLmNsb3NlTWVudGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmVjaGEgbyBzaXN0ZW1hIGRlIG1lbsOnw7Vlc1xyXG4gICAqL1xyXG4gIGNsb3NlTWVudGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudGlvblN0YXJ0SW5kZXggPSBudWxsO1xyXG4gICAgdGhpcy5tZW50aW9uRW5kSW5kZXggPSBudWxsO1xyXG4gICAgdGhpcy5maWx0ZXJlZFZhcmlhYmxlcy5zZXQoW10pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0w6ltIGFzIHZhcmnDoXZlaXMgZmlsdHJhZGFzXHJcbiAgICovXHJcbiAgZ2V0RmlsdGVyZWRWYXJpYWJsZXMoKTogS3ZFZGl0b3JWYXJpYXZlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkVmFyaWFibGVzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmlhIHVtYSByZWdleCBlc3BlY2lhbCBwYXJhIGJ1c2NhIGVtIHRleHRvIGNvbSBIVE1MXHJcbiAgICovXHJcbiAgY3JlYXRlSW50ZXJsZWF2ZWRSZWdleCh0ZXh0OiBzdHJpbmcpOiBSZWdFeHAge1xyXG4gICAgY29uc3Qgc3BlY2lhbENoYXJzID0gL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZztcclxuICAgIGNvbnN0IHBhdHRlcm4gPSB0ZXh0XHJcbiAgICAgIC5zcGxpdCgnJylcclxuICAgICAgLm1hcChjaGFyID0+IGNoYXIucmVwbGFjZShzcGVjaWFsQ2hhcnMsICdcXFxcJCYnKSlcclxuICAgICAgLmpvaW4oJyg8W14+XSo+KSonKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuLCAnZ2knKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { Injectable, inject, signal } from '@angular/core';
|
|
2
|
+
import { DialogService } from 'primeng/dynamicdialog';
|
|
3
|
+
import { PdfService } from '../../../../api/services/pdf.service';
|
|
4
|
+
import { KvReportModalComponent } from '../components/kv-report-modal/kv-report-modal.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class KvEditorPdfService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.pdfService = inject(PdfService);
|
|
9
|
+
this.dialogService = inject(DialogService);
|
|
10
|
+
this.isLoadingPdf = signal(false);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Obtém o estado de carregamento do PDF
|
|
14
|
+
*/
|
|
15
|
+
getIsLoadingPdf() {
|
|
16
|
+
return this.isLoadingPdf();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Define o estado de carregamento do PDF
|
|
20
|
+
*/
|
|
21
|
+
setIsLoadingPdf(loading) {
|
|
22
|
+
this.isLoadingPdf.set(loading);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Gera e abre o modal de relatório
|
|
26
|
+
*/
|
|
27
|
+
async openRelatorio(htmlContent, relatorio, tipoVisualizacao) {
|
|
28
|
+
if (this.isLoadingPdf())
|
|
29
|
+
return;
|
|
30
|
+
this.setIsLoadingPdf(true);
|
|
31
|
+
try {
|
|
32
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
33
|
+
let htmlComValoresReais = htmlContent;
|
|
34
|
+
if (relatorio) {
|
|
35
|
+
htmlComValoresReais = this.processarHtmlParaPdf(htmlContent, relatorio, tipoVisualizacao);
|
|
36
|
+
}
|
|
37
|
+
const htmlFinalParaPdf = this.adicionarEstilosParaPdf(htmlComValoresReais);
|
|
38
|
+
const pdfBlob = await this.gerarPdfBlob(htmlFinalParaPdf);
|
|
39
|
+
this.abrirModalRelatorio(pdfBlob);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error('Falha ao gerar o Blob do PDF:', error);
|
|
43
|
+
alert('Ocorreu um erro ao gerar o relatório.');
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
this.setIsLoadingPdf(false);
|
|
47
|
+
setTimeout(() => window.dispatchEvent(new Event('resize')), 100);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Processa o HTML substituindo variáveis e limpando formatação
|
|
52
|
+
*/
|
|
53
|
+
processarHtmlParaPdf(htmlContent, relatorio, tipoVisualizacao) {
|
|
54
|
+
let htmlProcessado = htmlContent;
|
|
55
|
+
// Substitui valores das variáveis
|
|
56
|
+
relatorio.variaveis.forEach(variavel => {
|
|
57
|
+
if (typeof variavel.descricao !== 'string' || variavel.descricao.trim() === '') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const specialRegex = this.createInterleavedRegex(variavel.descricao);
|
|
61
|
+
const valorSubstituicao = tipoVisualizacao === 'descricao' ? variavel.descricao : variavel.value;
|
|
62
|
+
htmlProcessado = htmlProcessado.replace(specialRegex, valorSubstituicao);
|
|
63
|
+
});
|
|
64
|
+
// Remove propriedades de estilo padrão
|
|
65
|
+
htmlProcessado = htmlProcessado.replace(/background-color:\s*rgb\(\s*230,\s*247,\s*255\s*\);?/gi, '');
|
|
66
|
+
htmlProcessado = htmlProcessado.replace(/color:\s*rgb\(\s*0,\s*102,\s*204\s*\);?/gi, '');
|
|
67
|
+
htmlProcessado = htmlProcessado.replace(/;(\s*;)+/g, ';');
|
|
68
|
+
htmlProcessado = htmlProcessado.replace(/\sstyle="[\s;]*"/gi, '');
|
|
69
|
+
// Remove parágrafos vazios e quebras de linha duplas
|
|
70
|
+
htmlProcessado = htmlProcessado.replace(/<p><br><\/p>/g, '');
|
|
71
|
+
htmlProcessado = htmlProcessado.replace(/(<br>\s*){2,}/g, '<br>');
|
|
72
|
+
return htmlProcessado;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Adiciona estilos CSS específicos para PDF
|
|
76
|
+
*/
|
|
77
|
+
adicionarEstilosParaPdf(htmlContent) {
|
|
78
|
+
const estilosParaPdf = `
|
|
79
|
+
<style>
|
|
80
|
+
#temp-pdf-render-area {
|
|
81
|
+
font-family: 'Sans Serif', Arial, sans-serif;
|
|
82
|
+
font-size: 11pt;
|
|
83
|
+
line-height: 1.3;
|
|
84
|
+
text-align: justify;
|
|
85
|
+
}
|
|
86
|
+
#temp-pdf-render-area p {
|
|
87
|
+
min-height: 1.3em;
|
|
88
|
+
margin: 0;
|
|
89
|
+
padding: 0;
|
|
90
|
+
}
|
|
91
|
+
#temp-pdf-render-area h1, #temp-pdf-render-area h2, #temp-pdf-render-area h3,
|
|
92
|
+
#temp-pdf-render-area h4, #temp-pdf-render-area h5, #temp-pdf-render-area h6 {
|
|
93
|
+
page-break-after: avoid;
|
|
94
|
+
}
|
|
95
|
+
#temp-pdf-render-area [style*="text-align: center"] {
|
|
96
|
+
text-align: center !important;
|
|
97
|
+
}
|
|
98
|
+
#temp-pdf-render-area p, #temp-pdf-render-area h1, #temp-pdf-render-area h2,
|
|
99
|
+
#temp-pdf-render-area h3, #temp-pdf-render-area h4, #temp-pdf-render-area h5,
|
|
100
|
+
#temp-pdf-render-area h6, #temp-pdf-render-area blockquote, #temp-pdf-render-area ul,
|
|
101
|
+
#temp-pdf-render-area ol, #temp-pdf-render-area li, #temp-pdf-render-area table,
|
|
102
|
+
#temp-pdf-render-area tr, #temp-pdf-render-area img {
|
|
103
|
+
page-break-inside: avoid;
|
|
104
|
+
}
|
|
105
|
+
</style>
|
|
106
|
+
`;
|
|
107
|
+
return estilosParaPdf + htmlContent;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Gera o blob do PDF
|
|
111
|
+
*/
|
|
112
|
+
async gerarPdfBlob(htmlContent) {
|
|
113
|
+
const renderContainer = document.createElement('div');
|
|
114
|
+
renderContainer.id = 'temp-pdf-render-area';
|
|
115
|
+
renderContainer.style.position = 'absolute';
|
|
116
|
+
renderContainer.style.left = '-9999px';
|
|
117
|
+
renderContainer.style.top = '0';
|
|
118
|
+
renderContainer.style.backgroundColor = 'white';
|
|
119
|
+
renderContainer.style.padding = '12mm';
|
|
120
|
+
renderContainer.style.width = '210mm';
|
|
121
|
+
renderContainer.style.fontSize = '15px';
|
|
122
|
+
renderContainer.innerHTML = htmlContent;
|
|
123
|
+
document.body.appendChild(renderContainer);
|
|
124
|
+
try {
|
|
125
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
126
|
+
return await this.pdfService.gerarPdfBlobPorElementoId('temp-pdf-render-area');
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
if (document.body.contains(renderContainer)) {
|
|
130
|
+
document.body.removeChild(renderContainer);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Abre o modal com o PDF gerado
|
|
136
|
+
*/
|
|
137
|
+
abrirModalRelatorio(pdfBlob) {
|
|
138
|
+
this.dialogService.open(KvReportModalComponent, {
|
|
139
|
+
header: 'Gerar Relatório',
|
|
140
|
+
width: '60%',
|
|
141
|
+
height: '90%',
|
|
142
|
+
modal: true,
|
|
143
|
+
closable: true,
|
|
144
|
+
data: {
|
|
145
|
+
pdfBlob: pdfBlob
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Cria uma regex especial para busca em texto com HTML
|
|
151
|
+
*/
|
|
152
|
+
createInterleavedRegex(text) {
|
|
153
|
+
const specialChars = /[-\/\\^$*+?.()|[\]{}]/g;
|
|
154
|
+
const pattern = text
|
|
155
|
+
.split('')
|
|
156
|
+
.map(char => char.replace(specialChars, '\\$&'))
|
|
157
|
+
.join('(<[^>]*>)*');
|
|
158
|
+
return new RegExp(pattern, 'gi');
|
|
159
|
+
}
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorPdfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorPdfService, providedIn: 'root' }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorPdfService, decorators: [{
|
|
164
|
+
type: Injectable,
|
|
165
|
+
args: [{
|
|
166
|
+
providedIn: 'root'
|
|
167
|
+
}]
|
|
168
|
+
}] });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLXBkZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWVkaXRvci9zZXJ2aWNlcy9rdi1lZGl0b3ItcGRmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seURBQXlELENBQUM7O0FBS2pHLE1BQU0sT0FBTyxrQkFBa0I7SUFIL0I7UUFLVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0tBaUwvQztJQS9LQzs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsT0FBZ0I7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FDakIsV0FBbUIsRUFDbkIsU0FBbUMsRUFDbkMsZ0JBQXVDO1FBRXZDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUFFLE9BQU87UUFFaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLENB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LENBQUMsT0FBYTtRQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM5QyxNQUFNLEVBQUUsaUJBQWlCO1lBQ3pCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLEtBQUs7WUFDYixLQUFLLEVBQUUsSUFBSTtZQUNYLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsSUFBWTtRQUN6QyxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJO2FBQ2pCLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDVCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEIsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0FwTFUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5pbXBvcnQgeyBQZGZTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBpL3NlcnZpY2VzL3BkZi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS3ZFZGl0b3JSZWxhdG9yaW8sIEt2RWRpdG9yVmFyaWF2ZWwgfSBmcm9tICcuLi90eXBlcy9rdi1lZGl0b3IudHlwZXMnO1xyXG5pbXBvcnQgeyBLdlJlcG9ydE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9rdi1yZXBvcnQtbW9kYWwva3YtcmVwb3J0LW1vZGFsLmNvbXBvbmVudCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkVkaXRvclBkZlNlcnZpY2Uge1xyXG4gIFxyXG4gIHByaXZhdGUgcGRmU2VydmljZSA9IGluamVjdChQZGZTZXJ2aWNlKTtcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBpc0xvYWRpbmdQZGYgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBPYnTDqW0gbyBlc3RhZG8gZGUgY2FycmVnYW1lbnRvIGRvIFBERlxyXG4gICAqL1xyXG4gIGdldElzTG9hZGluZ1BkZigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzTG9hZGluZ1BkZigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVmaW5lIG8gZXN0YWRvIGRlIGNhcnJlZ2FtZW50byBkbyBQREZcclxuICAgKi9cclxuICBzZXRJc0xvYWRpbmdQZGYobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0xvYWRpbmdQZGYuc2V0KGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VyYSBlIGFicmUgbyBtb2RhbCBkZSByZWxhdMOzcmlvXHJcbiAgICovXHJcbiAgYXN5bmMgb3BlblJlbGF0b3JpbyhcclxuICAgIGh0bWxDb250ZW50OiBzdHJpbmcsIFxyXG4gICAgcmVsYXRvcmlvOiBLdkVkaXRvclJlbGF0b3JpbyB8IG51bGwsIFxyXG4gICAgdGlwb1Zpc3VhbGl6YWNhbzogJ3ZhbG9yJyB8ICdkZXNjcmljYW8nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmdQZGYoKSkgcmV0dXJuO1xyXG4gICAgXHJcbiAgICB0aGlzLnNldElzTG9hZGluZ1BkZih0cnVlKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjAwMCkpO1xyXG4gICAgICBcclxuICAgICAgbGV0IGh0bWxDb21WYWxvcmVzUmVhaXMgPSBodG1sQ29udGVudDtcclxuXHJcbiAgICAgIGlmIChyZWxhdG9yaW8pIHtcclxuICAgICAgICBodG1sQ29tVmFsb3Jlc1JlYWlzID0gdGhpcy5wcm9jZXNzYXJIdG1sUGFyYVBkZihodG1sQ29udGVudCwgcmVsYXRvcmlvLCB0aXBvVmlzdWFsaXphY2FvKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgaHRtbEZpbmFsUGFyYVBkZiA9IHRoaXMuYWRpY2lvbmFyRXN0aWxvc1BhcmFQZGYoaHRtbENvbVZhbG9yZXNSZWFpcyk7XHJcbiAgICAgIGNvbnN0IHBkZkJsb2IgPSBhd2FpdCB0aGlzLmdlcmFyUGRmQmxvYihodG1sRmluYWxQYXJhUGRmKTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuYWJyaXJNb2RhbFJlbGF0b3JpbyhwZGZCbG9iKTtcclxuICAgICAgXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGYWxoYSBhbyBnZXJhciBvIEJsb2IgZG8gUERGOicsIGVycm9yKTtcclxuICAgICAgYWxlcnQoJ09jb3JyZXUgdW0gZXJybyBhbyBnZXJhciBvIHJlbGF0w7NyaW8uJyk7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLnNldElzTG9hZGluZ1BkZihmYWxzZSk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSksIDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzYSBvIEhUTUwgc3Vic3RpdHVpbmRvIHZhcmnDoXZlaXMgZSBsaW1wYW5kbyBmb3JtYXRhw6fDo29cclxuICAgKi9cclxuICBwcml2YXRlIHByb2Nlc3Nhckh0bWxQYXJhUGRmKFxyXG4gICAgaHRtbENvbnRlbnQ6IHN0cmluZywgXHJcbiAgICByZWxhdG9yaW86IEt2RWRpdG9yUmVsYXRvcmlvLCBcclxuICAgIHRpcG9WaXN1YWxpemFjYW86ICd2YWxvcicgfCAnZGVzY3JpY2FvJ1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBsZXQgaHRtbFByb2Nlc3NhZG8gPSBodG1sQ29udGVudDtcclxuXHJcbiAgICAvLyBTdWJzdGl0dWkgdmFsb3JlcyBkYXMgdmFyacOhdmVpc1xyXG4gICAgcmVsYXRvcmlvLnZhcmlhdmVpcy5mb3JFYWNoKHZhcmlhdmVsID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiB2YXJpYXZlbC5kZXNjcmljYW8gIT09ICdzdHJpbmcnIHx8IHZhcmlhdmVsLmRlc2NyaWNhby50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBzcGVjaWFsUmVnZXggPSB0aGlzLmNyZWF0ZUludGVybGVhdmVkUmVnZXgodmFyaWF2ZWwuZGVzY3JpY2FvKTtcclxuICAgICAgY29uc3QgdmFsb3JTdWJzdGl0dWljYW8gPSB0aXBvVmlzdWFsaXphY2FvID09PSAnZGVzY3JpY2FvJyA/IHZhcmlhdmVsLmRlc2NyaWNhbyA6IHZhcmlhdmVsLnZhbHVlO1xyXG4gICAgICBodG1sUHJvY2Vzc2FkbyA9IGh0bWxQcm9jZXNzYWRvLnJlcGxhY2Uoc3BlY2lhbFJlZ2V4LCB2YWxvclN1YnN0aXR1aWNhbyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBSZW1vdmUgcHJvcHJpZWRhZGVzIGRlIGVzdGlsbyBwYWRyw6NvXHJcbiAgICBodG1sUHJvY2Vzc2FkbyA9IGh0bWxQcm9jZXNzYWRvLnJlcGxhY2UoL2JhY2tncm91bmQtY29sb3I6XFxzKnJnYlxcKFxccyoyMzAsXFxzKjI0NyxcXHMqMjU1XFxzKlxcKTs/L2dpLCAnJyk7XHJcbiAgICBodG1sUHJvY2Vzc2FkbyA9IGh0bWxQcm9jZXNzYWRvLnJlcGxhY2UoL2NvbG9yOlxccypyZ2JcXChcXHMqMCxcXHMqMTAyLFxccyoyMDRcXHMqXFwpOz8vZ2ksICcnKTtcclxuICAgIGh0bWxQcm9jZXNzYWRvID0gaHRtbFByb2Nlc3NhZG8ucmVwbGFjZSgvOyhcXHMqOykrL2csICc7Jyk7XHJcbiAgICBodG1sUHJvY2Vzc2FkbyA9IGh0bWxQcm9jZXNzYWRvLnJlcGxhY2UoL1xcc3N0eWxlPVwiW1xccztdKlwiL2dpLCAnJyk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHBhcsOhZ3JhZm9zIHZhemlvcyBlIHF1ZWJyYXMgZGUgbGluaGEgZHVwbGFzXHJcbiAgICBodG1sUHJvY2Vzc2FkbyA9IGh0bWxQcm9jZXNzYWRvLnJlcGxhY2UoLzxwPjxicj48XFwvcD4vZywgJycpO1xyXG4gICAgaHRtbFByb2Nlc3NhZG8gPSBodG1sUHJvY2Vzc2Fkby5yZXBsYWNlKC8oPGJyPlxccyopezIsfS9nLCAnPGJyPicpO1xyXG5cclxuICAgIHJldHVybiBodG1sUHJvY2Vzc2FkbztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkaWNpb25hIGVzdGlsb3MgQ1NTIGVzcGVjw61maWNvcyBwYXJhIFBERlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRpY2lvbmFyRXN0aWxvc1BhcmFQZGYoaHRtbENvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlc3RpbG9zUGFyYVBkZiA9IGBcclxuICAgICAgPHN0eWxlPlxyXG4gICAgICAgICN0ZW1wLXBkZi1yZW5kZXItYXJlYSB7IFxyXG4gICAgICAgICAgZm9udC1mYW1pbHk6ICdTYW5zIFNlcmlmJywgQXJpYWwsIHNhbnMtc2VyaWY7IFxyXG4gICAgICAgICAgZm9udC1zaXplOiAxMXB0O1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcclxuICAgICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnk7IFxyXG4gICAgICAgIH1cclxuICAgICAgICAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgcCB7XHJcbiAgICAgICAgICBtaW4taGVpZ2h0OiAxLjNlbTtcclxuICAgICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBoMSwgI3RlbXAtcGRmLXJlbmRlci1hcmVhIGgyLCAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgaDMsIFxyXG4gICAgICAgICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBoNCwgI3RlbXAtcGRmLXJlbmRlci1hcmVhIGg1LCAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgaDYgeyBcclxuICAgICAgICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgI3RlbXAtcGRmLXJlbmRlci1hcmVhIFtzdHlsZSo9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIl0ge1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBwLCAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgaDEsICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBoMiwgXHJcbiAgICAgICAgI3RlbXAtcGRmLXJlbmRlci1hcmVhIGgzLCAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgaDQsICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBoNSwgXHJcbiAgICAgICAgI3RlbXAtcGRmLXJlbmRlci1hcmVhIGg2LCAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgYmxvY2txdW90ZSwgI3RlbXAtcGRmLXJlbmRlci1hcmVhIHVsLCBcclxuICAgICAgICAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgb2wsICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBsaSwgI3RlbXAtcGRmLXJlbmRlci1hcmVhIHRhYmxlLCBcclxuICAgICAgICAjdGVtcC1wZGYtcmVuZGVyLWFyZWEgdHIsICN0ZW1wLXBkZi1yZW5kZXItYXJlYSBpbWcgeyBcclxuICAgICAgICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgXHJcbiAgICAgICAgfVxyXG4gICAgICA8L3N0eWxlPlxyXG4gICAgYDtcclxuICAgIFxyXG4gICAgcmV0dXJuIGVzdGlsb3NQYXJhUGRmICsgaHRtbENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXJhIG8gYmxvYiBkbyBQREZcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIGdlcmFyUGRmQmxvYihodG1sQ29udGVudDogc3RyaW5nKTogUHJvbWlzZTxCbG9iPiB7XHJcbiAgICBjb25zdCByZW5kZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHJlbmRlckNvbnRhaW5lci5pZCA9ICd0ZW1wLXBkZi1yZW5kZXItYXJlYSc7XHJcbiAgICByZW5kZXJDb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgcmVuZGVyQ29udGFpbmVyLnN0eWxlLmxlZnQgPSAnLTk5OTlweCc7XHJcbiAgICByZW5kZXJDb250YWluZXIuc3R5bGUudG9wID0gJzAnO1xyXG4gICAgcmVuZGVyQ29udGFpbmVyLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICd3aGl0ZSc7XHJcbiAgICByZW5kZXJDb250YWluZXIuc3R5bGUucGFkZGluZyA9ICcxMm1tJztcclxuICAgIHJlbmRlckNvbnRhaW5lci5zdHlsZS53aWR0aCA9ICcyMTBtbSc7XHJcbiAgICByZW5kZXJDb250YWluZXIuc3R5bGUuZm9udFNpemUgPSAnMTVweCc7XHJcbiAgICByZW5kZXJDb250YWluZXIuaW5uZXJIVE1MID0gaHRtbENvbnRlbnQ7XHJcbiAgICBcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVuZGVyQ29udGFpbmVyKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwKSk7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnBkZlNlcnZpY2UuZ2VyYXJQZGZCbG9iUG9yRWxlbWVudG9JZCgndGVtcC1wZGYtcmVuZGVyLWFyZWEnKTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHJlbmRlckNvbnRhaW5lcikpIHtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHJlbmRlckNvbnRhaW5lcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFicmUgbyBtb2RhbCBjb20gbyBQREYgZ2VyYWRvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhYnJpck1vZGFsUmVsYXRvcmlvKHBkZkJsb2I6IEJsb2IpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEt2UmVwb3J0TW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgaGVhZGVyOiAnR2VyYXIgUmVsYXTDs3JpbycsXHJcbiAgICAgIHdpZHRoOiAnNjAlJyxcclxuICAgICAgaGVpZ2h0OiAnOTAlJyxcclxuICAgICAgbW9kYWw6IHRydWUsXHJcbiAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcGRmQmxvYjogcGRmQmxvYlxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyaWEgdW1hIHJlZ2V4IGVzcGVjaWFsIHBhcmEgYnVzY2EgZW0gdGV4dG8gY29tIEhUTUxcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUludGVybGVhdmVkUmVnZXgodGV4dDogc3RyaW5nKTogUmVnRXhwIHtcclxuICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2c7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gdGV4dFxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5tYXAoY2hhciA9PiBjaGFyLnJlcGxhY2Uoc3BlY2lhbENoYXJzLCAnXFxcXCQmJykpXHJcbiAgICAgIC5qb2luKCcoPFtePl0qPikqJyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgJ2dpJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import Quill from 'quill';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class KvEditorQuillService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.quillInstance = null;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Carrega o CSS do Quill dinamicamente
|
|
10
|
+
*/
|
|
11
|
+
loadCss() {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const existingLink = document.querySelector('link[href*="quill.snow.css"]');
|
|
14
|
+
if (existingLink) {
|
|
15
|
+
resolve();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const cssElement = document.createElement('link');
|
|
19
|
+
cssElement.rel = 'stylesheet';
|
|
20
|
+
cssElement.href = 'https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css';
|
|
21
|
+
cssElement.onload = () => resolve();
|
|
22
|
+
cssElement.onerror = (err) => reject(err);
|
|
23
|
+
document.head.appendChild(cssElement);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Registra os formatos personalizados do Quill
|
|
28
|
+
*/
|
|
29
|
+
registerCustomFormats() {
|
|
30
|
+
const ColorStyle = Quill.import('attributors/style/color');
|
|
31
|
+
const SizeStyle = Quill.import('attributors/style/size');
|
|
32
|
+
const Font = Quill.import('formats/font');
|
|
33
|
+
const Size = Quill.import('attributors/style/size');
|
|
34
|
+
const AlignStyle = Quill.import('attributors/style/align');
|
|
35
|
+
Size.whitelist = ['15px', '20px', '30px', '40px', '50px', '70px', '90px'];
|
|
36
|
+
Font.whitelist = ['monospace', 'roboto', 'serif', 'inter'];
|
|
37
|
+
Quill.register(ColorStyle, true);
|
|
38
|
+
Quill.register(SizeStyle, true);
|
|
39
|
+
Quill.register(Font, true);
|
|
40
|
+
Quill.register(Size, true);
|
|
41
|
+
Quill.register(AlignStyle, true);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Cria uma instância do Quill com a configuração fornecida
|
|
45
|
+
*/
|
|
46
|
+
createQuillInstance(selector, config) {
|
|
47
|
+
this.registerCustomFormats();
|
|
48
|
+
this.quillInstance = new Quill(selector, {
|
|
49
|
+
theme: config.theme,
|
|
50
|
+
modules: config.modules,
|
|
51
|
+
placeholder: config.placeholder,
|
|
52
|
+
readOnly: config.readOnly,
|
|
53
|
+
debug: config.debug,
|
|
54
|
+
});
|
|
55
|
+
return this.quillInstance;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Obtém a instância atual do Quill
|
|
59
|
+
*/
|
|
60
|
+
getQuillInstance() {
|
|
61
|
+
return this.quillInstance;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Limpa a instância do Quill
|
|
65
|
+
*/
|
|
66
|
+
destroyQuillInstance() {
|
|
67
|
+
this.quillInstance = null;
|
|
68
|
+
}
|
|
69
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorQuillService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
70
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorQuillService, providedIn: 'root' }); }
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorQuillService, decorators: [{
|
|
73
|
+
type: Injectable,
|
|
74
|
+
args: [{
|
|
75
|
+
providedIn: 'root'
|
|
76
|
+
}]
|
|
77
|
+
}] });
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLXF1aWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1pbnB1dHMva3YtZWRpdG9yL3NlcnZpY2VzL2t2LWVkaXRvci1xdWlsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQU0xQixNQUFNLE9BQU8sb0JBQW9CO0lBSGpDO1FBS1Usa0JBQWEsR0FBaUIsSUFBSSxDQUFDO0tBMEU1QztJQXhFQzs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1RSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsVUFBVSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksR0FBRyw4REFBOEQsQ0FBQztZQUVqRixVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLFVBQVUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILHFCQUFxQjtRQUNuQixNQUFNLFVBQVUsR0FBUSxLQUFLLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDaEUsTUFBTSxTQUFTLEdBQVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELE1BQU0sSUFBSSxHQUFRLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQVEsQ0FBQztRQUVsRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTNELEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsTUFBMkI7UUFDL0QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDOzhHQTNFVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xyXG5pbXBvcnQgeyBLdkVkaXRvclF1aWxsQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMva3YtZWRpdG9yLnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RWRpdG9yUXVpbGxTZXJ2aWNlIHtcclxuICBcclxuICBwcml2YXRlIHF1aWxsSW5zdGFuY2U6IFF1aWxsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIENhcnJlZ2EgbyBDU1MgZG8gUXVpbGwgZGluYW1pY2FtZW50ZVxyXG4gICAqL1xyXG4gIGxvYWRDc3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdGluZ0xpbmsgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsaW5rW2hyZWYqPVwicXVpbGwuc25vdy5jc3NcIl0nKTtcclxuICAgICAgaWYgKGV4aXN0aW5nTGluaykge1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNzc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XHJcbiAgICAgIGNzc0VsZW1lbnQucmVsID0gJ3N0eWxlc2hlZXQnO1xyXG4gICAgICBjc3NFbGVtZW50LmhyZWYgPSAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLnNub3cuY3NzJztcclxuXHJcbiAgICAgIGNzc0VsZW1lbnQub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpO1xyXG4gICAgICBjc3NFbGVtZW50Lm9uZXJyb3IgPSAoZXJyKSA9PiByZWplY3QoZXJyKTtcclxuXHJcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoY3NzRWxlbWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdHJhIG9zIGZvcm1hdG9zIHBlcnNvbmFsaXphZG9zIGRvIFF1aWxsXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJDdXN0b21Gb3JtYXRzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgQ29sb3JTdHlsZTogYW55ID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9zdHlsZS9jb2xvcicpO1xyXG4gICAgY29uc3QgU2l6ZVN0eWxlOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuICAgIGNvbnN0IEZvbnQ6IGFueSA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9mb250Jyk7XHJcbiAgICBjb25zdCBTaXplOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuICAgIGNvbnN0IEFsaWduU3R5bGUgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL2FsaWduJykgYXMgYW55O1xyXG5cclxuICAgIFNpemUud2hpdGVsaXN0ID0gWycxNXB4JywgJzIwcHgnLCAnMzBweCcsICc0MHB4JywgJzUwcHgnLCAnNzBweCcsICc5MHB4J107XHJcbiAgICBGb250LndoaXRlbGlzdCA9IFsnbW9ub3NwYWNlJywgJ3JvYm90bycsICdzZXJpZicsICdpbnRlciddO1xyXG5cclxuICAgIFF1aWxsLnJlZ2lzdGVyKENvbG9yU3R5bGUsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZVN0eWxlLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKEZvbnQsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZSwgdHJ1ZSk7XHJcbiAgICBRdWlsbC5yZWdpc3RlcihBbGlnblN0eWxlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyaWEgdW1hIGluc3TDom5jaWEgZG8gUXVpbGwgY29tIGEgY29uZmlndXJhw6fDo28gZm9ybmVjaWRhXHJcbiAgICovXHJcbiAgY3JlYXRlUXVpbGxJbnN0YW5jZShzZWxlY3Rvcjogc3RyaW5nLCBjb25maWc6IEt2RWRpdG9yUXVpbGxDb25maWcpOiBRdWlsbCB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyQ3VzdG9tRm9ybWF0cygpO1xyXG4gICAgXHJcbiAgICB0aGlzLnF1aWxsSW5zdGFuY2UgPSBuZXcgUXVpbGwoc2VsZWN0b3IsIHtcclxuICAgICAgdGhlbWU6IGNvbmZpZy50aGVtZSxcclxuICAgICAgbW9kdWxlczogY29uZmlnLm1vZHVsZXMsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBjb25maWcucGxhY2Vob2xkZXIsXHJcbiAgICAgIHJlYWRPbmx5OiBjb25maWcucmVhZE9ubHksXHJcbiAgICAgIGRlYnVnOiBjb25maWcuZGVidWcsXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5xdWlsbEluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT2J0w6ltIGEgaW5zdMOibmNpYSBhdHVhbCBkbyBRdWlsbFxyXG4gICAqL1xyXG4gIGdldFF1aWxsSW5zdGFuY2UoKTogUXVpbGwgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnF1aWxsSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaW1wYSBhIGluc3TDom5jaWEgZG8gUXVpbGxcclxuICAgKi9cclxuICBkZXN0cm95UXVpbGxJbnN0YW5jZSgpOiB2b2lkIHtcclxuICAgIHRoaXMucXVpbGxJbnN0YW5jZSA9IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class KvEditorRelatorioService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.relatorios = signal([]);
|
|
6
|
+
this.relatorioSelected = signal(null);
|
|
7
|
+
this.idRelatorioSelected = signal(0);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Define a lista de relatórios disponíveis
|
|
11
|
+
*/
|
|
12
|
+
setRelatorios(relatorios) {
|
|
13
|
+
this.relatorios.set(relatorios);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Obtém a lista de relatórios
|
|
17
|
+
*/
|
|
18
|
+
getRelatorios() {
|
|
19
|
+
return this.relatorios();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Seleciona um relatório pelo ID
|
|
23
|
+
*/
|
|
24
|
+
setRelatorioPorId(id) {
|
|
25
|
+
this.idRelatorioSelected.set(id);
|
|
26
|
+
const relatorio = this.relatorios().find(r => r.id === id);
|
|
27
|
+
if (relatorio) {
|
|
28
|
+
this.relatorioSelected.set(relatorio);
|
|
29
|
+
return relatorio;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Define o relatório selecionado
|
|
35
|
+
*/
|
|
36
|
+
setRelatorio(relatorio) {
|
|
37
|
+
this.idRelatorioSelected.set(relatorio.id);
|
|
38
|
+
this.relatorioSelected.set(relatorio);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Obtém o relatório selecionado
|
|
42
|
+
*/
|
|
43
|
+
getRelatorioSelected() {
|
|
44
|
+
return this.relatorioSelected();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Obtém o ID do relatório selecionado
|
|
48
|
+
*/
|
|
49
|
+
getIdRelatorioSelected() {
|
|
50
|
+
return this.idRelatorioSelected();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Renderiza o template do contrato com as variáveis
|
|
54
|
+
*/
|
|
55
|
+
renderContrato(texto, variaveis) {
|
|
56
|
+
return texto.replace(/\{(\d+)\}/g, (_, id) => {
|
|
57
|
+
const v = variaveis.find(v => v.id === parseInt(id));
|
|
58
|
+
if (!v)
|
|
59
|
+
return `{${id}}`;
|
|
60
|
+
return `<span class="variavel-inserida"
|
|
61
|
+
style="background-color: #e6f7ff; color: #0066cc; border-radius: 3px; padding: 2px 4px; font-weight: 500;"
|
|
62
|
+
title="${v.descricao ?? ''}">${v.descricao}</span>`;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Renderiza o contrato para PDF (sem formatação HTML)
|
|
67
|
+
*/
|
|
68
|
+
renderContratoParaPdf(texto, variaveis, tipoVisualizacao) {
|
|
69
|
+
return texto.replace(/\{(\d+)\}/g, (_, id) => {
|
|
70
|
+
const v = variaveis.find(v => v.id === parseInt(id));
|
|
71
|
+
if (!v)
|
|
72
|
+
return `{${id}}`;
|
|
73
|
+
const descricao = tipoVisualizacao === 'descricao' ? v.descricao : v.value;
|
|
74
|
+
return descricao || '';
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Filtra variáveis baseado no termo de busca
|
|
79
|
+
*/
|
|
80
|
+
filtrarVariaveis(termo) {
|
|
81
|
+
const relatorio = this.getRelatorioSelected();
|
|
82
|
+
if (!relatorio)
|
|
83
|
+
return [];
|
|
84
|
+
return relatorio.variaveis.filter(v => v.descricao.toLowerCase().includes(termo.toLowerCase()));
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorRelatorioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
87
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorRelatorioService, providedIn: 'root' }); }
|
|
88
|
+
}
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorRelatorioService, decorators: [{
|
|
90
|
+
type: Injectable,
|
|
91
|
+
args: [{
|
|
92
|
+
providedIn: 'root'
|
|
93
|
+
}]
|
|
94
|
+
}] });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLXJlbGF0b3Jpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWVkaXRvci9zZXJ2aWNlcy9rdi1lZGl0b3ItcmVsYXRvcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTW5ELE1BQU0sT0FBTyx3QkFBd0I7SUFIckM7UUFLVSxlQUFVLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBQzNELHdCQUFtQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztLQTBGakQ7SUF4RkM7O09BRUc7SUFDSCxhQUFhLENBQUMsVUFBK0I7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUUzRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsU0FBNEI7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBYSxFQUFFLFNBQTZCO1FBQ3pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDM0MsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBRXpCLE9BQU87OzZCQUVnQixDQUFDLENBQUMsU0FBUyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxTQUFTLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsU0FBNkIsRUFBRSxnQkFBdUM7UUFDekcsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUMzQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPLElBQUksRUFBRSxHQUFHLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzNFLE9BQU8sU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3BDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUN4RCxDQUFDO0lBQ0osQ0FBQzs4R0E3RlUsd0JBQXdCO2tIQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLdkVkaXRvclJlbGF0b3JpbywgS3ZFZGl0b3JWYXJpYXZlbCB9IGZyb20gJy4uL3R5cGVzL2t2LWVkaXRvci50eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkVkaXRvclJlbGF0b3Jpb1NlcnZpY2Uge1xyXG4gIFxyXG4gIHByaXZhdGUgcmVsYXRvcmlvcyA9IHNpZ25hbDxLdkVkaXRvclJlbGF0b3Jpb1tdPihbXSk7XHJcbiAgcHJpdmF0ZSByZWxhdG9yaW9TZWxlY3RlZCA9IHNpZ25hbDxLdkVkaXRvclJlbGF0b3JpbyB8IG51bGw+KG51bGwpO1xyXG4gIHByaXZhdGUgaWRSZWxhdG9yaW9TZWxlY3RlZCA9IHNpZ25hbDxudW1iZXI+KDApO1xyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgYSBsaXN0YSBkZSByZWxhdMOzcmlvcyBkaXNwb27DrXZlaXNcclxuICAgKi9cclxuICBzZXRSZWxhdG9yaW9zKHJlbGF0b3Jpb3M6IEt2RWRpdG9yUmVsYXRvcmlvW10pOiB2b2lkIHtcclxuICAgIHRoaXMucmVsYXRvcmlvcy5zZXQocmVsYXRvcmlvcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnTDqW0gYSBsaXN0YSBkZSByZWxhdMOzcmlvc1xyXG4gICAqL1xyXG4gIGdldFJlbGF0b3Jpb3MoKTogS3ZFZGl0b3JSZWxhdG9yaW9bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWxhdG9yaW9zKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY2lvbmEgdW0gcmVsYXTDs3JpbyBwZWxvIElEXHJcbiAgICovXHJcbiAgc2V0UmVsYXRvcmlvUG9ySWQoaWQ6IG51bWJlcik6IEt2RWRpdG9yUmVsYXRvcmlvIHwgbnVsbCB7XHJcbiAgICB0aGlzLmlkUmVsYXRvcmlvU2VsZWN0ZWQuc2V0KGlkKTtcclxuICAgIGNvbnN0IHJlbGF0b3JpbyA9IHRoaXMucmVsYXRvcmlvcygpLmZpbmQociA9PiByLmlkID09PSBpZCk7XHJcbiAgICBcclxuICAgIGlmIChyZWxhdG9yaW8pIHtcclxuICAgICAgdGhpcy5yZWxhdG9yaW9TZWxlY3RlZC5zZXQocmVsYXRvcmlvKTtcclxuICAgICAgcmV0dXJuIHJlbGF0b3JpbztcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgbyByZWxhdMOzcmlvIHNlbGVjaW9uYWRvXHJcbiAgICovXHJcbiAgc2V0UmVsYXRvcmlvKHJlbGF0b3JpbzogS3ZFZGl0b3JSZWxhdG9yaW8pOiB2b2lkIHtcclxuICAgIHRoaXMuaWRSZWxhdG9yaW9TZWxlY3RlZC5zZXQocmVsYXRvcmlvLmlkKTtcclxuICAgIHRoaXMucmVsYXRvcmlvU2VsZWN0ZWQuc2V0KHJlbGF0b3Jpbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnTDqW0gbyByZWxhdMOzcmlvIHNlbGVjaW9uYWRvXHJcbiAgICovXHJcbiAgZ2V0UmVsYXRvcmlvU2VsZWN0ZWQoKTogS3ZFZGl0b3JSZWxhdG9yaW8gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnJlbGF0b3Jpb1NlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPYnTDqW0gbyBJRCBkbyByZWxhdMOzcmlvIHNlbGVjaW9uYWRvXHJcbiAgICovXHJcbiAgZ2V0SWRSZWxhdG9yaW9TZWxlY3RlZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuaWRSZWxhdG9yaW9TZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVuZGVyaXphIG8gdGVtcGxhdGUgZG8gY29udHJhdG8gY29tIGFzIHZhcmnDoXZlaXNcclxuICAgKi9cclxuICByZW5kZXJDb250cmF0byh0ZXh0bzogc3RyaW5nLCB2YXJpYXZlaXM6IEt2RWRpdG9yVmFyaWF2ZWxbXSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGV4dG8ucmVwbGFjZSgvXFx7KFxcZCspXFx9L2csIChfLCBpZCkgPT4ge1xyXG4gICAgICBjb25zdCB2ID0gdmFyaWF2ZWlzLmZpbmQodiA9PiB2LmlkID09PSBwYXJzZUludChpZCkpO1xyXG4gICAgICBpZiAoIXYpIHJldHVybiBgeyR7aWR9fWA7XHJcblxyXG4gICAgICByZXR1cm4gYDxzcGFuIGNsYXNzPVwidmFyaWF2ZWwtaW5zZXJpZGFcIlxyXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmN2ZmOyBjb2xvcjogIzAwNjZjYzsgYm9yZGVyLXJhZGl1czogM3B4OyBwYWRkaW5nOiAycHggNHB4OyBmb250LXdlaWdodDogNTAwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCIke3YuZGVzY3JpY2FvID8/ICcnfVwiPiR7di5kZXNjcmljYW99PC9zcGFuPmA7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbmRlcml6YSBvIGNvbnRyYXRvIHBhcmEgUERGIChzZW0gZm9ybWF0YcOnw6NvIEhUTUwpXHJcbiAgICovXHJcbiAgcmVuZGVyQ29udHJhdG9QYXJhUGRmKHRleHRvOiBzdHJpbmcsIHZhcmlhdmVpczogS3ZFZGl0b3JWYXJpYXZlbFtdLCB0aXBvVmlzdWFsaXphY2FvOiAndmFsb3InIHwgJ2Rlc2NyaWNhbycpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRleHRvLnJlcGxhY2UoL1xceyhcXGQrKVxcfS9nLCAoXywgaWQpID0+IHtcclxuICAgICAgY29uc3QgdiA9IHZhcmlhdmVpcy5maW5kKHYgPT4gdi5pZCA9PT0gcGFyc2VJbnQoaWQpKTtcclxuICAgICAgaWYgKCF2KSByZXR1cm4gYHske2lkfX1gO1xyXG4gICAgICBjb25zdCBkZXNjcmljYW8gPSB0aXBvVmlzdWFsaXphY2FvID09PSAnZGVzY3JpY2FvJyA/IHYuZGVzY3JpY2FvIDogdi52YWx1ZTtcclxuICAgICAgcmV0dXJuIGRlc2NyaWNhbyB8fCAnJztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmlsdHJhIHZhcmnDoXZlaXMgYmFzZWFkbyBubyB0ZXJtbyBkZSBidXNjYVxyXG4gICAqL1xyXG4gIGZpbHRyYXJWYXJpYXZlaXModGVybW86IHN0cmluZyk6IEt2RWRpdG9yVmFyaWF2ZWxbXSB7XHJcbiAgICBjb25zdCByZWxhdG9yaW8gPSB0aGlzLmdldFJlbGF0b3Jpb1NlbGVjdGVkKCk7XHJcbiAgICBpZiAoIXJlbGF0b3JpbykgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiByZWxhdG9yaW8udmFyaWF2ZWlzLmZpbHRlcih2ID0+IFxyXG4gICAgICB2LmRlc2NyaWNhby50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm1vLnRvTG93ZXJDYXNlKCkpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWVkaXRvci90eXBlcy9rdi1lZGl0b3IudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgS3ZFZGl0b3JSZWxhdG9yaW8ge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBkZXNjcmljYW86IHN0cmluZztcclxuICBtb2RlbG9SZWxhdG9yaW86IHN0cmluZztcclxuICB2YXJpYXZlaXM6IEt2RWRpdG9yVmFyaWF2ZWxbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLdkVkaXRvclZhcmlhdmVsIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIGRlc2NyaWNhbzogc3RyaW5nO1xyXG4gIHZhbHVlOiBzdHJpbmc7XHJcbiAgY29yPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEt2RWRpdG9yQ29uZmlnIHtcclxuICBjb250ZW50VHlwZTogJ2h0bWwnIHwgJ3RleHQnO1xyXG4gIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gIGRlYnVnOiBib29sZWFuO1xyXG4gIGNhbnZhSGVpZ3RoOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgS3ZFZGl0b3JFdmVudHMge1xyXG4gIG9uVGV4dENoYW5nZTogYW55O1xyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlOiBhbnk7XHJcbiAgb3V0cHV0UmF3OiBzdHJpbmc7XHJcbiAgb3V0cHV0SHRtbDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEt2RWRpdG9yUXVpbGxDb25maWcge1xyXG4gIHRoZW1lOiBzdHJpbmc7XHJcbiAgbW9kdWxlczogYW55O1xyXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgcmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgZGVidWc6IGJvb2xlYW47XHJcbn1cclxuIl19
|