keevo-components 2.0.279 → 2.0.281

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.
@@ -71,7 +71,8 @@ export class KvEditorMentionService {
71
71
  class="variavel-inserida"
72
72
  title="${variable.descricao}">${variable.descricao}</span>&nbsp;`;
73
73
  const insertedTextLength = variable.descricao.length + 1;
74
- const Delta = Quill.import('delta');
74
+ const Q = Quill.import ? Quill : Quill.default;
75
+ const Delta = Q.import('delta');
75
76
  const insertionDelta = quill.clipboard.convert({ html: variableHtml });
76
77
  quill.updateContents(new Delta()
77
78
  .retain(startIndex)
@@ -118,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
118
119
  providedIn: 'root'
119
120
  }]
120
121
  }] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Ivc2VydmljZXMva3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFLVSxzQkFBaUIsR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO0tBcUkvQztJQW5JQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxLQUFZLEVBQUUsU0FBNkI7UUFLdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLENBQUMs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QUF0QixzQkFBc0IsY0FGckIsTUFBTTs7MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgUXVpbGwgZnJvbSAncXVpbGwnO1xyXG5pbXBvcnQgeyBLdkVkaXRvclZhcmlhdmVsIH0gZnJvbSAnLi4vdHlwZXMva3YtZWRpdG9yLnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RWRpdG9yTWVudGlvblNlcnZpY2Uge1xyXG4gIFxyXG4gIHByaXZhdGUgZmlsdGVyZWRWYXJpYWJsZXMgPSBzaWduYWw8S3ZFZGl0b3JWYXJpYXZlbFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBtZW50aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBtZW50aW9uRW5kSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzYSBvIHNpc3RlbWEgZGUgbWVuw6fDtWVzIGR1cmFudGUgYSBkaWdpdGHDp8Ojb1xyXG4gICAqL1xyXG4gIGhhbmRsZU1lbnRpb24ocXVpbGw6IFF1aWxsLCB2YXJpYXZlaXM6IEt2RWRpdG9yVmFyaWF2ZWxbXSk6IHtcclxuICAgIHNob3VsZFNob3dQYW5lbDogYm9vbGVhbjtcclxuICAgIGZpbHRlcmVkVmFyaWFibGVzOiBLdkVkaXRvclZhcmlhdmVsW107XHJcbiAgICBtZW50aW9uQm91bmRzPzogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH07XHJcbiAgfSB7XHJcbiAgICBjb25zdCByYW5nZSA9IHF1aWxsLmdldFNlbGVjdGlvbigpO1xyXG4gICAgaWYgKCFyYW5nZSkge1xyXG4gICAgICB0aGlzLmNsb3NlTWVudGlvbigpO1xyXG4gICAgICByZXR1cm4geyBzaG91bGRTaG93UGFuZWw6IGZhbHNlLCBmaWx0ZXJlZFZhcmlhYmxlczogW10gfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0ZXh0ID0gcXVpbGwuZ2V0VGV4dCgwLCByYW5nZS5pbmRleCk7XHJcbiAgICBjb25zdCBsYXN0SGFzaEluZGV4ID0gdGV4dC5sYXN0SW5kZXhPZignIycpO1xyXG5cclxuICAgIGlmIChsYXN0SGFzaEluZGV4ICE9PSAtMSAmJiAhL1xccy8udGVzdCh0ZXh0LnN1YnN0cmluZyhsYXN0SGFzaEluZGV4ICsgMSkpKSB7XHJcbiAgICAgIHRoaXMubWVudGlvblN0YXJ0SW5kZXggPSBsYXN0SGFzaEluZGV4O1xyXG4gICAgICB0aGlzLm1lbnRpb25FbmRJbmRleCA9IHJhbmdlLmluZGV4O1xyXG5cclxuICAgICAgY29uc3Qgc2VhcmNoVGVybSA9IHRleHQuc3Vic3RyaW5nKGxhc3RIYXNoSW5kZXggKyAxKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHZhcmlhdmVpcy5maWx0ZXIodiA9PiBcclxuICAgICAgICB2LmRlc2NyaWNhby50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRlcm0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmZpbHRlcmVkVmFyaWFibGVzLnNldChmaWx0ZXJlZCk7XHJcblxyXG4gICAgICBpZiAoZmlsdGVyZWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGJvdW5kcyA9IHRoaXMuY2FsY3VsYXRlTWVudGlvbkJvdW5kcyhxdWlsbCwgbGFzdEhhc2hJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHNob3VsZFNob3dQYW5lbDogdHJ1ZSxcclxuICAgICAgICAgIGZpbHRlcmVkVmFyaWFibGVzOiBmaWx0ZXJlZCxcclxuICAgICAgICAgIG1lbnRpb25Cb3VuZHM6IGJvdW5kc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlTWVudGlvbigpO1xyXG4gICAgcmV0dXJuIHsgc2hvdWxkU2hvd1BhbmVsOiBmYWxzZSwgZmlsdGVyZWRWYXJpYWJsZXM6IFtdIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhIGEgcG9zacOnw6NvIG9uZGUgbyBwYWluZWwgZGUgbWVuw6fDtWVzIGRldmUgYXBhcmVjZXJcclxuICAgKi9cclxuICBwcml2YXRlIGNhbGN1bGF0ZU1lbnRpb25Cb3VuZHMocXVpbGw6IFF1aWxsLCBsYXN0SGFzaEluZGV4OiBudW1iZXIpOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB7XHJcbiAgICBjb25zdCBlZGl0b3JFbCA9IChxdWlsbCBhcyBhbnkpLmNvbnRhaW5lciB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcja3YtZWRpdG9yJyk7XHJcbiAgICBpZiAoIWVkaXRvckVsKSByZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcclxuXHJcbiAgICBjb25zdCBlZGl0b3JSZWN0ID0gZWRpdG9yRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBcclxuICAgIC8vIFNpbXBsaWZpY2FkbyBwYXJhIHNlbXByZSB0ZW50YXIgdXNhciBnZXRCb3VuZHMoKVxyXG4gICAgY29uc3QgY3Vyc29yQm91bmRzID0gcXVpbGwuZ2V0Qm91bmRzKGxhc3RIYXNoSW5kZXgpO1xyXG4gICAgXHJcbiAgICBpZiAoY3Vyc29yQm91bmRzKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdG9wOiBlZGl0b3JSZWN0LnRvcCArIGN1cnNvckJvdW5kcy5ib3R0b20sXHJcbiAgICAgICAgbGVmdDogZWRpdG9yUmVjdC5sZWZ0ICsgY3Vyc29yQm91bmRzLmxlZnRcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG9wOiBlZGl0b3JSZWN0LnRvcCArIDUsXHJcbiAgICAgIGxlZnQ6IGVkaXRvclJlY3QubGVmdCArIDVcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnNlcmUgdW1hIHZhcmnDoXZlbCBzZWxlY2lvbmFkYSBubyBlZGl0b3JcclxuICAgKi9cclxuICBpbnNlcnRWYXJpYWJsZShxdWlsbDogUXVpbGwsIHZhcmlhYmxlOiBLdkVkaXRvclZhcmlhdmVsKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5tZW50aW9uU3RhcnRJbmRleDtcclxuICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy5tZW50aW9uRW5kSW5kZXg7XHJcblxyXG4gICAgaWYgKHN0YXJ0SW5kZXggPT09IG51bGwgfHwgZW5kSW5kZXggPT09IG51bGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBsZW5ndGhUb0RlbGV0ZSA9IGVuZEluZGV4IC0gc3RhcnRJbmRleDtcclxuICAgIGNvbnN0IHZhcmlhYmxlSHRtbCA9IGA8c3BhbiBcclxuICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNlNmY3ZmY7IGNvbG9yOiAjMDA2NmNjOyBib3JkZXItcmFkaXVzOiAzcHg7IHBhZGRpbmc6IDJweCA0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhcmlhdmVsLWluc2VyaWRhXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCIke3ZhcmlhYmxlLmRlc2NyaWNhb31cIj4ke3ZhcmlhYmxlLmRlc2NyaWNhb308L3NwYW4+Jm5ic3A7YDtcclxuICAgIFxyXG4gICAgY29uc3QgaW5zZXJ0ZWRUZXh0TGVuZ3RoID0gdmFyaWFibGUuZGVzY3JpY2FvLmxlbmd0aCArIDE7XHJcbiAgICBjb25zdCBEZWx0YSA9IFF1aWxsLmltcG9ydCgnZGVsdGEnKTtcclxuICAgIGNvbnN0IGluc2VydGlvbkRlbHRhID0gcXVpbGwuY2xpcGJvYXJkLmNvbnZlcnQoeyBodG1sOiB2YXJpYWJsZUh0bWwgfSk7XHJcblxyXG4gICAgcXVpbGwudXBkYXRlQ29udGVudHMoXHJcbiAgICAgIG5ldyBEZWx0YSgpXHJcbiAgICAgICAgLnJldGFpbihzdGFydEluZGV4KVxyXG4gICAgICAgIC5kZWxldGUobGVuZ3RoVG9EZWxldGUpXHJcbiAgICAgICAgLmNvbmNhdChpbnNlcnRpb25EZWx0YSksXHJcbiAgICAgICd1c2VyJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDdXJzb3JQb3NpdGlvbiA9IHN0YXJ0SW5kZXggKyBpbnNlcnRlZFRleHRMZW5ndGg7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgcXVpbGwuc2V0U2VsZWN0aW9uKG5ld0N1cnNvclBvc2l0aW9uLCAwLCAndXNlcicpO1xyXG4gICAgICBxdWlsbC5mb2N1cygpO1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5jbG9zZU1lbnRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZlY2hhIG8gc2lzdGVtYSBkZSBtZW7Dp8O1ZXNcclxuICAgKi9cclxuICBjbG9zZU1lbnRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnRpb25TdGFydEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMubWVudGlvbkVuZEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyZWRWYXJpYWJsZXMuc2V0KFtdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idMOpbSBhcyB2YXJpw6F2ZWlzIGZpbHRyYWRhc1xyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkVmFyaWFibGVzKCk6IEt2RWRpdG9yVmFyaWF2ZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhcmlhYmxlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JpYSB1bWEgcmVnZXggZXNwZWNpYWwgcGFyYSBidXNjYSBlbSB0ZXh0byBjb20gSFRNTFxyXG4gICAqL1xyXG4gIGNyZWF0ZUludGVybGVhdmVkUmVnZXgodGV4dDogc3RyaW5nKTogUmVnRXhwIHtcclxuICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2c7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gdGV4dFxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5tYXAoY2hhciA9PiBjaGFyLnJlcGxhY2Uoc3BlY2lhbENoYXJzLCAnXFxcXCQmJykpXHJcbiAgICAgIC5qb2luKCcoPFtePl0qPikqJyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgJ2dpJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Ivc2VydmljZXMva3YtZWRpdG9yLW1lbnRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBTTFCLE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFLVSxzQkFBaUIsR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO0tBc0kvQztJQXBJQzs7T0FFRztJQUNILGFBQWEsQ0FBQyxLQUFZLEVBQUUsU0FBNkI7UUFLdkQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLENBQUMs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QVksQ0FBQyxDQUFDO1FBRXRCLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBeklVLHNCQUFzQjtrSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuaW1wb3J0IHsgS3ZFZGl0b3JWYXJpYXZlbCB9IGZyb20gJy4uL3R5cGVzL2t2LWVkaXRvci50eXBlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkVkaXRvck1lbnRpb25TZXJ2aWNlIHtcclxuICBcclxuICBwcml2YXRlIGZpbHRlcmVkVmFyaWFibGVzID0gc2lnbmFsPEt2RWRpdG9yVmFyaWF2ZWxbXT4oW10pO1xyXG4gIHByaXZhdGUgbWVudGlvblN0YXJ0SW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgbWVudGlvbkVuZEluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogUHJvY2Vzc2EgbyBzaXN0ZW1hIGRlIG1lbsOnw7VlcyBkdXJhbnRlIGEgZGlnaXRhw6fDo29cclxuICAgKi9cclxuICBoYW5kbGVNZW50aW9uKHF1aWxsOiBRdWlsbCwgdmFyaWF2ZWlzOiBLdkVkaXRvclZhcmlhdmVsW10pOiB7XHJcbiAgICBzaG91bGRTaG93UGFuZWw6IGJvb2xlYW47XHJcbiAgICBmaWx0ZXJlZFZhcmlhYmxlczogS3ZFZGl0b3JWYXJpYXZlbFtdO1xyXG4gICAgbWVudGlvbkJvdW5kcz86IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9O1xyXG4gIH0ge1xyXG4gICAgY29uc3QgcmFuZ2UgPSBxdWlsbC5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGlmICghcmFuZ2UpIHtcclxuICAgICAgdGhpcy5jbG9zZU1lbnRpb24oKTtcclxuICAgICAgcmV0dXJuIHsgc2hvdWxkU2hvd1BhbmVsOiBmYWxzZSwgZmlsdGVyZWRWYXJpYWJsZXM6IFtdIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGV4dCA9IHF1aWxsLmdldFRleHQoMCwgcmFuZ2UuaW5kZXgpO1xyXG4gICAgY29uc3QgbGFzdEhhc2hJbmRleCA9IHRleHQubGFzdEluZGV4T2YoJyMnKTtcclxuXHJcbiAgICBpZiAobGFzdEhhc2hJbmRleCAhPT0gLTEgJiYgIS9cXHMvLnRlc3QodGV4dC5zdWJzdHJpbmcobGFzdEhhc2hJbmRleCArIDEpKSkge1xyXG4gICAgICB0aGlzLm1lbnRpb25TdGFydEluZGV4ID0gbGFzdEhhc2hJbmRleDtcclxuICAgICAgdGhpcy5tZW50aW9uRW5kSW5kZXggPSByYW5nZS5pbmRleDtcclxuXHJcbiAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSB0ZXh0LnN1YnN0cmluZyhsYXN0SGFzaEluZGV4ICsgMSkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgZmlsdGVyZWQgPSB2YXJpYXZlaXMuZmlsdGVyKHYgPT4gXHJcbiAgICAgICAgdi5kZXNjcmljYW8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5maWx0ZXJlZFZhcmlhYmxlcy5zZXQoZmlsdGVyZWQpO1xyXG5cclxuICAgICAgaWYgKGZpbHRlcmVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmNhbGN1bGF0ZU1lbnRpb25Cb3VuZHMocXVpbGwsIGxhc3RIYXNoSW5kZXgpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzaG91bGRTaG93UGFuZWw6IHRydWUsXHJcbiAgICAgICAgICBmaWx0ZXJlZFZhcmlhYmxlczogZmlsdGVyZWQsXHJcbiAgICAgICAgICBtZW50aW9uQm91bmRzOiBib3VuZHNcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbG9zZU1lbnRpb24oKTtcclxuICAgIHJldHVybiB7IHNob3VsZFNob3dQYW5lbDogZmFsc2UsIGZpbHRlcmVkVmFyaWFibGVzOiBbXSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsY3VsYSBhIHBvc2nDp8OjbyBvbmRlIG8gcGFpbmVsIGRlIG1lbsOnw7VlcyBkZXZlIGFwYXJlY2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVNZW50aW9uQm91bmRzKHF1aWxsOiBRdWlsbCwgbGFzdEhhc2hJbmRleDogbnVtYmVyKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xyXG4gICAgY29uc3QgZWRpdG9yRWwgPSAocXVpbGwgYXMgYW55KS5jb250YWluZXIgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2t2LWVkaXRvcicpO1xyXG4gICAgaWYgKCFlZGl0b3JFbCkgcmV0dXJuIHsgdG9wOiAwLCBsZWZ0OiAwIH07XHJcblxyXG4gICAgY29uc3QgZWRpdG9yUmVjdCA9IGVkaXRvckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgXHJcbiAgICAvLyBTaW1wbGlmaWNhZG8gcGFyYSBzZW1wcmUgdGVudGFyIHVzYXIgZ2V0Qm91bmRzKClcclxuICAgIGNvbnN0IGN1cnNvckJvdW5kcyA9IHF1aWxsLmdldEJvdW5kcyhsYXN0SGFzaEluZGV4KTtcclxuICAgIFxyXG4gICAgaWYgKGN1cnNvckJvdW5kcykge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHRvcDogZWRpdG9yUmVjdC50b3AgKyBjdXJzb3JCb3VuZHMuYm90dG9tLFxyXG4gICAgICAgIGxlZnQ6IGVkaXRvclJlY3QubGVmdCArIGN1cnNvckJvdW5kcy5sZWZ0XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRvcDogZWRpdG9yUmVjdC50b3AgKyA1LFxyXG4gICAgICBsZWZ0OiBlZGl0b3JSZWN0LmxlZnQgKyA1XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJlIHVtYSB2YXJpw6F2ZWwgc2VsZWNpb25hZGEgbm8gZWRpdG9yXHJcbiAgICovXHJcbiAgaW5zZXJ0VmFyaWFibGUocXVpbGw6IFF1aWxsLCB2YXJpYWJsZTogS3ZFZGl0b3JWYXJpYXZlbCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMubWVudGlvblN0YXJ0SW5kZXg7XHJcbiAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMubWVudGlvbkVuZEluZGV4O1xyXG5cclxuICAgIGlmIChzdGFydEluZGV4ID09PSBudWxsIHx8IGVuZEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgbGVuZ3RoVG9EZWxldGUgPSBlbmRJbmRleCAtIHN0YXJ0SW5kZXg7XHJcbiAgICBjb25zdCB2YXJpYWJsZUh0bWwgPSBgPHNwYW4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmN2ZmOyBjb2xvcjogIzAwNjZjYzsgYm9yZGVyLXJhZGl1czogM3B4OyBwYWRkaW5nOiAycHggNHB4OyBmb250LXdlaWdodDogNTAwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YXJpYXZlbC1pbnNlcmlkYVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiJHt2YXJpYWJsZS5kZXNjcmljYW99XCI+JHt2YXJpYWJsZS5kZXNjcmljYW99PC9zcGFuPiZuYnNwO2A7XHJcbiAgICBcclxuICAgIGNvbnN0IGluc2VydGVkVGV4dExlbmd0aCA9IHZhcmlhYmxlLmRlc2NyaWNhby5sZW5ndGggKyAxO1xyXG4gICAgY29uc3QgUTogYW55ID0gKFF1aWxsIGFzIGFueSkuaW1wb3J0ID8gUXVpbGwgOiAoUXVpbGwgYXMgYW55KS5kZWZhdWx0O1xyXG4gICAgY29uc3QgRGVsdGEgPSBRLmltcG9ydCgnZGVsdGEnKTtcclxuICAgIGNvbnN0IGluc2VydGlvbkRlbHRhID0gcXVpbGwuY2xpcGJvYXJkLmNvbnZlcnQoeyBodG1sOiB2YXJpYWJsZUh0bWwgfSk7XHJcblxyXG4gICAgcXVpbGwudXBkYXRlQ29udGVudHMoXHJcbiAgICAgIG5ldyBEZWx0YSgpXHJcbiAgICAgICAgLnJldGFpbihzdGFydEluZGV4KVxyXG4gICAgICAgIC5kZWxldGUobGVuZ3RoVG9EZWxldGUpXHJcbiAgICAgICAgLmNvbmNhdChpbnNlcnRpb25EZWx0YSksXHJcbiAgICAgICd1c2VyJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBuZXdDdXJzb3JQb3NpdGlvbiA9IHN0YXJ0SW5kZXggKyBpbnNlcnRlZFRleHRMZW5ndGg7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgcXVpbGwuc2V0U2VsZWN0aW9uKG5ld0N1cnNvclBvc2l0aW9uLCAwLCAndXNlcicpO1xyXG4gICAgICBxdWlsbC5mb2N1cygpO1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5jbG9zZU1lbnRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZlY2hhIG8gc2lzdGVtYSBkZSBtZW7Dp8O1ZXNcclxuICAgKi9cclxuICBjbG9zZU1lbnRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lbnRpb25TdGFydEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMubWVudGlvbkVuZEluZGV4ID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyZWRWYXJpYWJsZXMuc2V0KFtdKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9idMOpbSBhcyB2YXJpw6F2ZWlzIGZpbHRyYWRhc1xyXG4gICAqL1xyXG4gIGdldEZpbHRlcmVkVmFyaWFibGVzKCk6IEt2RWRpdG9yVmFyaWF2ZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFZhcmlhYmxlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JpYSB1bWEgcmVnZXggZXNwZWNpYWwgcGFyYSBidXNjYSBlbSB0ZXh0byBjb20gSFRNTFxyXG4gICAqL1xyXG4gIGNyZWF0ZUludGVybGVhdmVkUmVnZXgodGV4dDogc3RyaW5nKTogUmVnRXhwIHtcclxuICAgIGNvbnN0IHNwZWNpYWxDaGFycyA9IC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2c7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gdGV4dFxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5tYXAoY2hhciA9PiBjaGFyLnJlcGxhY2Uoc3BlY2lhbENoYXJzLCAnXFxcXCQmJykpXHJcbiAgICAgIC5qb2luKCcoPFtePl0qPikqJyk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgJ2dpJyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -5376,7 +5376,8 @@ class KvEditorMentionService {
5376
5376
  class="variavel-inserida"
5377
5377
  title="${variable.descricao}">${variable.descricao}</span>&nbsp;`;
5378
5378
  const insertedTextLength = variable.descricao.length + 1;
5379
- const Delta = Quill.import('delta');
5379
+ const Q = Quill.import ? Quill : Quill.default;
5380
+ const Delta = Q.import('delta');
5380
5381
  const insertionDelta = quill.clipboard.convert({ html: variableHtml });
5381
5382
  quill.updateContents(new Delta()
5382
5383
  .retain(startIndex)
@@ -5840,7 +5841,6 @@ class KvEditorComponent extends BaseComponentInput {
5840
5841
  this.editorReadyResolver = resolve;
5841
5842
  });
5842
5843
  this.htmlDoEditor = '';
5843
- this.quillDelta = Quill.import ? Quill.import('delta') : Quill.default.import('delta');
5844
5844
  // Signal para espelhamento do conteúdo do editor
5845
5845
  this.htmlEspelho = signal('');
5846
5846
  this.previewContent = signal('');
@@ -5898,26 +5898,9 @@ class KvEditorComponent extends BaseComponentInput {
5898
5898
  }
5899
5899
  });
