keevo-components 1.8.209 → 1.8.211
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/base-components/base-component-table.mjs +32 -3
- package/esm2022/lib/api/helpers/keevo-validators.mjs +18 -1
- package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +26 -5
- package/fesm2022/keevo-components.mjs +72 -7
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/api/base-components/base-component-table.d.ts +2 -0
- package/lib/api/helpers/keevo-validators.d.ts +1 -0
- package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +7 -3
- package/lib/components/kv-table/kv-table.component.d.ts +1 -1
- package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
- package/package.json +2 -1
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
2
|
import Quill from 'quill';
|
|
3
|
+
import BlotFormatter from 'quill-blot-formatter';
|
|
3
4
|
import { BaseComponentInput } from '../../../api/base-components/base-component-input';
|
|
4
5
|
import { ComponentProviders } from '../../../api/helpers/component-providers';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "../../../api/services/component.service";
|
|
7
|
-
import * as i2 from "@angular/
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "../../kv-error/kv-error.component";
|
|
8
11
|
export class KvEditorComponent extends BaseComponentInput {
|
|
9
12
|
constructor(componentService) {
|
|
10
13
|
super(componentService);
|
|
@@ -14,8 +17,13 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
14
17
|
this.onTextChange = new EventEmitter();
|
|
15
18
|
this.onSelectionChange = new EventEmitter();
|
|
16
19
|
this.updatingEditor = false;
|
|
20
|
+
/**
|
|
21
|
+
* caso defina como "text" o texto ira ser enviado sem formatação
|
|
22
|
+
*/
|
|
23
|
+
this.contentType = 'html';
|
|
17
24
|
}
|
|
18
25
|
ngOnInit() {
|
|
26
|
+
super.ngOnInit();
|
|
19
27
|
if (!this.quill) {
|
|
20
28
|
this.initializeQuillEditor();
|
|
21
29
|
}
|
|
@@ -34,10 +42,12 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
34
42
|
Quill.register(SizeStyle, true);
|
|
35
43
|
Quill.register(Font, true);
|
|
36
44
|
Quill.register(Size, true);
|
|
45
|
+
Quill.register('modules/blotFormatter', BlotFormatter);
|
|
37
46
|
this.quill = new Quill('#kv-editor', {
|
|
38
47
|
theme: 'snow',
|
|
39
48
|
modules: {
|
|
40
49
|
toolbar: '#kv-editor-toolbar',
|
|
50
|
+
blotFormatter: {}
|
|
41
51
|
},
|
|
42
52
|
placeholder: this.label ? this.label : '',
|
|
43
53
|
readOnly: this.readonly,
|
|
@@ -53,7 +63,14 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
53
63
|
this.quill.on('text-change', (delta, oldContents, source) => {
|
|
54
64
|
if (!this.updatingEditor) {
|
|
55
65
|
this.updatingEditor = false;
|
|
56
|
-
|
|
66
|
+
switch (this.contentType) {
|
|
67
|
+
case 'html':
|
|
68
|
+
this.escrevaValor(this.quill.getSemanticHTML());
|
|
69
|
+
break;
|
|
70
|
+
case 'text':
|
|
71
|
+
this.escrevaValor(this.quill.getText());
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
57
74
|
this.onTextChange.emit({ delta: delta, oldContents: oldContents, source: source });
|
|
58
75
|
}
|
|
59
76
|
});
|
|
@@ -70,14 +87,16 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
70
87
|
}
|
|
71
88
|
this.updatingEditor = false;
|
|
72
89
|
this.value = value;
|
|
90
|
+
if (this.value == '<p><br></p>' || this.value == "\n")
|
|
91
|
+
this.value = '';
|
|
73
92
|
}
|
|
74
93
|
}
|
|
75
94
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
76
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { readonly: "readonly", canvaHeigth: "canvaHeigth", debug: "debug" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange" }, providers: ComponentProviders(KvEditorComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\">\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\"></div>\r\n</div>\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n
|
|
95
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { readonly: "readonly", canvaHeigth: "canvaHeigth", debug: "debug", contentType: "contentType" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange" }, providers: ComponentProviders(KvEditorComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{border-top-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: i4.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }] }); }
|
|
77
96
|
}
|
|
78
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, decorators: [{
|
|
79
98
|
type: Component,
|
|
80
|
-
args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\">\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\"></div>\r\n</div>\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n
|
|
99
|
+
args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{border-top-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"] }]
|
|
81
100
|
}], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { readonly: [{
|
|
82
101
|
type: Input
|
|
83
102
|
}], canvaHeigth: [{
|
|
@@ -88,5 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
88
107
|
type: Output
|
|
89
108
|
}], onSelectionChange: [{
|
|
90
109
|
type: Output
|
|
110
|
+
}], contentType: [{
|
|
111
|
+
type: Input
|
|
91
112
|
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBUzlFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFDL0QsWUFDRSxnQkFBa0M7UUFDbEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFHakIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFXLE9BQU8sQ0FBQztRQUM5QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBRXRCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsc0JBQWlCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUQsbUJBQWMsR0FBWSxLQUFLLENBQUM7SUFUeEMsQ0FBQztJQWdCUSxRQUFRO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJ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ckIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFZixJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2hELDRCQUE0QjtZQUU5QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRSxLQUFLLENBQUE7UUFFbkIsQ0FBQztJQUNILENBQUM7OEdBNUZVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHFNQUZqQixrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxpRENqQmxELG1xSUFxR0E7OzJGRGxGYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsV0FBVyxhQUdWLGtCQUFrQixtQkFBbUI7cUZBUXZDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9hcGkvaGVscGVycy9jb21wb25lbnQtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZFZGl0b3JDb21wb25lbnQpLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50SW5wdXQ8c3RyaW5nPiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2FudmFIZWlndGg6IHN0cmluZyA9ICczODBweCc7XHJcbiAgQElucHV0KCkgZGVidWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIG9uVGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGluZ0VkaXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBxdWlsbCE6IFF1aWxsO1xyXG5cclxuXHJcblxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5xdWlsbCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVRdWlsbEVkaXRvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZVF1aWxsRWRpdG9yKCkge1xyXG4gICAgY29uc3QgQ29sb3JDbGFzczogYW55ID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9jbGFzcy9jb2xvcicpO1xyXG4gICAgY29uc3QgQ29sb3JTdHlsZTogYW55ID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9zdHlsZS9jb2xvcicpO1xyXG4gICAgY29uc3QgU2l6ZVN0eWxlOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuICAgIGNvbnN0IEZvbnQ6IGFueSA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9mb250Jyk7XHJcbiAgICBjb25zdCBTaXplOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuXHJcbiAgICBTaXplLndoaXRlbGlzdCA9IFsnMTVweCcsICcyMHB4JywgJzMwcHgnLCAnNDBweCcsICc1MHB4JywgJzcwcHgnLCAnOTBweCddO1xyXG4gICAgRm9udC53aGl0ZWxpc3QgPSBbJ21vbm9zcGFjZScsICdyb2JvdG8nLCAnc2VyaWYnLCAnaW50ZXInXTtcclxuICAgIENvbG9yQ2xhc3Mud2hpdGVsaXN0ID0gWydyZWQnXTtcclxuXHJcbiAgICBRdWlsbC5yZWdpc3RlcihDb2xvckNsYXNzLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKENvbG9yU3R5bGUsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZVN0eWxlLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKEZvbnQsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZSwgdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5xdWlsbCA9IG5ldyBRdWlsbCgnI2t2LWVkaXRvcicsIHtcclxuICAgICAgdGhlbWU6ICdzbm93JyxcclxuICAgICAgbW9kdWxlczoge1xyXG4gICAgICAgIHRvb2xiYXI6ICcja3YtZWRpdG9yLXRvb2xiYXInLFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGFiZWwgPyB0aGlzLmxhYmVsIDogJycsXHJcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LFxyXG4gICAgICBkZWJ1ZzogdGhpcy5kZWJ1ZyxcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICB0aGlzLnF1aWxsLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgKHJhbmdlLCBvbGRSYW5nZSwgc291cmNlKSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgcmFuZ2U6IHJhbmdlLFxyXG4gICAgICAgIG9sZFJhbmdlOiBvbGRSYW5nZSxcclxuICAgICAgICBzb3VyY2U6IHNvdXJjZVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucXVpbGwub24oJ3RleHQtY2hhbmdlJywgKGRlbHRhLCBvbGRDb250ZW50cywgc291cmNlKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy51cGRhdGluZ0VkaXRvcikge1xyXG4gICAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLnF1aWxsLnJvb3QuaW5uZXJIVE1MKVxyXG4gICAgICAgIHRoaXMub25UZXh0Q2hhbmdlLmVtaXQoeyBkZWx0YTogZGVsdGEsIG9sZENvbnRlbnRzOiBvbGRDb250ZW50cywgc291cmNlOiBzb3VyY2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSB0cnVlXHJcbiAgICB0aGlzLmVzY3JldmFWYWxvcih2YWx1ZSlcclxuICB9XHJcblxyXG5cclxuICBlc2NyZXZhVmFsb3IodmFsdWU6IGFueSl7XHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG5cclxuICAgICAgaWYodGhpcy51cGRhdGluZ0VkaXRvcil7XHJcbiAgICAgICAgdGhpcy5xdWlsbC5jbGlwYm9hcmQuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwodmFsdWUpXHJcbiAgICAgICAgLy8gdGhpcy5xdWlsbC5zZXRUZXh0KHZhbHVlKVxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsdWU9IHZhbHVlXHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtZWRpdG9yLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgI2VkaXRvciBpZD1cImt2LWVkaXRvci10b29sYmFyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWZvbnRcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwicm9ib3RvXCI+Um9ib3RvPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbm9zcGFjZVwiPk1vbm9zcGFjZTwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJpbnRlclwiPkludGVyPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5TYW5zIFNlcmlmPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlcmlmXCI+U2VyaWY8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjFcIj5UaXR1bG88L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMlwiPlN1YnRpdHVsbzwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+Tm9ybWFsPC9vcHRpb24+XHJcbiAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXQtZ3JvdXBcIj5cclxuICAgICAgICA8c2VsZWN0IHRpdGxlPVwiU2l6ZVwiIGNsYXNzPVwicWwtc2l6ZVwiPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjE1cHhcIj4xNXB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMjBweFwiPjIwcHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIzMHB4XCI+MzBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjQwcHhcIj40MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNTBweFwiPjUwcHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI3MHB4XCI+NzBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjkwcHhcIj45MHB4PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJvbGRcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWl0YWxpY1wiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtdW5kZXJsaW5lXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zdHJpa2VcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWNvbG9yXCI+PC9zZWxlY3Q+XHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1iYWNrZ3JvdW5kXCI+PC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1YlwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtc2NyaXB0XCIgdmFsdWU9XCJzdXBlclwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaGVhZGVyXCIgdmFsdWU9XCIxXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjJcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWJsb2NrcXVvdGVcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNvZGUtYmxvY2tcIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cIm9yZGVyZWRcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpc3RcIiB2YWx1ZT1cImJ1bGxldFwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCItMVwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaW5kZW50XCIgdmFsdWU9XCIrMVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtZGlyZWN0aW9uXCIgdmFsdWU9XCJydGxcIj48L2J1dHRvbj5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWFsaWduXCI+PC9zZWxlY3Q+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saW5rXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbWFnZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtdmlkZW9cIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWNsZWFuXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgaWQ9XCJrdi1lZGl0b3JcIiBbc3R5bGUuaGVpZ2h0XT1cImNhbnZhSGVpZ3RoXCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3F1aWxsQDIuMC4yL2Rpc3QvcXVpbGwuc25vdy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz5cclxuICA8bGluayBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVJvYm90b1wiIHJlbD1cInN0eWxlc2hlZXRcIj5cclxuICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXVpbGxAMi4wLjIvZGlzdC9xdWlsbC5qc1wiPjwvc2NyaXB0PlxyXG4gIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uanNcIj48L3NjcmlwdD5cclxuXHJcblxyXG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLmJ1YmJsZS5jc3NcIiAvPlxyXG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9zdHlsZXMvYXRvbS1vbmUtZGFyay5taW4uY3NzXCIgLz5cclxuICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0va2F0ZXhAMC4xNi45L2Rpc3Qva2F0ZXgubWluLmNzc1wiIC8+XHJcblxyXG5cclxuICA8IS0tIEltcG9ydCBmb250cyAtLT5cclxuXHJcbiAgPGxpbmsgcmVsPVwicHJlY29ubmVjdFwiIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tXCI+XHJcbiAgPGxpbmsgcmVsPVwicHJlY29ubmVjdFwiIGhyZWY9XCJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tXCIgY3Jvc3NvcmlnaW4+XHJcblxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUJhbG9vKzI6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmZhbWlseT1JbnRlcjp3Z2h0QDEwMC4uOTAwJmZhbWlseT1KZXRCcmFpbnMrTW9ubzppdGFsLHdnaHRAMCwxMDAuLjgwMDsxLDEwMC4uODAwJmRpc3BsYXk9c3dhcFwiIHJlbD1cInN0eWxlc2hlZXRcIj5cclxuICA8bGluayBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1CYWxvbysyOndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMCZmYW1pbHk9SW50ZXI6d2dodEAxMDAuLjkwMCZmYW1pbHk9SmV0QnJhaW5zK01vbm86aXRhbCx3Z2h0QDAsMTAwLi44MDA7MSwxMDAuLjgwMCZmYW1pbHk9Um9ib3RvOml0YWwsd2dodEAwLDEwMDswLDMwMDswLDQwMDswLDUwMDswLDcwMDswLDkwMDsxLDEwMDsxLDMwMDsxLDQwMDsxLDUwMDsxLDcwMDsxLDkwMCZkaXNwbGF5PXN3YXBcIiByZWw9XCJzdHlsZXNoZWV0XCI+XHJcblxyXG4iXX0=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFDO0FBR2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7QUFTOUUsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUEwQjtJQUkvRCxZQUNFLGdCQUFrQztRQUNsQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUdqQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQVcsT0FBTyxDQUFDO1FBQzlCLFVBQUssR0FBWSxLQUFLLENBQUM7UUFFdEIsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1RCxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUt4Qzs7V0FFRztRQUNNLGdCQUFXLEdBQW9CLE1BQU0sQ0FBQztJQWpCL0MsQ0FBQztJQXFCUSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEs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QUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQVVFLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XHJcbmltcG9ydCBCbG90Rm9ybWF0dGVyIGZyb20gJ3F1aWxsLWJsb3QtZm9ybWF0dGVyJztcclxuXHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuLi8uLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LWVkaXRvci5jb21wb25lbnQuc2NzcycsXSxcclxuICBwcm92aWRlcnM6IENvbXBvbmVudFByb3ZpZGVycyhLdkVkaXRvckNvbXBvbmVudCksXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkVkaXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnRJbnB1dDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjYW52YUhlaWd0aDogc3RyaW5nID0gJzM4MHB4JztcclxuICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgb25UZXh0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIHVwZGF0aW5nRWRpdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHF1aWxsITogUXVpbGw7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBjYXNvIGRlZmluYSBjb21vIFwidGV4dFwiIG8gdGV4dG8gaXJhIHNlciBlbnZpYWRvIHNlbSBmb3JtYXRhw6fDo29cclxuICAgKi9cclxuICBASW5wdXQoKSBjb250ZW50VHlwZTogJ2h0bWwnIHwgJ3RleHQnID0gJ2h0bWwnO1xyXG5cclxuXHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKVxyXG4gICAgaWYgKCF0aGlzLnF1aWxsKSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVF1aWxsRWRpdG9yKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgaW5pdGlhbGl6ZVF1aWxsRWRpdG9yKCkge1xyXG4gICAgY29uc3QgQ29sb3JDbGFzczogYW55ID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9jbGFzcy9jb2xvcicpO1xyXG4gICAgY29uc3QgQ29sb3JTdHlsZTogYW55ID0gUXVpbGwuaW1wb3J0KCdhdHRyaWJ1dG9ycy9zdHlsZS9jb2xvcicpO1xyXG4gICAgY29uc3QgU2l6ZVN0eWxlOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuICAgIGNvbnN0IEZvbnQ6IGFueSA9IFF1aWxsLmltcG9ydCgnZm9ybWF0cy9mb250Jyk7XHJcbiAgICBjb25zdCBTaXplOiBhbnkgPSBRdWlsbC5pbXBvcnQoJ2F0dHJpYnV0b3JzL3N0eWxlL3NpemUnKTtcclxuXHJcbiAgICBTaXplLndoaXRlbGlzdCA9IFsnMTVweCcsICcyMHB4JywgJzMwcHgnLCAnNDBweCcsICc1MHB4JywgJzcwcHgnLCAnOTBweCddO1xyXG4gICAgRm9udC53aGl0ZWxpc3QgPSBbJ21vbm9zcGFjZScsICdyb2JvdG8nLCAnc2VyaWYnLCAnaW50ZXInXTtcclxuICAgIENvbG9yQ2xhc3Mud2hpdGVsaXN0ID0gWydyZWQnXTtcclxuXHJcbiAgICBRdWlsbC5yZWdpc3RlcihDb2xvckNsYXNzLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKENvbG9yU3R5bGUsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZVN0eWxlLCB0cnVlKTtcclxuICAgIFF1aWxsLnJlZ2lzdGVyKEZvbnQsIHRydWUpO1xyXG4gICAgUXVpbGwucmVnaXN0ZXIoU2l6ZSwgdHJ1ZSk7XHJcblxyXG5cclxuICAgIFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2Jsb3RGb3JtYXR0ZXInLCBCbG90Rm9ybWF0dGVyKTtcclxuXHJcblxyXG4gICAgdGhpcy5xdWlsbCA9IG5ldyBRdWlsbCgnI2t2LWVkaXRvcicsIHtcclxuICAgICAgdGhlbWU6ICdzbm93JyxcclxuICAgICAgbW9kdWxlczoge1xyXG4gICAgICAgIHRvb2xiYXI6ICcja3YtZWRpdG9yLXRvb2xiYXInLFxyXG5cclxuICAgICAgICBibG90Rm9ybWF0dGVyOiB7fVxyXG4gICAgICB9LFxyXG5cclxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGFiZWwgPyB0aGlzLmxhYmVsIDogJycsXHJcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5LFxyXG4gICAgICBkZWJ1ZzogdGhpcy5kZWJ1ZyxcclxuXHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy5xdWlsbC5vbignc2VsZWN0aW9uLWNoYW5nZScsIChyYW5nZSwgb2xkUmFuZ2UsIHNvdXJjZSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgIHJhbmdlOiByYW5nZSxcclxuICAgICAgICBvbGRSYW5nZTogb2xkUmFuZ2UsXHJcbiAgICAgICAgc291cmNlOiBzb3VyY2VcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkQ29udGVudHMsIHNvdXJjZSkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMudXBkYXRpbmdFZGl0b3IpIHtcclxuICAgICAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHN3aXRjaCh0aGlzLmNvbnRlbnRUeXBlKXtcclxuICAgICAgICAgIGNhc2UgJ2h0bWwnOlxyXG4gICAgICAgICAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpKVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIGNhc2UgJ3RleHQnOlxyXG4gICAgICAgICAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLnF1aWxsLmdldFRleHQoKSlcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9uVGV4dENoYW5nZS5lbWl0KHsgZGVsdGE6IGRlbHRhLCBvbGRDb250ZW50czogb2xkQ29udGVudHMsIHNvdXJjZTogc291cmNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSB0cnVlXHJcbiAgICB0aGlzLmVzY3JldmFWYWxvcih2YWx1ZSlcclxuICB9XHJcblxyXG5cclxuICBlc2NyZXZhVmFsb3IodmFsdWU6IGFueSl7XHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG5cclxuICAgICAgaWYodGhpcy51cGRhdGluZ0VkaXRvcil7XHJcbiAgICAgICAgdGhpcy5xdWlsbC5jbGlwYm9hcmQuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwodmFsdWUpXHJcbiAgICAgICAgLy8gdGhpcy5xdWlsbC5zZXRUZXh0KHZhbHVlKVxyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gZmFsc2U7XHJcbiAgICAgIHRoaXMudmFsdWU9IHZhbHVlXHJcblxyXG4gICAgICBpZih0aGlzLnZhbHVlID09ICc8cD48YnI+PC9wPicgfHwgdGhpcy52YWx1ZSA9PVwiXFxuXCIpXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnXHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtZWRpdG9yLWNvbnRhaW5lclwiPlxyXG4gIDxkaXYgI2VkaXRvciBpZD1cImt2LWVkaXRvci10b29sYmFyXCIgW25nQ2xhc3NdPVwieydlcnJvci1ib3JkZXItdG9vbGJhcic6IGhhc0NvbnRyb2xFcnJvcigpfVwiID5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtZm9udFwiPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJyb2JvdG9cIj5Sb2JvdG88L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwibW9ub3NwYWNlXCI+TW9ub3NwYWNlPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImludGVyXCI+SW50ZXI8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPlNhbnMgU2VyaWY8L29wdGlvbj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic2VyaWZcIj5TZXJpZjwvb3B0aW9uPlxyXG4gICAgICA8L3NlbGVjdD5cclxuXHJcbiAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cclxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPlRpdHVsbzwvb3B0aW9uPlxyXG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCIyXCI+U3VidGl0dWxvPC9vcHRpb24+XHJcbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5Ob3JtYWw8L29wdGlvbj5cclxuICAgICAgPC9zZWxlY3Q+XHJcblxyXG4gICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdC1ncm91cFwiPlxyXG4gICAgICAgIDxzZWxlY3QgdGl0bGU9XCJTaXplXCIgY2xhc3M9XCJxbC1zaXplXCI+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTVweFwiPjE1cHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIyMHB4XCI+MjBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjMwcHhcIj4zMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNDBweFwiPjQwcHg8L29wdGlvbj5cclxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MHB4XCI+NTBweDwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjcwcHhcIj43MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiOTBweFwiPjkwcHg8L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYm9sZFwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaXRhbGljXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC11bmRlcmxpbmVcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXN0cmlrZVwiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cclxuICAgICAgPHNlbGVjdCBjbGFzcz1cInFsLWJhY2tncm91bmRcIj48L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXNjcmlwdFwiIHZhbHVlPVwic3ViXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1zY3JpcHRcIiB2YWx1ZT1cInN1cGVyXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWhlYWRlclwiIHZhbHVlPVwiMlwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYmxvY2txdW90ZVwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtY29kZS1ibG9ja1wiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwib3JkZXJlZFwiPjwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwiYnVsbGV0XCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIi0xXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbmRlbnRcIiB2YWx1ZT1cIisxXCI+PC9idXR0b24+XHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1kaXJlY3Rpb25cIiB2YWx1ZT1cInJ0bFwiPjwvYnV0dG9uPlxyXG4gICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj48L3NlbGVjdD5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHNcIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIj48L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWltYWdlXCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJxbC12aWRlb1wiPjwvYnV0dG9uPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0c1wiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwicWwtY2xlYW5cIj48L2J1dHRvbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBpZD1cImt2LWVkaXRvclwiIFtzdHlsZS5oZWlnaHRdPVwiY2FudmFIZWlndGhcIiBbbmdDbGFzc109XCJ7J2Vycm9yLWJvcmRlcic6IGhhc0NvbnRyb2xFcnJvcigpfVwiID48L2Rpdj5cclxuPC9kaXY+XHJcbjxrdi1lcnJvciBbaGFzRXJyb3JdPVwiaGFzQ29udHJvbEVycm9yKClcIj57eyBlcnJvTWVzc2FnZSgpIH19PC9rdi1lcnJvcj5cclxuXHJcblxyXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgPGxpbmsgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXVpbGxAMi4wLjIvZGlzdC9xdWlsbC5zbm93LmNzc1wiIHJlbD1cInN0eWxlc2hlZXRcIiAvPlxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvXCIgcmVsPVwic3R5bGVzaGVldFwiPlxyXG4gIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLmpzXCI+PC9zY3JpcHQ+XHJcbiAgPHNjcmlwdCBzcmM9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2thdGV4QDAuMTYuOS9kaXN0L2thdGV4Lm1pbi5qc1wiPjwvc2NyaXB0PlxyXG5cclxuXHJcbiAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3F1aWxsQDIuMC4yL2Rpc3QvcXVpbGwuYnViYmxlLmNzc1wiIC8+XHJcbiAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9oaWdobGlnaHQuanMvMTEuOS4wL3N0eWxlcy9hdG9tLW9uZS1kYXJrLm1pbi5jc3NcIiAvPlxyXG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uY3NzXCIgLz5cclxuXHJcblxyXG4gIDwhLS0gSW1wb3J0IGZvbnRzIC0tPlxyXG5cclxuICA8bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb21cIj5cclxuICA8bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb21cIiBjcm9zc29yaWdpbj5cclxuXHJcbiAgPGxpbmsgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9QmFsb28rMjp3Z2h0QDQwMDs1MDA7NjAwOzcwMDs4MDAmZmFtaWx5PUludGVyOndnaHRAMTAwLi45MDAmZmFtaWx5PUpldEJyYWlucytNb25vOml0YWwsd2dodEAwLDEwMC4uODAwOzEsMTAwLi44MDAmZGlzcGxheT1zd2FwXCIgcmVsPVwic3R5bGVzaGVldFwiPlxyXG4gIDxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUJhbG9vKzI6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmZhbWlseT1JbnRlcjp3Z2h0QDEwMC4uOTAwJmZhbWlseT1KZXRCcmFpbnMrTW9ubzppdGFsLHdnaHRAMCwxMDAuLjgwMDsxLDEwMC4uODAwJmZhbWlseT1Sb2JvdG86aXRhbCx3Z2h0QDAsMTAwOzAsMzAwOzAsNDAwOzAsNTAwOzAsNzAwOzAsOTAwOzEsMTAwOzEsMzAwOzEsNDAwOzEsNTAwOzEsNzAwOzEsOTAwJmRpc3BsYXk9c3dhcFwiIHJlbD1cInN0eWxlc2hlZXRcIj5cclxuIl19
|
|
@@ -108,6 +108,7 @@ import { StepperModule } from 'primeng/stepper';
|
|
|
108
108
|
import { InputGroupModule } from 'primeng/inputgroup';
|
|
109
109
|
import { InputGroupAddonModule } from 'primeng/inputgroupaddon';
|
|
110
110
|
import Quill from 'quill';
|
|
111
|
+
import BlotFormatter from 'quill-blot-formatter';
|
|
111
112
|
import * as i1$5 from 'ngx-loading';
|
|
112
113
|
import { NgxLoadingModule } from 'ngx-loading';
|
|
113
114
|
import { ProgressSpinnerModule } from 'primeng/progressspinner';
|
|
@@ -1675,6 +1676,20 @@ class BasecomponentTable {
|
|
|
1675
1676
|
this.selectedSize = { name: 'Normal', class: 'p-datatable-md', size: 1 };
|
|
1676
1677
|
this.collapsed = false;
|
|
1677
1678
|
this.globalFilterFields = [];
|
|
1679
|
+
this.prepositions = [
|
|
1680
|
+
'de',
|
|
1681
|
+
'da',
|
|
1682
|
+
'do',
|
|
1683
|
+
'em',
|
|
1684
|
+
'no',
|
|
1685
|
+
'na',
|
|
1686
|
+
'para',
|
|
1687
|
+
'por',
|
|
1688
|
+
'com',
|
|
1689
|
+
'a',
|
|
1690
|
+
'o',
|
|
1691
|
+
'e',
|
|
1692
|
+
];
|
|
1678
1693
|
// Entradas
|
|
1679
1694
|
this.selectedItems = [];
|
|
1680
1695
|
this.paginator = true;
|
|
@@ -1816,8 +1831,8 @@ class BasecomponentTable {
|
|
|
1816
1831
|
return this.cpfCnpjPipe.transform(value);
|
|
1817
1832
|
case 'telefone':
|
|
1818
1833
|
return this.telefonePipe.transform(value);
|
|
1819
|
-
|
|
1820
|
-
|
|
1834
|
+
case 'capitalize':
|
|
1835
|
+
return this.transformCapitalize(value);
|
|
1821
1836
|
case 'money':
|
|
1822
1837
|
return this.formatarValor(value);
|
|
1823
1838
|
case 'percentage':
|
|
@@ -1827,6 +1842,21 @@ class BasecomponentTable {
|
|
|
1827
1842
|
}
|
|
1828
1843
|
}
|
|
1829
1844
|
}
|
|
1845
|
+
//Método que transforma um texto para o formato capitalize
|
|
1846
|
+
transformCapitalize(value) {
|
|
1847
|
+
if (!value)
|
|
1848
|
+
return value;
|
|
1849
|
+
return value
|
|
1850
|
+
.split(' ')
|
|
1851
|
+
.map((word, index) => {
|
|
1852
|
+
if (index !== 0 &&
|
|
1853
|
+
this.prepositions.includes(word.toLocaleLowerCase())) {
|
|
1854
|
+
return word.toLocaleLowerCase();
|
|
1855
|
+
}
|
|
1856
|
+
return (word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase());
|
|
1857
|
+
})
|
|
1858
|
+
.join(' ');
|
|
1859
|
+
}
|
|
1830
1860
|
//Metodos de filtragem
|
|
1831
1861
|
onGlobalFilter(table, event) {
|
|
1832
1862
|
this.onFilter.emit(event.target.value);
|
|
@@ -2124,6 +2154,23 @@ class KeevoValidators {
|
|
|
2124
2154
|
return null;
|
|
2125
2155
|
};
|
|
2126
2156
|
}
|
|
2157
|
+
static dateLessThan(startControlName, erroMessage) {
|
|
2158
|
+
return (endControl) => {
|
|
2159
|
+
const parent = endControl.parent;
|
|
2160
|
+
if (!parent)
|
|
2161
|
+
return null;
|
|
2162
|
+
const startControl = parent.get(startControlName);
|
|
2163
|
+
const startDate = startControl.value;
|
|
2164
|
+
const endDate = endControl.value;
|
|
2165
|
+
if (!startDate || !endDate) {
|
|
2166
|
+
return null;
|
|
2167
|
+
}
|
|
2168
|
+
if (startDate < endDate) {
|
|
2169
|
+
return { greaterThan: true, erroMessage: erroMessage };
|
|
2170
|
+
}
|
|
2171
|
+
return null;
|
|
2172
|
+
};
|
|
2173
|
+
}
|
|
2127
2174
|
static min(min, erroMessage) {
|
|
2128
2175
|
return (control) => {
|
|
2129
2176
|
if (Validators.min(min)(control))
|
|
@@ -2708,11 +2755,11 @@ class KvAvatarComponent {
|
|
|
2708
2755
|
event.target.src = this.imageService.userDefaultImage();
|
|
2709
2756
|
}
|
|
2710
2757
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvAvatarComponent, deps: [{ token: ImagensService }, { token: NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2711
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvAvatarComponent, selector: "kv-avatar", inputs: { imageUrl: "imageUrl", borderColor: "borderColor", width: "width", height: "height", btnAlterarFoto: "btnAlterarFoto" }, outputs: { imageUrlChange: "imageUrlChange", removerFotoEvent: "removerFotoEvent" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"image-container\">\r\n <img [src]=\"getImageSrc() || imageService.userDefaultImage()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\" >\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" (click)=\"openFile()\">\r\n <i class=\"
|
|
2758
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvAvatarComponent, selector: "kv-avatar", inputs: { imageUrl: "imageUrl", borderColor: "borderColor", width: "width", height: "height", btnAlterarFoto: "btnAlterarFoto" }, outputs: { imageUrlChange: "imageUrlChange", removerFotoEvent: "removerFotoEvent" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"image-container\">\r\n <img [src]=\"getImageSrc() || imageService.userDefaultImage()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\" >\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" (click)=\"openFile()\">\r\n <i class=\"material-symbols-outlined\">photo_camera</i>\r\n </button>\r\n \r\n <button *ngIf=\"btnAlterarFoto && existeLogo\" class=\"botao-excluir-foto border-circle\" (click)=\"questionRemoverFoto()\">\r\n <i class=\"material-symbols-outlined\">delete</i>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:35px}:root{--kv-primary-color: #29b92d, --kv-secondary-color: #002542, --kv-terciary-color: #f2f3f5, --kv-primary-hover-color: #249a29, --kv-secondary-hover-color: #002038, --kv-terciary-hover-color: #d9dadb, --kv-primary-active-color: #1c801f, --kv-secondary-active-color: #001729, --kv-terciary-active-color: #c0c1c2, --kv-primary-disable-color: #1c801f, --kv-secondary-disable-color: #001729, --kv-terciary-disable-color: #c0c1c2, }img{border-style:solid;border-width:4px;border-radius:50%}.botao-alterar-foto{border-style:none;width:max-content;background-color:#5289b4;color:#000;font-weight:700;cursor:pointer;padding:10px 12px}.botao-alterar-foto i{color:#fff}.botao-excluir-foto{border-style:none;width:max-content;background-color:#5289b4;color:#000;font-weight:700;cursor:pointer;padding:10px 12px}.botao-excluir-foto i{color:#fff}.btn{position:absolute;top:87%;left:87%;transform:translate(-50%,-50%)}.image-container{display:inline-block;position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
2712
2759
|
}
|
|
2713
2760
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvAvatarComponent, decorators: [{
|
|
2714
2761
|
type: Component,
|
|
2715
|
-
args: [{ selector: 'kv-avatar', template: "<div class=\"image-container\">\r\n <img [src]=\"getImageSrc() || imageService.userDefaultImage()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\" >\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" (click)=\"openFile()\">\r\n <i class=\"
|
|
2762
|
+
args: [{ selector: 'kv-avatar', template: "<div class=\"image-container\">\r\n <img [src]=\"getImageSrc() || imageService.userDefaultImage()\" alt=\"Foto\" class=\"container-foto\" [style.border-color]=\"borderColor\" [style.width.px]=\"width\" [style.height.px]=\"height\" (error)=\"handleImageError($event)\" >\r\n <div class=\"btn\">\r\n <input #fileInput *ngIf=\"btnAlterarFoto\" id=\"fotoEscolhida\" type=\"file\" accept=\"image/*\" style=\"display:none\" (change)=\"selectFotoSelecionada($any($event))\">\r\n <button *ngIf=\"btnAlterarFoto && !existeLogo\" class=\"botao-alterar-foto border-circle\" (click)=\"openFile()\">\r\n <i class=\"material-symbols-outlined\">photo_camera</i>\r\n </button>\r\n \r\n <button *ngIf=\"btnAlterarFoto && existeLogo\" class=\"botao-excluir-foto border-circle\" (click)=\"questionRemoverFoto()\">\r\n <i class=\"material-symbols-outlined\">delete</i>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:35px}:root{--kv-primary-color: #29b92d, --kv-secondary-color: #002542, --kv-terciary-color: #f2f3f5, --kv-primary-hover-color: #249a29, --kv-secondary-hover-color: #002038, --kv-terciary-hover-color: #d9dadb, --kv-primary-active-color: #1c801f, --kv-secondary-active-color: #001729, --kv-terciary-active-color: #c0c1c2, --kv-primary-disable-color: #1c801f, --kv-secondary-disable-color: #001729, --kv-terciary-disable-color: #c0c1c2, }img{border-style:solid;border-width:4px;border-radius:50%}.botao-alterar-foto{border-style:none;width:max-content;background-color:#5289b4;color:#000;font-weight:700;cursor:pointer;padding:10px 12px}.botao-alterar-foto i{color:#fff}.botao-excluir-foto{border-style:none;width:max-content;background-color:#5289b4;color:#000;font-weight:700;cursor:pointer;padding:10px 12px}.botao-excluir-foto i{color:#fff}.btn{position:absolute;top:87%;left:87%;transform:translate(-50%,-50%)}.image-container{display:inline-block;position:relative}\n"] }]
|
|
2716
2763
|
}], ctorParameters: () => [{ type: ImagensService }, { type: NotificationService }], propDecorators: { imageUrl: [{
|
|
2717
2764
|
type: Input
|
|
2718
2765
|
}], borderColor: [{
|
|
@@ -2970,8 +3017,13 @@ class KvEditorComponent extends BaseComponentInput {
|
|
|
2970
3017
|
this.onTextChange = new EventEmitter();
|
|
2971
3018
|
this.onSelectionChange = new EventEmitter();
|
|
2972
3019
|
this.updatingEditor = false;
|
|
3020
|
+
/**
|
|
3021
|
+
* caso defina como "text" o texto ira ser enviado sem formatação
|
|
3022
|
+
*/
|
|
3023
|
+
this.contentType = 'html';
|
|
2973
3024
|
}
|
|
2974
3025
|
ngOnInit() {
|
|
3026
|
+
super.ngOnInit();
|
|
2975
3027
|
if (!this.quill) {
|
|
2976
3028
|
this.initializeQuillEditor();
|
|
2977
3029
|
}
|
|
@@ -2990,10 +3042,12 @@ class KvEditorComponent extends BaseComponentInput {
|
|
|
2990
3042
|
Quill.register(SizeStyle, true);
|
|
2991
3043
|
Quill.register(Font, true);
|
|
2992
3044
|
Quill.register(Size, true);
|
|
3045
|
+
Quill.register('modules/blotFormatter', BlotFormatter);
|
|
2993
3046
|
this.quill = new Quill('#kv-editor', {
|
|
2994
3047
|
theme: 'snow',
|
|
2995
3048
|
modules: {
|
|
2996
3049
|
toolbar: '#kv-editor-toolbar',
|
|
3050
|
+
blotFormatter: {}
|
|
2997
3051
|
},
|
|
2998
3052
|
placeholder: this.label ? this.label : '',
|
|
2999
3053
|
readOnly: this.readonly,
|
|
@@ -3009,7 +3063,14 @@ class KvEditorComponent extends BaseComponentInput {
|
|
|
3009
3063
|
this.quill.on('text-change', (delta, oldContents, source) => {
|
|
3010
3064
|
if (!this.updatingEditor) {
|
|
3011
3065
|
this.updatingEditor = false;
|
|
3012
|
-
|
|
3066
|
+
switch (this.contentType) {
|
|
3067
|
+
case 'html':
|
|
3068
|
+
this.escrevaValor(this.quill.getSemanticHTML());
|
|
3069
|
+
break;
|
|
3070
|
+
case 'text':
|
|
3071
|
+
this.escrevaValor(this.quill.getText());
|
|
3072
|
+
break;
|
|
3073
|
+
}
|
|
3013
3074
|
this.onTextChange.emit({ delta: delta, oldContents: oldContents, source: source });
|
|
3014
3075
|
}
|
|
3015
3076
|
});
|
|
@@ -3026,14 +3087,16 @@ class KvEditorComponent extends BaseComponentInput {
|
|
|
3026
3087
|
}
|
|
3027
3088
|
this.updatingEditor = false;
|
|
3028
3089
|
this.value = value;
|
|
3090
|
+
if (this.value == '<p><br></p>' || this.value == "\n")
|
|
3091
|
+
this.value = '';
|
|
3029
3092
|
}
|
|
3030
3093
|
}
|
|
3031
3094
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, deps: [{ token: ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3032
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { readonly: "readonly", canvaHeigth: "canvaHeigth", debug: "debug" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange" }, providers: ComponentProviders(KvEditorComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\">\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\"></div>\r\n</div>\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n
|
|
3095
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { readonly: "readonly", canvaHeigth: "canvaHeigth", debug: "debug", contentType: "contentType" }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange" }, providers: ComponentProviders(KvEditorComponent), usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{border-top-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }] }); }
|
|
3033
3096
|
}
|
|
3034
3097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, decorators: [{
|
|
3035
3098
|
type: Component,
|
|
3036
|
-
args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\">\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\"></div>\r\n</div>\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n
|
|
3099
|
+
args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{'error-border-toolbar': hasControlError()}\" >\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"monospace\">Monospace</option>\r\n <option value=\"inter\">Inter</option>\r\n <option selected>Sans Serif</option>\r\n <option value=\"serif\">Serif</option>\r\n </select>\r\n\r\n <select class=\"ql-header\">\r\n <option value=\"1\">Titulo</option>\r\n <option value=\"2\">Subtitulo</option>\r\n <option selected>Normal</option>\r\n </select>\r\n\r\n <span class=\"ql-format-group\">\r\n <select title=\"Size\" class=\"ql-size\">\r\n <option value=\"15px\">15px</option>\r\n <option value=\"20px\">20px</option>\r\n <option value=\"30px\">30px</option>\r\n <option value=\"40px\">40px</option>\r\n <option value=\"50px\">50px</option>\r\n <option value=\"70px\">70px</option>\r\n <option value=\"90px\">90px</option>\r\n </select>\r\n </span>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-bold\"></button>\r\n <button class=\"ql-italic\"></button>\r\n <button class=\"ql-underline\"></button>\r\n <button class=\"ql-strike\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <select class=\"ql-color\"></select>\r\n <select class=\"ql-background\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-script\" value=\"sub\"></button>\r\n <button class=\"ql-script\" value=\"super\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n <button class=\"ql-blockquote\"></button>\r\n <button class=\"ql-code-block\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-list\" value=\"ordered\"></button>\r\n <button class=\"ql-list\" value=\"bullet\"></button>\r\n <button class=\"ql-indent\" value=\"-1\"></button>\r\n <button class=\"ql-indent\" value=\"+1\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-direction\" value=\"rtl\"></button>\r\n <select class=\"ql-align\"></select>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-link\"></button>\r\n <button class=\"ql-image\"></button>\r\n <button class=\"ql-video\"></button>\r\n </span>\r\n\r\n <span class=\"ql-formats\">\r\n <button class=\"ql-clean\"></button>\r\n </span>\r\n </div>\r\n\r\n <div id=\"kv-editor\" [style.height]=\"canvaHeigth\" [ngClass]=\"{'error-border': hasControlError()}\" ></div>\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n\r\n\r\n<!------------------------------------------------------------------------------------------------------------------->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\" />\r\n <link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">\r\n <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\r\n <script src=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js\"></script>\r\n\r\n\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.bubble.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css\" />\r\n <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css\" />\r\n\r\n\r\n <!-- Import fonts -->\r\n\r\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&display=swap\" rel=\"stylesheet\">\r\n <link href=\"https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Inter:wght@100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\" rel=\"stylesheet\">\r\n", styles: [":host ::ng-deep .ql-font-roboto{font-family:Roboto,sans-serif}:host ::ng-deep .ql-font-inter{font-family:Inter var,sans-serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:10px 10px 0 0}:host ::ng-deep #kv-editor{border-radius:0 0 10px 10px}.error-border-toolbar{border-top-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}\n"] }]
|
|
3037
3100
|
}], ctorParameters: () => [{ type: ComponentService }], propDecorators: { readonly: [{
|
|
3038
3101
|
type: Input
|
|
3039
3102
|
}], canvaHeigth: [{
|
|
@@ -3044,6 +3107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
3044
3107
|
type: Output
|
|
3045
3108
|
}], onSelectionChange: [{
|
|
3046
3109
|
type: Output
|
|
3110
|
+
}], contentType: [{
|
|
3111
|
+
type: Input
|
|
3047
3112
|
}] } });
|
|
3048
3113
|
|
|
3049
3114
|
class kvErrorModule {
|