5900
5900
  }
5901
- toggleFullscreen() {
5902
- this.isFullscreen.update(v => !v);
5903
- }
5904
- // Métodos para gerenciar relatórios
5905
- setRelatorioPorId(id) {
5906
- const relatorio = this.relatorioService.setRelatorioPorId(id);
5907
- if (relatorio) {
5908
- this.setRelatorio(relatorio);
5909
- }
5910
- }
5911
- setRelatorio(relatorio) {
5912
- this.clearedTemplate.set(false);
5913
- this.relatorioService.setRelatorio(relatorio);
5914
- const modelo = relatorio.modeloRelatorio || '';
5915
- const variaveis = relatorio.variaveis || [];
5916
- this.htmlDoEditor = this.relatorioService.renderContrato(modelo, variaveis);
5917
- this.updatingEditor = true;
5918
- this.escrevaValor(this.htmlDoEditor);
5919
- }
5920
5901
  ngOnInit() {
5902
+ const Q = Quill.import ? Quill : Quill.default;
5903
+ this.quillDelta = Q.import('delta');
5921
5904
  super.ngOnInit();
5922
5905
  // Inicializa os relatórios no serviço
5923
5906
  this.relatorioService.setRelatorios(this.relatorios());
@@ -5949,6 +5932,25 @@ class KvEditorComponent extends BaseComponentInput {
5949
5932
  }
5950
5933
  });
5951
5934
  }
5935
+ toggleFullscreen() {
5936
+ this.isFullscreen.update(v => !v);
5937
+ }
5938
+ // Métodos para gerenciar relatórios
5939
+ setRelatorioPorId(id) {
5940
+ const relatorio = this.relatorioService.setRelatorioPorId(id);
5941
+ if (relatorio) {
5942
+ this.setRelatorio(relatorio);
5943
+ }
5944
+ }
5945
+ setRelatorio(relatorio) {
5946
+ this.clearedTemplate.set(false);
5947
+ this.relatorioService.setRelatorio(relatorio);
5948
+ const modelo = relatorio.modeloRelatorio || '';
5949
+ const variaveis = relatorio.variaveis || [];
5950
+ this.htmlDoEditor = this.relatorioService.renderContrato(modelo, variaveis);
5951
+ this.updatingEditor = true;
5952
+ this.escrevaValor(this.htmlDoEditor);
5953
+ }
5952
5954
  async handleInit() {
5953
5955
  await this.quillService.loadCss();
5954
5956
  this.initializeQuillEditor();
@@ -6505,11 +6507,11 @@ class KvEditorComponent extends BaseComponentInput {
6505
6507
  }, 10);
6506
6508
  }
6507
6509
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, deps: [{ token: ComponentService }, { token: i1$6.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
6508
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { canvaHeigth: { classPropertyName: "canvaHeigth", publicName: "canvaHeigth", isSignal: false, isRequired: false, transformFunction: null }, contentType: { classPropertyName: "contentType", publicName: "contentType", isSignal: false, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: false, isRequired: false, transformFunction: null }, enablePreviewMode: { classPropertyName: "enablePreviewMode", publicName: "enablePreviewMode", isSignal: true, isRequired: false, transformFunction: null }, showVariableValuesInPreview: { classPropertyName: "showVariableValuesInPreview", publicName: "showVariableValuesInPreview", isSignal: true, isRequired: false, transformFunction: null }, showVariableValueFirst: { classPropertyName: "showVariableValueFirst", publicName: "showVariableValueFirst", isSignal: true, isRequired: false, transformFunction: null }, relatorios: { classPropertyName: "relatorios", publicName: "relatorios", isSignal: true, isRequired: false, transformFunction: null }, idRelatorioInitial: { classPropertyName: "idRelatorioInitial", publicName: "idRelatorioInitial", isSignal: true, isRequired: false, transformFunction: null }, printButton: { classPropertyName: "printButton", publicName: "printButton", isSignal: true, isRequired: false, transformFunction: null }, labelEmptyDropdown: { classPropertyName: "labelEmptyDropdown", publicName: "labelEmptyDropdown", isSignal: true, isRequired: false, transformFunction: null }, instrucoesTemplate: { classPropertyName: "instrucoesTemplate", publicName: "instrucoesTemplate", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabledEditor: { classPropertyName: "disabledEditor", publicName: "disabledEditor", isSignal: true, isRequired: false, transformFunction: null }, showHeaderButtons: { classPropertyName: "showHeaderButtons", publicName: "showHeaderButtons", isSignal: true, isRequired: false, transformFunction: null }, showAlphaCrmButtons: { classPropertyName: "showAlphaCrmButtons", publicName: "showAlphaCrmButtons", isSignal: true, isRequired: false, transformFunction: null }, showAlphaContratoButtons: { classPropertyName: "showAlphaContratoButtons", publicName: "showAlphaContratoButtons", isSignal: true, isRequired: false, transformFunction: null }, enableButtonInsert: { classPropertyName: "enableButtonInsert", publicName: "enableButtonInsert", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", outputRaw: "outputRaw", outputHtml: "outputHtml", previewHtmlOutput: "previewHtmlOutput", onCustomButtonClick: "onCustomButtonClick", idRelatorioInitial: "idRelatorioInitialChange" }, providers: ComponentProviders(KvEditorComponent), viewQueries: [{ propertyName: "opVariables", first: true, predicate: ["opVariables"], descendants: true }, { propertyName: "mentionAnchor", first: true, predicate: ["mentionAnchor"], descendants: true }, { propertyName: "buttonNameTooltip", first: true, predicate: ["buttonNameTooltip"], descendants: true }, { propertyName: "buttonNameInput", first: true, predicate: ["buttonNameInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container h-full w-full max-h-full flex flex-column overflow-hidden\"\r\n [class.pointer-events-none]=\"disabledEditor()\" [class.opacity-60]=\"disabledEditor()\"\r\n [class.kv-editor-fullscreen]=\"isFullscreen()\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{ 'error-border-toolbar': hasControlError() }\"\r\n class=\"{{ showHeader() ? 'flex' : 'hidden' }} flex-column flex-initial ql-toolbar ql-snow\">\r\n @if(showHeaderButtons()) {\r\n @if(relatorios().length > 0) {\r\n <div\r\n class=\"flex flex-row justify-content-between {{(readonly() || disabledEditor()) && 'pointer-events-none opacity-90'}}\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"op.toggle($event)\">\r\n <span class=\"material-symbols-outlined text-lg text-green-600 font-medium\">\r\n contract\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">{{\r\n !clearedTemplate()\r\n ? relatorio()?.label || labelEmptyDropdown()\r\n : labelEmptyDropdown()\r\n }}</span>\r\n <span class=\"material-symbols-outlined text-lg\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n\r\n @if(!clearedTemplate()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"clearTemplate()\">\r\n <span class=\"material-symbols-outlined text-lg text-orange-600 font-medium\" [pTooltip]=\"'Limpar Template'\">\r\n layers_clear\r\n </span>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"showInstrucoes()\">\r\n <span class=\"material-symbols-outlined text-lg text-blue-600 font-medium\">\r\n info\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Instru\u00E7\u00F5es</span>\r\n </div>\r\n </div>\r\n\r\n <!-- @if(printButton()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"openRelatorio()\"\r\n >\r\n <span class=\"material-symbols-outlined text-lg font-medium\">\r\n print\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Imprimir</span>\r\n </div>\r\n } -->\r\n </div>\r\n\r\n <p-divider class=\"w-full\"></p-divider>\r\n\r\n }\r\n }\r\n\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between w-full flex-initial\">\r\n @if(isLoading()) {\r\n\r\n <div class=\"flex flex-row align-items-center gap-3 w-full\">\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n </div>\r\n }\r\n\r\n <div class=\"flex-row align-items-center flex-wrap gap-2 {{\r\n isLoading() ? 'hidden' : 'flex'\r\n }} w-full\">\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"arial\">Arial</option>\r\n <option value=\"times-new-roman\">Times New Roman</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 <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-bold\" pTooltip=\"Negrito\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-italic\" pTooltip=\"It\u00E1lico\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-underline\" pTooltip=\"Sublinhado\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-strike\" pTooltip=\"Tachado\" tooltipPosition=\"top\"></button>\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-color\" pTooltip=\"Cor da fonte\" tooltipPosition=\"top\"></select>\r\n <select class=\"ql-background\" pTooltip=\"Cor de fundo\" tooltipPosition=\"top\"></select>\r\n </span>\r\n\r\n @if(true) {\r\n <!-- <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n </span> -->\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-link\" pTooltip=\"Inserir link\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-image\" pTooltip=\"Inserir imagem\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-video\" pTooltip=\"Inserir v\u00EDdeo\" tooltipPosition=\"top\"></button>\r\n\r\n @if(enableButtonInsert()) {\r\n <button id=\"insert-custom-button\" pTooltip=\"Inserir bot\u00E3o\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">buttons_alt</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaCrmButtons()) {\r\n <button id=\"btn-alpha-aceitar\" pTooltip=\"Inserir bot\u00E3o Aceitar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_add</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-cancelar\" pTooltip=\"Inserir bot\u00E3o Cancelar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_remove</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-aceitar-assinar\" pTooltip=\"Inserir bot\u00E3o Aceitar e Assinar Contrato\"\r\n tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1px); font-size: 20px;\">new_label</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaContratoButtons()) {\r\n <button id=\"btn-alpha-contrato-assinar\" pTooltip=\"Inserir bot\u00E3o Assinar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_edit</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-contrato-recusar\" pTooltip=\"Inserir bot\u00E3o Recusar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_delete</span>\r\n </button>\r\n }\r\n\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-list\" value=\"ordered\" pTooltip=\"Lista ordenada\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" pTooltip=\"Lista com marcadores\" tooltipPosition=\"top\"></button>\r\n <select class=\"ql-align\" pTooltip=\"Alinhamento\" tooltipPosition=\"top\"></select>\r\n </span>\r\n }\r\n\r\n <div class=\"flex-1 min-w-0\"></div>\r\n <!-- <span class=\"ql-formats m-0 ml-auto flex align-items-center pr-2\">\r\n <button pButton\r\n class=\"p-1 cursor-pointer transition-colors transition-duration-200 bg-transparent border-none text-gray-700 hover:text-blue-600\"\r\n (click)=\"toggleFullscreen()\">\r\n\r\n {{isFullscreen() ? 'Expandir' : 'Reduzir'}}\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 24px;\">{{ isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen' }}</span>\r\n </button>\r\n </span> -->\r\n\r\n <kv-button severity=\"tertiary\" [icon]=\"isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen'\" [label]=\"isFullscreen() ? 'Reduzir' : 'Expandir'\" (onClick)=\"toggleFullscreen()\">\r\n\r\n </kv-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height: 3px; border-top: none; border-bottom: none\"\r\n [style.borderRight]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\"\r\n [style.borderLeft]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\">\r\n @if(isLoadingPdf()) {\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '3px' }\" />\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row flex-1 gap-0 overflow-auto\">\r\n <div id=\"kv-editor\" class=\"overflow-auto flex-1 scrollstyle ql-container ql-snow\" [ngClass]=\"{\r\n 'error-border': hasControlError(),\r\n 'pointer-events-none opacity-60': isLoadingPdf()\r\n }\" [style.borderTop]=\"showHeader() ? 'none' : '1px solid #e5e7eb'\"\r\n [style.borderRight]=\"enablePreviewMode() ? 'none' : '1px solid #e5e7eb'\"></div>\r\n\r\n @if(enablePreviewMode()) {\r\n <div class=\"flex flex-column flex-1\">\r\n <div class=\"flex align-items-center gap-2 px-3 py-2\" [style.borderRight]=\"'1px solid #e5e7eb'\"\r\n [style.borderLeft]=\"'1px solid #e5e7eb'\">\r\n <span class=\"material-symbols-outlined text-blue-600 text-lg\">visibility</span>\r\n <span class=\"font-semibold text-gray-700 text-sm\">Preview</span>\r\n </div>\r\n\r\n <div id=\"kv-editor-preview\" class=\"overflow-auto flex-1 scrollstyle\" [innerHTML]=\"getPreviewContent\"\r\n [style.border]=\"'1px solid #e5e7eb'\"></div>\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\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<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<p-overlayPanel #op styleClass=\"overflow-hidden\">\r\n <div class=\"grid m-0 gap-2 p-2 max-w-20rem overflow-y-auto scrollstyle\" style=\"max-height: 16rem\">\r\n @for(item of relatorios(); track $index) {\r\n <div\r\n class=\"col-12 cursor-pointer hover:bg-gray-100 transition-colors transition-duration-200 border-round-lg shadow-2 flex flex-column gap-2\"\r\n (click)=\"setRelatorio(item)\">\r\n <div class=\"flex flex-row align-items-center gap-2 justify-content-between\">\r\n <span class=\"text-sm font-medium w-full\">{{ item.label }}</span>\r\n\r\n <kv-tags class=\"transition-opacity transition-duration-300 {{\r\n item?.id == idRelatorioSelected() ? 'opacity-100' : 'opacity-0'\r\n }}\" [tags]=\"[{ label: 'Selecionado', severity: 'primary' }]\"></kv-tags>\r\n </div>\r\n <span class=\"text-xs text-gray-500\">{{ item.descricao }}</span>\r\n </div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div class=\"kv-editor-container flex flex-column overflow-hidden relative\">\r\n <div #mentionAnchor style=\"position: fixed; width: 1px; height: 1px; opacity: 0\"></div>\r\n</div>\r\n\r\n<p-overlayPanel #opVariables [appendTo]=\"'body'\" (onHide)=\"closeVariablesPanel()\">\r\n <div class=\"flex flex-column gap-1 p-1 overflow-y-auto scroll-virtual border-round-lg\"\r\n style=\"max-height: 250px; min-width: 250px; background-color: #333333\">\r\n @for(variable of filteredVariables(); track variable.id) {\r\n <div\r\n class=\"p-2 cursor-pointer transition-colors transition-duration-200 border-round-lg text-sm text-white option-dropdown\"\r\n (click)=\"selectVariableFromPanel(variable)\">\r\n @if (showVariableValueFirst()) {\r\n {{ variable.value }} (\r\n <span class=\"text-gray-400\">{{ variable.descricao }}</span> )\r\n } @else {\r\n {{ variable.descricao }} (\r\n <span class=\"text-gray-400\">{{ variable.value }}</span> )\r\n }\r\n </div>\r\n } @empty {\r\n <div class=\"p-2 text-sm text-gray-500\">Nenhuma vari\u00E1vel encontrada.</div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div #buttonNameTooltip class=\"button-name-tooltip\" [class.show]=\"showButtonTooltip()\"\r\n [style.top.px]=\"tooltipPosition().top\" [style.left.px]=\"tooltipPosition().left\">\r\n <div class=\"flex flex-column gap-2 p-3 bg-white border-round-lg shadow-3\" style=\"min-width: 280px\">\r\n <div class=\"flex flex-column gap-1\">\r\n <label class=\"text-sm font-semibold text-gray-700\">Nome do Bot\u00E3o</label>\r\n <input #buttonNameInput type=\"text\" class=\"p-2 border-1 border-gray-300 border-round-md text-sm\"\r\n placeholder=\"Ex: Aceitar Proposta\" [(ngModel)]=\"buttonNameValue\" (keydown.enter)=\"confirmButtonName()\"\r\n (keydown.escape)=\"cancelButtonName()\" />\r\n </div>\r\n <div class=\"flex flex-row gap-2 justify-content-end\">\r\n <button\r\n class=\"px-3 py-2 border-1 border-gray-300 bg-white text-gray-700 border-round-md cursor-pointer text-sm font-medium hover:bg-gray-100 transition-colors\"\r\n (click)=\"cancelButtonName()\">\r\n Cancelar\r\n </button>\r\n <button\r\n class=\"px-3 py-2 border-none bg-blue-600 text-white border-round-md cursor-pointer text-sm font-medium hover:bg-blue-700 transition-colors\"\r\n (click)=\"confirmButtonName()\">\r\n Inserir\r\n </button>\r\n </div>\r\n </div>\r\n</div>", 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-font-arial{font-family:Arial,Arial,sans-serif}:host ::ng-deep .ql-font-times-new-roman{font-family:Times New Roman,Times,serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:6px 6px 0 0;border:1px solid #e5e7eb}:host ::ng-deep #kv-editor{border-radius:0 0 6px 6px;border:1px solid #e5e7eb}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}:host ::ng-deep #kv-editor-preview{border-radius:0 0 6px 6px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper{font-family:Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42;color:#000;padding:12px 15px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper p{margin:0;padding:0;white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper *{white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strong,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper b{font-weight:700!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper em,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper i{font-style:italic!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper u{text-decoration:underline!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper s,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strike{text-decoration:line-through!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-weight:700;margin:0;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1{font-size:2em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2{font-size:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3{font-size:1.17em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4{font-size:1em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5{font-size:.83em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-size:.67em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper a{color:#06c;text-decoration:underline}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper code{background-color:#f0f0f0;border-radius:3px;padding:2px 4px;font-family:monospace;font-size:85%}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre{background-color:#23241f;color:#f8f8f2;overflow:visible;border-radius:3px;padding:5px 10px;white-space:pre-wrap;margin-bottom:5px;margin-top:5px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre code{background-color:transparent;border-radius:0;color:inherit;font-size:100%;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ol,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ul{margin:0;padding-left:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper img{max-width:100%;height:auto}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table{width:100%;border-collapse:collapse;margin-bottom:1rem}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table td{border:1px solid #e5e7eb;padding:.5rem;text-align:left}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th{background-color:#f9fafb;font-weight:600}:ng-deep p{text-align:justify!important}:host ::ng-deep .editor-spinner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff80;display:flex;justify-content:center;align-items:center;z-index:100000;border-radius:inherit}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:after{background:#002542}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:before{background:#002542}::ng-deep .scroll-virtual{overflow-x:hidden}::ng-deep .scroll-virtual::-webkit-scrollbar{width:8px}::ng-deep .scroll-virtual::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .scroll-virtual::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .scroll-virtual:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .scroll-virtual::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.option-dropdown{background-color:#333;transition:all ease-in .2s}.option-dropdown:hover{background-color:#444}.button-name-tooltip{position:fixed;z-index:10000;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease-in-out;pointer-events:none}.button-name-tooltip.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.button-name-tooltip input{outline:none;transition:border-color .2s}.button-name-tooltip input:focus{border-color:#3b82f6!important;box-shadow:0 0 0 3px #3b82f61a}.button-name-tooltip button{transition:all .2s}.button-name-tooltip button:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.button-name-tooltip button:active{transform:translateY(0)}.kv-editor-fullscreen{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;max-height:100vh!important;z-index:9999!important;background-color:var(--surface-card, #ffffff)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i10.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "component", type: i8$1.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: i9$1.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i11.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup", "popupIcon"], outputs: ["iconChange", "onClick"] }, { kind: "component", type: KvTagsComponent, selector: "kv-tags", inputs: ["tags", "hover", "clickable"], outputs: ["onClickTag"] }] }); }
6510
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvEditorComponent, selector: "kv-editor", inputs: { canvaHeigth: { classPropertyName: "canvaHeigth", publicName: "canvaHeigth", isSignal: false, isRequired: false, transformFunction: null }, contentType: { classPropertyName: "contentType", publicName: "contentType", isSignal: false, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: false, isRequired: false, transformFunction: null }, enablePreviewMode: { classPropertyName: "enablePreviewMode", publicName: "enablePreviewMode", isSignal: true, isRequired: false, transformFunction: null }, showVariableValuesInPreview: { classPropertyName: "showVariableValuesInPreview", publicName: "showVariableValuesInPreview", isSignal: true, isRequired: false, transformFunction: null }, showVariableValueFirst: { classPropertyName: "showVariableValueFirst", publicName: "showVariableValueFirst", isSignal: true, isRequired: false, transformFunction: null }, relatorios: { classPropertyName: "relatorios", publicName: "relatorios", isSignal: true, isRequired: false, transformFunction: null }, idRelatorioInitial: { classPropertyName: "idRelatorioInitial", publicName: "idRelatorioInitial", isSignal: true, isRequired: false, transformFunction: null }, printButton: { classPropertyName: "printButton", publicName: "printButton", isSignal: true, isRequired: false, transformFunction: null }, labelEmptyDropdown: { classPropertyName: "labelEmptyDropdown", publicName: "labelEmptyDropdown", isSignal: true, isRequired: false, transformFunction: null }, instrucoesTemplate: { classPropertyName: "instrucoesTemplate", publicName: "instrucoesTemplate", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabledEditor: { classPropertyName: "disabledEditor", publicName: "disabledEditor", isSignal: true, isRequired: false, transformFunction: null }, showHeaderButtons: { classPropertyName: "showHeaderButtons", publicName: "showHeaderButtons", isSignal: true, isRequired: false, transformFunction: null }, showAlphaCrmButtons: { classPropertyName: "showAlphaCrmButtons", publicName: "showAlphaCrmButtons", isSignal: true, isRequired: false, transformFunction: null }, showAlphaContratoButtons: { classPropertyName: "showAlphaContratoButtons", publicName: "showAlphaContratoButtons", isSignal: true, isRequired: false, transformFunction: null }, enableButtonInsert: { classPropertyName: "enableButtonInsert", publicName: "enableButtonInsert", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onTextChange: "onTextChange", onSelectionChange: "onSelectionChange", outputRaw: "outputRaw", outputHtml: "outputHtml", previewHtmlOutput: "previewHtmlOutput", onCustomButtonClick: "onCustomButtonClick", idRelatorioInitial: "idRelatorioInitialChange" }, providers: ComponentProviders(KvEditorComponent), viewQueries: [{ propertyName: "opVariables", first: true, predicate: ["opVariables"], descendants: true }, { propertyName: "mentionAnchor", first: true, predicate: ["mentionAnchor"], descendants: true }, { propertyName: "buttonNameTooltip", first: true, predicate: ["buttonNameTooltip"], descendants: true }, { propertyName: "buttonNameInput", first: true, predicate: ["buttonNameInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"kv-editor-container h-full w-full max-h-full flex flex-column overflow-hidden\"\r\n [class.pointer-events-none]=\"disabledEditor()\" [class.opacity-60]=\"disabledEditor()\"\r\n [class.kv-editor-fullscreen]=\"isFullscreen()\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{ 'error-border-toolbar': hasControlError() }\"\r\n class=\"{{ showHeader() ? 'flex' : 'hidden' }} flex-column flex-initial\">\r\n @if(showHeaderButtons()) {\r\n @if(relatorios().length > 0) {\r\n <div\r\n class=\"flex flex-row justify-content-between {{(readonly() || disabledEditor()) && 'pointer-events-none opacity-90'}}\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"op.toggle($event)\">\r\n <span class=\"material-symbols-outlined text-lg text-green-600 font-medium\">\r\n contract\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">{{\r\n !clearedTemplate()\r\n ? relatorio()?.label || labelEmptyDropdown()\r\n : labelEmptyDropdown()\r\n }}</span>\r\n <span class=\"material-symbols-outlined text-lg\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n\r\n @if(!clearedTemplate()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"clearTemplate()\">\r\n <span class=\"material-symbols-outlined text-lg text-orange-600 font-medium\" [pTooltip]=\"'Limpar Template'\">\r\n layers_clear\r\n </span>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"showInstrucoes()\">\r\n <span class=\"material-symbols-outlined text-lg text-blue-600 font-medium\">\r\n info\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Instru\u00E7\u00F5es</span>\r\n </div>\r\n </div>\r\n\r\n <!-- @if(printButton()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"openRelatorio()\"\r\n >\r\n <span class=\"material-symbols-outlined text-lg font-medium\">\r\n print\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Imprimir</span>\r\n </div>\r\n } -->\r\n </div>\r\n\r\n <p-divider class=\"w-full\"></p-divider>\r\n\r\n }\r\n }\r\n\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between w-full flex-initial\">\r\n @if(isLoading()) {\r\n\r\n <div class=\"flex flex-row align-items-center gap-3 w-full\">\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n </div>\r\n }\r\n\r\n <div class=\"flex-row align-items-center flex-wrap gap-2 {{\r\n isLoading() ? 'hidden' : 'flex'\r\n }} w-full\">\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"arial\">Arial</option>\r\n <option value=\"times-new-roman\">Times New Roman</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 <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-bold\" pTooltip=\"Negrito\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-italic\" pTooltip=\"It\u00E1lico\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-underline\" pTooltip=\"Sublinhado\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-strike\" pTooltip=\"Tachado\" tooltipPosition=\"top\"></button>\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-color\" pTooltip=\"Cor da fonte\" tooltipPosition=\"top\"></select>\r\n <select class=\"ql-background\" pTooltip=\"Cor de fundo\" tooltipPosition=\"top\"></select>\r\n </span>\r\n\r\n @if(true) {\r\n <!-- <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n </span> -->\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-link\" pTooltip=\"Inserir link\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-image\" pTooltip=\"Inserir imagem\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-video\" pTooltip=\"Inserir v\u00EDdeo\" tooltipPosition=\"top\"></button>\r\n\r\n @if(enableButtonInsert()) {\r\n <button id=\"insert-custom-button\" pTooltip=\"Inserir bot\u00E3o\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">buttons_alt</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaCrmButtons()) {\r\n <button id=\"btn-alpha-aceitar\" pTooltip=\"Inserir bot\u00E3o Aceitar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_add</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-cancelar\" pTooltip=\"Inserir bot\u00E3o Cancelar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_remove</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-aceitar-assinar\" pTooltip=\"Inserir bot\u00E3o Aceitar e Assinar Contrato\"\r\n tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1px); font-size: 20px;\">new_label</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaContratoButtons()) {\r\n <button id=\"btn-alpha-contrato-assinar\" pTooltip=\"Inserir bot\u00E3o Assinar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_edit</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-contrato-recusar\" pTooltip=\"Inserir bot\u00E3o Recusar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_delete</span>\r\n </button>\r\n }\r\n\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-list\" value=\"ordered\" pTooltip=\"Lista ordenada\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" pTooltip=\"Lista com marcadores\" tooltipPosition=\"top\"></button>\r\n <select class=\"ql-align\" pTooltip=\"Alinhamento\" tooltipPosition=\"top\"></select>\r\n </span>\r\n }\r\n\r\n <div class=\"flex-1 min-w-0\"></div>\r\n <!-- <span class=\"ql-formats m-0 ml-auto flex align-items-center pr-2\">\r\n <button pButton\r\n class=\"p-1 cursor-pointer transition-colors transition-duration-200 bg-transparent border-none text-gray-700 hover:text-blue-600\"\r\n (click)=\"toggleFullscreen()\">\r\n\r\n {{isFullscreen() ? 'Expandir' : 'Reduzir'}}\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 24px;\">{{ isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen' }}</span>\r\n </button>\r\n </span> -->\r\n\r\n <kv-button severity=\"tertiary\" [icon]=\"isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen'\" [label]=\"isFullscreen() ? 'Reduzir' : 'Expandir'\" (onClick)=\"toggleFullscreen()\">\r\n\r\n </kv-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height: 3px; border-top: none; border-bottom: none\"\r\n [style.borderRight]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\"\r\n [style.borderLeft]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\">\r\n @if(isLoadingPdf()) {\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '3px' }\" />\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row flex-1 gap-0 overflow-auto\">\r\n <div id=\"kv-editor\" class=\"overflow-auto flex-1 scrollstyle\" [ngClass]=\"{\r\n 'error-border': hasControlError(),\r\n 'pointer-events-none opacity-60': isLoadingPdf()\r\n }\" [style.borderTop]=\"showHeader() ? 'none' : '1px solid #e5e7eb'\"\r\n [style.borderRight]=\"enablePreviewMode() ? 'none' : '1px solid #e5e7eb'\"></div>\r\n\r\n @if(enablePreviewMode()) {\r\n <div class=\"flex flex-column flex-1\">\r\n <div class=\"flex align-items-center gap-2 px-3 py-2\" [style.borderRight]=\"'1px solid #e5e7eb'\"\r\n [style.borderLeft]=\"'1px solid #e5e7eb'\">\r\n <span class=\"material-symbols-outlined text-blue-600 text-lg\">visibility</span>\r\n <span class=\"font-semibold text-gray-700 text-sm\">Preview</span>\r\n </div>\r\n\r\n <div id=\"kv-editor-preview\" class=\"overflow-auto flex-1 scrollstyle\" [innerHTML]=\"getPreviewContent\"\r\n [style.border]=\"'1px solid #e5e7eb'\"></div>\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\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<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<p-overlayPanel #op styleClass=\"overflow-hidden\">\r\n <div class=\"grid m-0 gap-2 p-2 max-w-20rem overflow-y-auto scrollstyle\" style=\"max-height: 16rem\">\r\n @for(item of relatorios(); track $index) {\r\n <div\r\n class=\"col-12 cursor-pointer hover:bg-gray-100 transition-colors transition-duration-200 border-round-lg shadow-2 flex flex-column gap-2\"\r\n (click)=\"setRelatorio(item)\">\r\n <div class=\"flex flex-row align-items-center gap-2 justify-content-between\">\r\n <span class=\"text-sm font-medium w-full\">{{ item.label }}</span>\r\n\r\n <kv-tags class=\"transition-opacity transition-duration-300 {{\r\n item?.id == idRelatorioSelected() ? 'opacity-100' : 'opacity-0'\r\n }}\" [tags]=\"[{ label: 'Selecionado', severity: 'primary' }]\"></kv-tags>\r\n </div>\r\n <span class=\"text-xs text-gray-500\">{{ item.descricao }}</span>\r\n </div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div class=\"kv-editor-container flex flex-column overflow-hidden relative\">\r\n <div #mentionAnchor style=\"position: fixed; width: 1px; height: 1px; opacity: 0\"></div>\r\n</div>\r\n\r\n<p-overlayPanel #opVariables [appendTo]=\"'body'\" (onHide)=\"closeVariablesPanel()\">\r\n <div class=\"flex flex-column gap-1 p-1 overflow-y-auto scroll-virtual border-round-lg\"\r\n style=\"max-height: 250px; min-width: 250px; background-color: #333333\">\r\n @for(variable of filteredVariables(); track variable.id) {\r\n <div\r\n class=\"p-2 cursor-pointer transition-colors transition-duration-200 border-round-lg text-sm text-white option-dropdown\"\r\n (click)=\"selectVariableFromPanel(variable)\">\r\n @if (showVariableValueFirst()) {\r\n {{ variable.value }} (\r\n <span class=\"text-gray-400\">{{ variable.descricao }}</span> )\r\n } @else {\r\n {{ variable.descricao }} (\r\n <span class=\"text-gray-400\">{{ variable.value }}</span> )\r\n }\r\n </div>\r\n } @empty {\r\n <div class=\"p-2 text-sm text-gray-500\">Nenhuma vari\u00E1vel encontrada.</div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div #buttonNameTooltip class=\"button-name-tooltip\" [class.show]=\"showButtonTooltip()\"\r\n [style.top.px]=\"tooltipPosition().top\" [style.left.px]=\"tooltipPosition().left\">\r\n <div class=\"flex flex-column gap-2 p-3 bg-white border-round-lg shadow-3\" style=\"min-width: 280px\">\r\n <div class=\"flex flex-column gap-1\">\r\n <label class=\"text-sm font-semibold text-gray-700\">Nome do Bot\u00E3o</label>\r\n <input #buttonNameInput type=\"text\" class=\"p-2 border-1 border-gray-300 border-round-md text-sm\"\r\n placeholder=\"Ex: Aceitar Proposta\" [(ngModel)]=\"buttonNameValue\" (keydown.enter)=\"confirmButtonName()\"\r\n (keydown.escape)=\"cancelButtonName()\" />\r\n </div>\r\n <div class=\"flex flex-row gap-2 justify-content-end\">\r\n <button\r\n class=\"px-3 py-2 border-1 border-gray-300 bg-white text-gray-700 border-round-md cursor-pointer text-sm font-medium hover:bg-gray-100 transition-colors\"\r\n (click)=\"cancelButtonName()\">\r\n Cancelar\r\n </button>\r\n <button\r\n class=\"px-3 py-2 border-none bg-blue-600 text-white border-round-md cursor-pointer text-sm font-medium hover:bg-blue-700 transition-colors\"\r\n (click)=\"confirmButtonName()\">\r\n Inserir\r\n </button>\r\n </div>\r\n </div>\r\n</div>", 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-font-arial{font-family:Arial,Arial,sans-serif}:host ::ng-deep .ql-font-times-new-roman{font-family:Times New Roman,Times,serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:6px 6px 0 0;border:1px solid #e5e7eb}:host ::ng-deep #kv-editor{border-radius:0 0 6px 6px;border:1px solid #e5e7eb}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}:host ::ng-deep #kv-editor-preview{border-radius:0 0 6px 6px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper{font-family:Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42;color:#000;padding:12px 15px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper p{margin:0;padding:0;white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper *{white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strong,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper b{font-weight:700!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper em,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper i{font-style:italic!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper u{text-decoration:underline!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper s,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strike{text-decoration:line-through!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-weight:700;margin:0;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1{font-size:2em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2{font-size:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3{font-size:1.17em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4{font-size:1em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5{font-size:.83em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-size:.67em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper a{color:#06c;text-decoration:underline}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper code{background-color:#f0f0f0;border-radius:3px;padding:2px 4px;font-family:monospace;font-size:85%}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre{background-color:#23241f;color:#f8f8f2;overflow:visible;border-radius:3px;padding:5px 10px;white-space:pre-wrap;margin-bottom:5px;margin-top:5px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre code{background-color:transparent;border-radius:0;color:inherit;font-size:100%;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ol,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ul{margin:0;padding-left:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper img{max-width:100%;height:auto}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table{width:100%;border-collapse:collapse;margin-bottom:1rem}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table td{border:1px solid #e5e7eb;padding:.5rem;text-align:left}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th{background-color:#f9fafb;font-weight:600}:ng-deep p{text-align:justify!important}:host ::ng-deep .editor-spinner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff80;display:flex;justify-content:center;align-items:center;z-index:100000;border-radius:inherit}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:after{background:#002542}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:before{background:#002542}::ng-deep .scroll-virtual{overflow-x:hidden}::ng-deep .scroll-virtual::-webkit-scrollbar{width:8px}::ng-deep .scroll-virtual::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .scroll-virtual::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .scroll-virtual:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .scroll-virtual::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.option-dropdown{background-color:#333;transition:all ease-in .2s}.option-dropdown:hover{background-color:#444}.button-name-tooltip{position:fixed;z-index:10000;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease-in-out;pointer-events:none}.button-name-tooltip.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.button-name-tooltip input{outline:none;transition:border-color .2s}.button-name-tooltip input:focus{border-color:#3b82f6!important;box-shadow:0 0 0 3px #3b82f61a}.button-name-tooltip button{transition:all .2s}.button-name-tooltip button:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.button-name-tooltip button:active{transform:translateY(0)}.kv-editor-fullscreen{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;max-height:100vh!important;z-index:9999!important;background-color:var(--surface-card, #ffffff)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i10.Divider, selector: "p-divider", inputs: ["style", "styleClass", "layout", "type", "align"] }, { kind: "component", type: i8$1.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: i9$1.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i11.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup", "popupIcon"], outputs: ["iconChange", "onClick"] }, { kind: "component", type: KvTagsComponent, selector: "kv-tags", inputs: ["tags", "hover", "clickable"], outputs: ["onClickTag"] }] }); }
6509
6511
  }
6510
6512
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvEditorComponent, decorators: [{
6511
6513
  type: Component,
6512
- args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container h-full w-full max-h-full flex flex-column overflow-hidden\"\r\n [class.pointer-events-none]=\"disabledEditor()\" [class.opacity-60]=\"disabledEditor()\"\r\n [class.kv-editor-fullscreen]=\"isFullscreen()\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{ 'error-border-toolbar': hasControlError() }\"\r\n class=\"{{ showHeader() ? 'flex' : 'hidden' }} flex-column flex-initial ql-toolbar ql-snow\">\r\n @if(showHeaderButtons()) {\r\n @if(relatorios().length > 0) {\r\n <div\r\n class=\"flex flex-row justify-content-between {{(readonly() || disabledEditor()) && 'pointer-events-none opacity-90'}}\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"op.toggle($event)\">\r\n <span class=\"material-symbols-outlined text-lg text-green-600 font-medium\">\r\n contract\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">{{\r\n !clearedTemplate()\r\n ? relatorio()?.label || labelEmptyDropdown()\r\n : labelEmptyDropdown()\r\n }}</span>\r\n <span class=\"material-symbols-outlined text-lg\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n\r\n @if(!clearedTemplate()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"clearTemplate()\">\r\n <span class=\"material-symbols-outlined text-lg text-orange-600 font-medium\" [pTooltip]=\"'Limpar Template'\">\r\n layers_clear\r\n </span>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"showInstrucoes()\">\r\n <span class=\"material-symbols-outlined text-lg text-blue-600 font-medium\">\r\n info\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Instru\u00E7\u00F5es</span>\r\n </div>\r\n </div>\r\n\r\n <!-- @if(printButton()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"openRelatorio()\"\r\n >\r\n <span class=\"material-symbols-outlined text-lg font-medium\">\r\n print\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Imprimir</span>\r\n </div>\r\n } -->\r\n </div>\r\n\r\n <p-divider class=\"w-full\"></p-divider>\r\n\r\n }\r\n }\r\n\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between w-full flex-initial\">\r\n @if(isLoading()) {\r\n\r\n <div class=\"flex flex-row align-items-center gap-3 w-full\">\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n </div>\r\n }\r\n\r\n <div class=\"flex-row align-items-center flex-wrap gap-2 {{\r\n isLoading() ? 'hidden' : 'flex'\r\n }} w-full\">\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"arial\">Arial</option>\r\n <option value=\"times-new-roman\">Times New Roman</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 <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-bold\" pTooltip=\"Negrito\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-italic\" pTooltip=\"It\u00E1lico\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-underline\" pTooltip=\"Sublinhado\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-strike\" pTooltip=\"Tachado\" tooltipPosition=\"top\"></button>\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-color\" pTooltip=\"Cor da fonte\" tooltipPosition=\"top\"></select>\r\n <select class=\"ql-background\" pTooltip=\"Cor de fundo\" tooltipPosition=\"top\"></select>\r\n </span>\r\n\r\n @if(true) {\r\n <!-- <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n </span> -->\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-link\" pTooltip=\"Inserir link\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-image\" pTooltip=\"Inserir imagem\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-video\" pTooltip=\"Inserir v\u00EDdeo\" tooltipPosition=\"top\"></button>\r\n\r\n @if(enableButtonInsert()) {\r\n <button id=\"insert-custom-button\" pTooltip=\"Inserir bot\u00E3o\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">buttons_alt</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaCrmButtons()) {\r\n <button id=\"btn-alpha-aceitar\" pTooltip=\"Inserir bot\u00E3o Aceitar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_add</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-cancelar\" pTooltip=\"Inserir bot\u00E3o Cancelar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_remove</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-aceitar-assinar\" pTooltip=\"Inserir bot\u00E3o Aceitar e Assinar Contrato\"\r\n tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1px); font-size: 20px;\">new_label</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaContratoButtons()) {\r\n <button id=\"btn-alpha-contrato-assinar\" pTooltip=\"Inserir bot\u00E3o Assinar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_edit</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-contrato-recusar\" pTooltip=\"Inserir bot\u00E3o Recusar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_delete</span>\r\n </button>\r\n }\r\n\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-list\" value=\"ordered\" pTooltip=\"Lista ordenada\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" pTooltip=\"Lista com marcadores\" tooltipPosition=\"top\"></button>\r\n <select class=\"ql-align\" pTooltip=\"Alinhamento\" tooltipPosition=\"top\"></select>\r\n </span>\r\n }\r\n\r\n <div class=\"flex-1 min-w-0\"></div>\r\n <!-- <span class=\"ql-formats m-0 ml-auto flex align-items-center pr-2\">\r\n <button pButton\r\n class=\"p-1 cursor-pointer transition-colors transition-duration-200 bg-transparent border-none text-gray-700 hover:text-blue-600\"\r\n (click)=\"toggleFullscreen()\">\r\n\r\n {{isFullscreen() ? 'Expandir' : 'Reduzir'}}\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 24px;\">{{ isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen' }}</span>\r\n </button>\r\n </span> -->\r\n\r\n <kv-button severity=\"tertiary\" [icon]=\"isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen'\" [label]=\"isFullscreen() ? 'Reduzir' : 'Expandir'\" (onClick)=\"toggleFullscreen()\">\r\n\r\n </kv-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height: 3px; border-top: none; border-bottom: none\"\r\n [style.borderRight]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\"\r\n [style.borderLeft]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\">\r\n @if(isLoadingPdf()) {\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '3px' }\" />\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row flex-1 gap-0 overflow-auto\">\r\n <div id=\"kv-editor\" class=\"overflow-auto flex-1 scrollstyle ql-container ql-snow\" [ngClass]=\"{\r\n 'error-border': hasControlError(),\r\n 'pointer-events-none opacity-60': isLoadingPdf()\r\n }\" [style.borderTop]=\"showHeader() ? 'none' : '1px solid #e5e7eb'\"\r\n [style.borderRight]=\"enablePreviewMode() ? 'none' : '1px solid #e5e7eb'\"></div>\r\n\r\n @if(enablePreviewMode()) {\r\n <div class=\"flex flex-column flex-1\">\r\n <div class=\"flex align-items-center gap-2 px-3 py-2\" [style.borderRight]=\"'1px solid #e5e7eb'\"\r\n [style.borderLeft]=\"'1px solid #e5e7eb'\">\r\n <span class=\"material-symbols-outlined text-blue-600 text-lg\">visibility</span>\r\n <span class=\"font-semibold text-gray-700 text-sm\">Preview</span>\r\n </div>\r\n\r\n <div id=\"kv-editor-preview\" class=\"overflow-auto flex-1 scrollstyle\" [innerHTML]=\"getPreviewContent\"\r\n [style.border]=\"'1px solid #e5e7eb'\"></div>\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\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<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<p-overlayPanel #op styleClass=\"overflow-hidden\">\r\n <div class=\"grid m-0 gap-2 p-2 max-w-20rem overflow-y-auto scrollstyle\" style=\"max-height: 16rem\">\r\n @for(item of relatorios(); track $index) {\r\n <div\r\n class=\"col-12 cursor-pointer hover:bg-gray-100 transition-colors transition-duration-200 border-round-lg shadow-2 flex flex-column gap-2\"\r\n (click)=\"setRelatorio(item)\">\r\n <div class=\"flex flex-row align-items-center gap-2 justify-content-between\">\r\n <span class=\"text-sm font-medium w-full\">{{ item.label }}</span>\r\n\r\n <kv-tags class=\"transition-opacity transition-duration-300 {{\r\n item?.id == idRelatorioSelected() ? 'opacity-100' : 'opacity-0'\r\n }}\" [tags]=\"[{ label: 'Selecionado', severity: 'primary' }]\"></kv-tags>\r\n </div>\r\n <span class=\"text-xs text-gray-500\">{{ item.descricao }}</span>\r\n </div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div class=\"kv-editor-container flex flex-column overflow-hidden relative\">\r\n <div #mentionAnchor style=\"position: fixed; width: 1px; height: 1px; opacity: 0\"></div>\r\n</div>\r\n\r\n<p-overlayPanel #opVariables [appendTo]=\"'body'\" (onHide)=\"closeVariablesPanel()\">\r\n <div class=\"flex flex-column gap-1 p-1 overflow-y-auto scroll-virtual border-round-lg\"\r\n style=\"max-height: 250px; min-width: 250px; background-color: #333333\">\r\n @for(variable of filteredVariables(); track variable.id) {\r\n <div\r\n class=\"p-2 cursor-pointer transition-colors transition-duration-200 border-round-lg text-sm text-white option-dropdown\"\r\n (click)=\"selectVariableFromPanel(variable)\">\r\n @if (showVariableValueFirst()) {\r\n {{ variable.value }} (\r\n <span class=\"text-gray-400\">{{ variable.descricao }}</span> )\r\n } @else {\r\n {{ variable.descricao }} (\r\n <span class=\"text-gray-400\">{{ variable.value }}</span> )\r\n }\r\n </div>\r\n } @empty {\r\n <div class=\"p-2 text-sm text-gray-500\">Nenhuma vari\u00E1vel encontrada.</div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div #buttonNameTooltip class=\"button-name-tooltip\" [class.show]=\"showButtonTooltip()\"\r\n [style.top.px]=\"tooltipPosition().top\" [style.left.px]=\"tooltipPosition().left\">\r\n <div class=\"flex flex-column gap-2 p-3 bg-white border-round-lg shadow-3\" style=\"min-width: 280px\">\r\n <div class=\"flex flex-column gap-1\">\r\n <label class=\"text-sm font-semibold text-gray-700\">Nome do Bot\u00E3o</label>\r\n <input #buttonNameInput type=\"text\" class=\"p-2 border-1 border-gray-300 border-round-md text-sm\"\r\n placeholder=\"Ex: Aceitar Proposta\" [(ngModel)]=\"buttonNameValue\" (keydown.enter)=\"confirmButtonName()\"\r\n (keydown.escape)=\"cancelButtonName()\" />\r\n </div>\r\n <div class=\"flex flex-row gap-2 justify-content-end\">\r\n <button\r\n class=\"px-3 py-2 border-1 border-gray-300 bg-white text-gray-700 border-round-md cursor-pointer text-sm font-medium hover:bg-gray-100 transition-colors\"\r\n (click)=\"cancelButtonName()\">\r\n Cancelar\r\n </button>\r\n <button\r\n class=\"px-3 py-2 border-none bg-blue-600 text-white border-round-md cursor-pointer text-sm font-medium hover:bg-blue-700 transition-colors\"\r\n (click)=\"confirmButtonName()\">\r\n Inserir\r\n </button>\r\n </div>\r\n </div>\r\n</div>", 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-font-arial{font-family:Arial,Arial,sans-serif}:host ::ng-deep .ql-font-times-new-roman{font-family:Times New Roman,Times,serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:6px 6px 0 0;border:1px solid #e5e7eb}:host ::ng-deep #kv-editor{border-radius:0 0 6px 6px;border:1px solid #e5e7eb}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}:host ::ng-deep #kv-editor-preview{border-radius:0 0 6px 6px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper{font-family:Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42;color:#000;padding:12px 15px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper p{margin:0;padding:0;white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper *{white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strong,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper b{font-weight:700!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper em,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper i{font-style:italic!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper u{text-decoration:underline!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper s,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strike{text-decoration:line-through!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-weight:700;margin:0;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1{font-size:2em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2{font-size:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3{font-size:1.17em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4{font-size:1em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5{font-size:.83em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-size:.67em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper a{color:#06c;text-decoration:underline}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper code{background-color:#f0f0f0;border-radius:3px;padding:2px 4px;font-family:monospace;font-size:85%}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre{background-color:#23241f;color:#f8f8f2;overflow:visible;border-radius:3px;padding:5px 10px;white-space:pre-wrap;margin-bottom:5px;margin-top:5px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre code{background-color:transparent;border-radius:0;color:inherit;font-size:100%;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ol,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ul{margin:0;padding-left:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper img{max-width:100%;height:auto}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table{width:100%;border-collapse:collapse;margin-bottom:1rem}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table td{border:1px solid #e5e7eb;padding:.5rem;text-align:left}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th{background-color:#f9fafb;font-weight:600}:ng-deep p{text-align:justify!important}:host ::ng-deep .editor-spinner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff80;display:flex;justify-content:center;align-items:center;z-index:100000;border-radius:inherit}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:after{background:#002542}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:before{background:#002542}::ng-deep .scroll-virtual{overflow-x:hidden}::ng-deep .scroll-virtual::-webkit-scrollbar{width:8px}::ng-deep .scroll-virtual::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .scroll-virtual::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .scroll-virtual:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .scroll-virtual::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.option-dropdown{background-color:#333;transition:all ease-in .2s}.option-dropdown:hover{background-color:#444}.button-name-tooltip{position:fixed;z-index:10000;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease-in-out;pointer-events:none}.button-name-tooltip.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.button-name-tooltip input{outline:none;transition:border-color .2s}.button-name-tooltip input:focus{border-color:#3b82f6!important;box-shadow:0 0 0 3px #3b82f61a}.button-name-tooltip button{transition:all .2s}.button-name-tooltip button:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.button-name-tooltip button:active{transform:translateY(0)}.kv-editor-fullscreen{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;max-height:100vh!important;z-index:9999!important;background-color:var(--surface-card, #ffffff)!important}\n"] }]
6514
+ args: [{ selector: 'kv-editor', providers: ComponentProviders(KvEditorComponent), template: "<div class=\"kv-editor-container h-full w-full max-h-full flex flex-column overflow-hidden\"\r\n [class.pointer-events-none]=\"disabledEditor()\" [class.opacity-60]=\"disabledEditor()\"\r\n [class.kv-editor-fullscreen]=\"isFullscreen()\">\r\n <div #editor id=\"kv-editor-toolbar\" [ngClass]=\"{ 'error-border-toolbar': hasControlError() }\"\r\n class=\"{{ showHeader() ? 'flex' : 'hidden' }} flex-column flex-initial\">\r\n @if(showHeaderButtons()) {\r\n @if(relatorios().length > 0) {\r\n <div\r\n class=\"flex flex-row justify-content-between {{(readonly() || disabledEditor()) && 'pointer-events-none opacity-90'}}\">\r\n <div class=\"flex flex-row gap-2\">\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"op.toggle($event)\">\r\n <span class=\"material-symbols-outlined text-lg text-green-600 font-medium\">\r\n contract\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">{{\r\n !clearedTemplate()\r\n ? relatorio()?.label || labelEmptyDropdown()\r\n : labelEmptyDropdown()\r\n }}</span>\r\n <span class=\"material-symbols-outlined text-lg\">\r\n keyboard_arrow_down\r\n </span>\r\n </div>\r\n\r\n @if(!clearedTemplate()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"clearTemplate()\">\r\n <span class=\"material-symbols-outlined text-lg text-orange-600 font-medium\" [pTooltip]=\"'Limpar Template'\">\r\n layers_clear\r\n </span>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"showInstrucoes()\">\r\n <span class=\"material-symbols-outlined text-lg text-blue-600 font-medium\">\r\n info\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Instru\u00E7\u00F5es</span>\r\n </div>\r\n </div>\r\n\r\n <!-- @if(printButton()) {\r\n <div\r\n class=\"flex flex-row align-items-center gap-2 p-2 border-round-lg border-1 border-gray-200 hover:shadow-1 hover:bg-gray-100 cursor-pointer transition-all transition-duration-300\"\r\n (click)=\"openRelatorio()\"\r\n >\r\n <span class=\"material-symbols-outlined text-lg font-medium\">\r\n print\r\n </span>\r\n <span class=\"font-semibold text-xs text-gray-600\">Imprimir</span>\r\n </div>\r\n } -->\r\n </div>\r\n\r\n <p-divider class=\"w-full\"></p-divider>\r\n\r\n }\r\n }\r\n\r\n\r\n <div class=\"flex flex-row align-items-center justify-content-between w-full flex-initial\">\r\n @if(isLoading()) {\r\n\r\n <div class=\"flex flex-row align-items-center gap-3 w-full\">\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n\r\n <p-skeleton styleClass=\"w-6rem\" [style]=\"{ height: '2rem' }\"></p-skeleton>\r\n </div>\r\n }\r\n\r\n <div class=\"flex-row align-items-center flex-wrap gap-2 {{\r\n isLoading() ? 'hidden' : 'flex'\r\n }} w-full\">\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-font\">\r\n <option value=\"roboto\">Roboto</option>\r\n <option value=\"arial\">Arial</option>\r\n <option value=\"times-new-roman\">Times New Roman</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 <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-bold\" pTooltip=\"Negrito\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-italic\" pTooltip=\"It\u00E1lico\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-underline\" pTooltip=\"Sublinhado\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-strike\" pTooltip=\"Tachado\" tooltipPosition=\"top\"></button>\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <select class=\"ql-color\" pTooltip=\"Cor da fonte\" tooltipPosition=\"top\"></select>\r\n <select class=\"ql-background\" pTooltip=\"Cor de fundo\" tooltipPosition=\"top\"></select>\r\n </span>\r\n\r\n @if(true) {\r\n <!-- <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-header\" value=\"1\"></button>\r\n <button class=\"ql-header\" value=\"2\"></button>\r\n </span> -->\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-link\" pTooltip=\"Inserir link\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-image\" pTooltip=\"Inserir imagem\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-video\" pTooltip=\"Inserir v\u00EDdeo\" tooltipPosition=\"top\"></button>\r\n\r\n @if(enableButtonInsert()) {\r\n <button id=\"insert-custom-button\" pTooltip=\"Inserir bot\u00E3o\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">buttons_alt</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaCrmButtons()) {\r\n <button id=\"btn-alpha-aceitar\" pTooltip=\"Inserir bot\u00E3o Aceitar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_add</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-cancelar\" pTooltip=\"Inserir bot\u00E3o Cancelar\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 22px;\">variable_remove</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-aceitar-assinar\" pTooltip=\"Inserir bot\u00E3o Aceitar e Assinar Contrato\"\r\n tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1px); font-size: 20px;\">new_label</span>\r\n </button>\r\n }\r\n\r\n @if(showAlphaContratoButtons()) {\r\n <button id=\"btn-alpha-contrato-assinar\" pTooltip=\"Inserir bot\u00E3o Assinar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_edit</span>\r\n </button>\r\n\r\n <button id=\"btn-alpha-contrato-recusar\" pTooltip=\"Inserir bot\u00E3o Recusar Contrato\" tooltipPosition=\"top\">\r\n <span class=\"material-symbols-outlined\"\r\n style=\"transform: translate(0px, -1.7px); font-size: 20px;\">contract_delete</span>\r\n </button>\r\n }\r\n\r\n </span>\r\n\r\n <p-divider layout=\"vertical\"></p-divider>\r\n\r\n <span class=\"ql-formats border-round-md\">\r\n <button class=\"ql-list\" value=\"ordered\" pTooltip=\"Lista ordenada\" tooltipPosition=\"top\"></button>\r\n <button class=\"ql-list\" value=\"bullet\" pTooltip=\"Lista com marcadores\" tooltipPosition=\"top\"></button>\r\n <select class=\"ql-align\" pTooltip=\"Alinhamento\" tooltipPosition=\"top\"></select>\r\n </span>\r\n }\r\n\r\n <div class=\"flex-1 min-w-0\"></div>\r\n <!-- <span class=\"ql-formats m-0 ml-auto flex align-items-center pr-2\">\r\n <button pButton\r\n class=\"p-1 cursor-pointer transition-colors transition-duration-200 bg-transparent border-none text-gray-700 hover:text-blue-600\"\r\n (click)=\"toggleFullscreen()\">\r\n\r\n {{isFullscreen() ? 'Expandir' : 'Reduzir'}}\r\n <span class=\"material-symbols-outlined\" style=\"font-size: 24px;\">{{ isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen' }}</span>\r\n </button>\r\n </span> -->\r\n\r\n <kv-button severity=\"tertiary\" [icon]=\"isFullscreen() ? 'fullscreen_exit' :\r\n 'fullscreen'\" [label]=\"isFullscreen() ? 'Reduzir' : 'Expandir'\" (onClick)=\"toggleFullscreen()\">\r\n\r\n </kv-button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height: 3px; border-top: none; border-bottom: none\"\r\n [style.borderRight]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\"\r\n [style.borderLeft]=\"showHeader() ? '1px solid #e5e7eb' : 'none'\">\r\n @if(isLoadingPdf()) {\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '3px' }\" />\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row flex-1 gap-0 overflow-auto\">\r\n <div id=\"kv-editor\" class=\"overflow-auto flex-1 scrollstyle\" [ngClass]=\"{\r\n 'error-border': hasControlError(),\r\n 'pointer-events-none opacity-60': isLoadingPdf()\r\n }\" [style.borderTop]=\"showHeader() ? 'none' : '1px solid #e5e7eb'\"\r\n [style.borderRight]=\"enablePreviewMode() ? 'none' : '1px solid #e5e7eb'\"></div>\r\n\r\n @if(enablePreviewMode()) {\r\n <div class=\"flex flex-column flex-1\">\r\n <div class=\"flex align-items-center gap-2 px-3 py-2\" [style.borderRight]=\"'1px solid #e5e7eb'\"\r\n [style.borderLeft]=\"'1px solid #e5e7eb'\">\r\n <span class=\"material-symbols-outlined text-blue-600 text-lg\">visibility</span>\r\n <span class=\"font-semibold text-gray-700 text-sm\">Preview</span>\r\n </div>\r\n\r\n <div id=\"kv-editor-preview\" class=\"overflow-auto flex-1 scrollstyle\" [innerHTML]=\"getPreviewContent\"\r\n [style.border]=\"'1px solid #e5e7eb'\"></div>\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>\r\n<kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\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<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<p-overlayPanel #op styleClass=\"overflow-hidden\">\r\n <div class=\"grid m-0 gap-2 p-2 max-w-20rem overflow-y-auto scrollstyle\" style=\"max-height: 16rem\">\r\n @for(item of relatorios(); track $index) {\r\n <div\r\n class=\"col-12 cursor-pointer hover:bg-gray-100 transition-colors transition-duration-200 border-round-lg shadow-2 flex flex-column gap-2\"\r\n (click)=\"setRelatorio(item)\">\r\n <div class=\"flex flex-row align-items-center gap-2 justify-content-between\">\r\n <span class=\"text-sm font-medium w-full\">{{ item.label }}</span>\r\n\r\n <kv-tags class=\"transition-opacity transition-duration-300 {{\r\n item?.id == idRelatorioSelected() ? 'opacity-100' : 'opacity-0'\r\n }}\" [tags]=\"[{ label: 'Selecionado', severity: 'primary' }]\"></kv-tags>\r\n </div>\r\n <span class=\"text-xs text-gray-500\">{{ item.descricao }}</span>\r\n </div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div class=\"kv-editor-container flex flex-column overflow-hidden relative\">\r\n <div #mentionAnchor style=\"position: fixed; width: 1px; height: 1px; opacity: 0\"></div>\r\n</div>\r\n\r\n<p-overlayPanel #opVariables [appendTo]=\"'body'\" (onHide)=\"closeVariablesPanel()\">\r\n <div class=\"flex flex-column gap-1 p-1 overflow-y-auto scroll-virtual border-round-lg\"\r\n style=\"max-height: 250px; min-width: 250px; background-color: #333333\">\r\n @for(variable of filteredVariables(); track variable.id) {\r\n <div\r\n class=\"p-2 cursor-pointer transition-colors transition-duration-200 border-round-lg text-sm text-white option-dropdown\"\r\n (click)=\"selectVariableFromPanel(variable)\">\r\n @if (showVariableValueFirst()) {\r\n {{ variable.value }} (\r\n <span class=\"text-gray-400\">{{ variable.descricao }}</span> )\r\n } @else {\r\n {{ variable.descricao }} (\r\n <span class=\"text-gray-400\">{{ variable.value }}</span> )\r\n }\r\n </div>\r\n } @empty {\r\n <div class=\"p-2 text-sm text-gray-500\">Nenhuma vari\u00E1vel encontrada.</div>\r\n }\r\n </div>\r\n</p-overlayPanel>\r\n\r\n<div #buttonNameTooltip class=\"button-name-tooltip\" [class.show]=\"showButtonTooltip()\"\r\n [style.top.px]=\"tooltipPosition().top\" [style.left.px]=\"tooltipPosition().left\">\r\n <div class=\"flex flex-column gap-2 p-3 bg-white border-round-lg shadow-3\" style=\"min-width: 280px\">\r\n <div class=\"flex flex-column gap-1\">\r\n <label class=\"text-sm font-semibold text-gray-700\">Nome do Bot\u00E3o</label>\r\n <input #buttonNameInput type=\"text\" class=\"p-2 border-1 border-gray-300 border-round-md text-sm\"\r\n placeholder=\"Ex: Aceitar Proposta\" [(ngModel)]=\"buttonNameValue\" (keydown.enter)=\"confirmButtonName()\"\r\n (keydown.escape)=\"cancelButtonName()\" />\r\n </div>\r\n <div class=\"flex flex-row gap-2 justify-content-end\">\r\n <button\r\n class=\"px-3 py-2 border-1 border-gray-300 bg-white text-gray-700 border-round-md cursor-pointer text-sm font-medium hover:bg-gray-100 transition-colors\"\r\n (click)=\"cancelButtonName()\">\r\n Cancelar\r\n </button>\r\n <button\r\n class=\"px-3 py-2 border-none bg-blue-600 text-white border-round-md cursor-pointer text-sm font-medium hover:bg-blue-700 transition-colors\"\r\n (click)=\"confirmButtonName()\">\r\n Inserir\r\n </button>\r\n </div>\r\n </div>\r\n</div>", 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-font-arial{font-family:Arial,Arial,sans-serif}:host ::ng-deep .ql-font-times-new-roman{font-family:Times New Roman,Times,serif}:host ::ng-deep .ql-tooltip.ql-editing[data-mode=video]{transform:translate(40%)}:host ::ng-deep #kv-editor-toolbar{border-radius:6px 6px 0 0;border:1px solid #e5e7eb}:host ::ng-deep #kv-editor{border-radius:0 0 6px 6px;border:1px solid #e5e7eb}.error-border-toolbar{transition:all ease-in .2s;border-top-color:#e24c4c!important;border-bottom-color:#e24c4c!important;border-left-color:#e24c4c!important;border-right-color:#e24c4c!important}.error-border{border-color:#e24c4c!important;transition:all ease-in .2s}:host ::ng-deep .blot-formatter__resize-handle{background:#eaeaea!important}:host ::ng-deep #kv-editor-preview{border-radius:0 0 6px 6px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper{font-family:Helvetica,Arial,sans-serif;font-size:13px;line-height:1.42;color:#000;padding:12px 15px;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper p{margin:0;padding:0;white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper *{white-space:pre-wrap}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strong,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper b{font-weight:700!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper em,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper i{font-style:italic!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper u{text-decoration:underline!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper s,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper strike{text-decoration:line-through!important}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-weight:700;margin:0;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h1{font-size:2em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h2{font-size:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h3{font-size:1.17em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h4{font-size:1em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h5{font-size:.83em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper h6{font-size:.67em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper a{color:#06c;text-decoration:underline}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper code{background-color:#f0f0f0;border-radius:3px;padding:2px 4px;font-family:monospace;font-size:85%}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre{background-color:#23241f;color:#f8f8f2;overflow:visible;border-radius:3px;padding:5px 10px;white-space:pre-wrap;margin-bottom:5px;margin-top:5px}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper pre code{background-color:transparent;border-radius:0;color:inherit;font-size:100%;padding:0}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ol,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper ul{margin:0;padding-left:1.5em}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper img{max-width:100%;height:auto}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table{width:100%;border-collapse:collapse;margin-bottom:1rem}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th,:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table td{border:1px solid #e5e7eb;padding:.5rem;text-align:left}:host ::ng-deep #kv-editor-preview .kv-editor-preview-wrapper table th{background-color:#f9fafb;font-weight:600}:ng-deep p{text-align:justify!important}:host ::ng-deep .editor-spinner-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff80;display:flex;justify-content:center;align-items:center;z-index:100000;border-radius:inherit}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:after{background:#002542}::ng-deep .p-progressbar-indeterminate .p-progressbar-value:before{background:#002542}::ng-deep .scroll-virtual{overflow-x:hidden}::ng-deep .scroll-virtual::-webkit-scrollbar{width:8px}::ng-deep .scroll-virtual::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .scroll-virtual::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .scroll-virtual:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .scroll-virtual::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}.option-dropdown{background-color:#333;transition:all ease-in .2s}.option-dropdown:hover{background-color:#444}.button-name-tooltip{position:fixed;z-index:10000;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease-in-out;pointer-events:none}.button-name-tooltip.show{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.button-name-tooltip input{outline:none;transition:border-color .2s}.button-name-tooltip input:focus{border-color:#3b82f6!important;box-shadow:0 0 0 3px #3b82f61a}.button-name-tooltip button{transition:all .2s}.button-name-tooltip button:hover{transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.button-name-tooltip button:active{transform:translateY(0)}.kv-editor-fullscreen{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;max-height:100vh!important;z-index:9999!important;background-color:var(--surface-card, #ffffff)!important}\n"] }]
6513
6515
  }], ctorParameters: () => [{ type: ComponentService }, { type: i1$6.DomSanitizer }], propDecorators: { canvaHeigth: [{
6514
6516
  type: Input
6515
6517
  }], contentType: [{