UNPKG

ngx-quill

Version:

An angular (>= v2) component for the easy use of the QuillJS richt text editor.

143 lines 15.7 kB
import * as tslib_1 from "tslib"; import { isPlatformServer } from '@angular/common'; import { QUILL_CONFIG_TOKEN } from './quill-editor.interfaces'; import { Component, ElementRef, Inject, Input, PLATFORM_ID, Renderer2, ViewEncapsulation } from '@angular/core'; import { defaultModules } from './quill-defaults'; // tslint:disable-next-line:variable-name let Quill = null; const getFormat = (format, configFormat) => { const passedFormat = format || configFormat; return passedFormat || 'html'; }; const ɵ0 = getFormat; let QuillViewComponent = class QuillViewComponent { constructor( // tslint:disable-next-line:ban-types platformId, config, renderer, elementRef) { this.platformId = platformId; this.config = config; this.renderer = renderer; this.elementRef = elementRef; this.strict = true; this.customOptions = []; this.preserveWhitespace = false; this.valueSetter = (quillEditor, value) => { const format = getFormat(this.format, this.config.format); let content = value; if (format === 'html' || format === 'text') { content = quillEditor.clipboard.convert(value); } else if (format === 'json') { try { content = JSON.parse(value); } catch (e) { content = [{ insert: value }]; } } quillEditor.setContents(content); }; } ngOnChanges(changes) { if (!this.quillEditor) { return; } if (changes.content) { this.valueSetter(this.quillEditor, changes.content.currentValue); } } ngAfterViewInit() { if (isPlatformServer(this.platformId)) { return; } if (!Quill) { Quill = require('quill'); } const modules = Object.assign({}, this.modules || (this.config.modules || defaultModules)); modules.toolbar = false; this.customOptions.forEach((customOption) => { const newCustomOption = Quill.import(customOption.import); newCustomOption.whitelist = customOption.whitelist; Quill.register(newCustomOption, true); }); let debug = this.debug; if (!debug && debug !== false && this.config.debug) { debug = this.config.debug; } let formats = this.formats; if (!formats && formats === undefined) { formats = this.config.formats ? Object.assign({}, this.config.formats) : (this.config.formats === null ? null : undefined); } const theme = this.theme || (this.config.theme ? this.config.theme : 'snow'); this.elementRef.nativeElement.insertAdjacentHTML('afterbegin', this.preserveWhitespace ? '<pre quill-view-element></pre>' : '<div quill-view-element></div>'); this.editorElem = this.elementRef.nativeElement.querySelector('[quill-view-element]'); this.quillEditor = new Quill(this.editorElem, { debug, formats, modules, readOnly: true, strict: this.strict, theme }); this.renderer.addClass(this.editorElem, 'ngx-quill-view'); if (this.content) { this.valueSetter(this.quillEditor, this.content); } } }; tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], QuillViewComponent.prototype, "format", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], QuillViewComponent.prototype, "theme", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Object) ], QuillViewComponent.prototype, "modules", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Object) ], QuillViewComponent.prototype, "debug", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Array) ], QuillViewComponent.prototype, "formats", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Boolean) ], QuillViewComponent.prototype, "strict", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Object) ], QuillViewComponent.prototype, "content", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Array) ], QuillViewComponent.prototype, "customOptions", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", Boolean) ], QuillViewComponent.prototype, "preserveWhitespace", void 0); QuillViewComponent = tslib_1.__decorate([ Component({ encapsulation: ViewEncapsulation.None, selector: 'quill-view', template: ` `, styles: [` .ql-container.ngx-quill-view { border: 0; } `] }), tslib_1.__param(0, Inject(PLATFORM_ID)), tslib_1.__param(1, Inject(QUILL_CONFIG_TOKEN)), tslib_1.__metadata("design:paramtypes", [Object, Object, Renderer2, ElementRef]) ], QuillViewComponent); export { QuillViewComponent }; export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcXVpbGwvIiwic291cmNlcyI6WyJzcmMvcXVpbGwtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBMEMsTUFBTSwyQkFBMkIsQ0FBQTtBQUV0RyxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQU1qRCx5Q0FBeUM7QUFDekMsSUFBSSxLQUFLLEdBQVEsSUFBSSxDQUFBO0FBRXJCLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBb0IsRUFBRSxZQUEwQixFQUFlLEVBQUU7SUFDbEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLFlBQVksQ0FBQTtJQUMzQyxPQUFPLFlBQVksSUFBSSxNQUFNLENBQUE7QUFDL0IsQ0FBQyxDQUFBOztBQWFELElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQWtCO0lBYzdCO0lBQ0UscUNBQXFDO0lBQ1IsVUFBa0IsRUFDWCxNQUFtQixFQUMvQyxRQUFtQixFQUNuQixVQUFzQjtRQUhELGVBQVUsR0FBVixVQUFVLENBQVE7UUFDWCxXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQy9DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVZ2QixXQUFNLEdBQVksSUFBSSxDQUFBO1FBRXRCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQTtRQUNsQyx1QkFBa0IsR0FBWSxLQUFLLENBQUE7UUFVNUMsZ0JBQVcsR0FBRyxDQUFDLFdBQWdCLEVBQUUsS0FBVSxFQUFPLEVBQUU7WUFD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LGtCQUFrQjtJQVg5QixTQUFTLENBQUM7UUFDVCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxRQUFRLEVBQUUsWUFBWTtRQU10QixRQUFRLEVBQUU7Q0FDWDtpQkFOVTs7OztDQUlWO0tBR0EsQ0FBQztJQWlCRyxtQkFBQSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbkIsbUJBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7NkNBRGMsTUFBTSxVQUU3QixTQUFTO1FBQ1AsVUFBVTtHQW5CckIsa0JBQWtCLENBa0c5QjtTQWxHWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5pbXBvcnQgeyBRVUlMTF9DT05GSUdfVE9LRU4sIFF1aWxsQ29uZmlnLCBRdWlsbEZvcm1hdCwgUXVpbGxNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcydcblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cydcbmltcG9ydCB7IEN1c3RvbU9wdGlvbiB9IGZyb20gJy4vcXVpbGwtZWRpdG9yLmNvbXBvbmVudCdcblxuLy8gQmVjYXVzZSBxdWlsbCB1c2VzIGBkb2N1bWVudGAgZGlyZWN0bHksIHdlIGNhbm5vdCBgaW1wb3J0YCBkdXJpbmcgU1NSXG4vLyBpbnN0ZWFkLCB3ZSBsb2FkIGR5bmFtaWNhbGx5IHZpYSBgcmVxdWlyZSgncXVpbGwnKWAgaW4gYG5nQWZ0ZXJWaWV3SW5pdCgpYFxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxubGV0IFF1aWxsOiBhbnkgPSBudWxsXG5cbmNvbnN0IGdldEZvcm1hdCA9IChmb3JtYXQ/OiBRdWlsbEZvcm1hdCwgY29uZmlnRm9ybWF0PzogUXVpbGxGb3JtYXQpOiBRdWlsbEZvcm1hdCA9PiB7XG4gIGNvbnN0IHBhc3NlZEZvcm1hdCA9IGZvcm1hdCB8fCBjb25maWdGb3JtYXRcbiAgcmV0dXJuIHBhc3NlZEZvcm1hdCB8fCAnaHRtbCdcbn1cblxuQENvbXBvbmVudCh7XG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAncXVpbGwtdmlldycsXG4gIHN0eWxlczogW2Bcbi5xbC1jb250YWluZXIubmd4LXF1aWxsLXZpZXcge1xuICBib3JkZXI6IDA7XG59XG5gXSxcbiAgdGVtcGxhdGU6IGBcbmBcbn0pXG5leHBvcnQgY2xhc3MgUXVpbGxWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgcXVpbGxFZGl0b3I6IGFueVxuICBlZGl0b3JFbGVtOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpIGZvcm1hdD86ICdvYmplY3QnIHwgJ2h0bWwnIHwgJ3RleHQnIHwgJ2pzb24nXG4gIEBJbnB1dCgpIHRoZW1lPzogc3RyaW5nXG4gIEBJbnB1dCgpIG1vZHVsZXM/OiBRdWlsbE1vZHVsZXNcbiAgQElucHV0KCkgZGVidWc/OiAnd2FybicgfMKgJ2xvZycgfMKgJ2Vycm9yJyB8wqBmYWxzZVxuICBASW5wdXQoKSBmb3JtYXRzPzogc3RyaW5nW10gfMKgbnVsbFxuICBASW5wdXQoKSBzdHJpY3Q6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IGFueVxuICBASW5wdXQoKSBjdXN0b21PcHRpb25zOiBDdXN0b21PcHRpb25bXSA9IFtdXG4gIEBJbnB1dCgpIHByZXNlcnZlV2hpdGVzcGFjZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIEBJbmplY3QoUVVJTExfQ09ORklHX1RPS0VOKSBwcml2YXRlIGNvbmZpZzogUXVpbGxDb25maWcsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgdmFsdWVTZXR0ZXIgPSAocXVpbGxFZGl0b3I6IGFueSwgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpXG4gICAgbGV0IGNvbnRlbnQgPSB2YWx1ZVxuICAgIGlmIChmb3JtYXQgPT09ICdodG1sJyB8fMKgZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgIGNvbnRlbnQgPSBxdWlsbEVkaXRvci5jbGlwYm9hcmQuY29udmVydCh2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZSh2YWx1ZSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29udGVudCA9IFt7IGluc2VydDogdmFsdWUgfV1cbiAgICAgIH1cbiAgICB9XG4gICAgcXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY29udGVudClcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jb250ZW50KSB7XG4gICAgICB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIGNoYW5nZXMuY29udGVudC5jdXJyZW50VmFsdWUpXG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIVF1aWxsKSB7XG4gICAgICBRdWlsbCA9IHJlcXVpcmUoJ3F1aWxsJylcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5tb2R1bGVzIHx8ICh0aGlzLmNvbmZpZy5tb2R1bGVzIHx8wqBkZWZhdWx0TW9kdWxlcykpXG4gICAgbW9kdWxlcy50b29sYmFyID0gZmFsc2VcblxuICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChjdXN0b21PcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IG5ld0N1c3RvbU9wdGlvbiA9IFF1aWxsLmltcG9ydChjdXN0b21PcHRpb24uaW1wb3J0KVxuICAgICAgbmV3Q3VzdG9tT3B0aW9uLndoaXRlbGlzdCA9IGN1c3RvbU9wdGlvbi53aGl0ZWxpc3RcbiAgICAgIFF1aWxsLnJlZ2lzdGVyKG5ld0N1c3RvbU9wdGlvbiwgdHJ1ZSlcbiAgICB9KVxuXG4gICAgbGV0IGRlYnVnID0gdGhpcy5kZWJ1Z1xuICAgIGlmICghZGVidWcgJiYgZGVidWcgIT09IGZhbHNlICYmIHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICBkZWJ1ZyA9IHRoaXMuY29uZmlnLmRlYnVnXG4gICAgfVxuXG4gICAgbGV0IGZvcm1hdHMgPSB0aGlzLmZvcm1hdHNcbiAgICBpZiAoIWZvcm1hdHMgJiYgZm9ybWF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3JtYXRzID0gdGhpcy5jb25maWcuZm9ybWF0cyA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmZvcm1hdHMpIDrCoCh0aGlzLmNvbmZpZy5mb3JtYXRzID09PSBudWxsID8gbnVsbCA6IHVuZGVmaW5lZClcbiAgICB9XG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLnRoZW1lIHx8ICh0aGlzLmNvbmZpZy50aGVtZSA/IHRoaXMuY29uZmlnLnRoZW1lIDogJ3Nub3cnKVxuXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKFxuICAgICAgJ2FmdGVyYmVnaW4nLFxuICAgICAgdGhpcy5wcmVzZXJ2ZVdoaXRlc3BhY2UgPyAnPHByZSBxdWlsbC12aWV3LWVsZW1lbnQ+PC9wcmU+JyA6ICc8ZGl2IHF1aWxsLXZpZXctZWxlbWVudD48L2Rpdj4nXG4gICAgKVxuXG4gICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdbcXVpbGwtdmlldy1lbGVtZW50XSdcbiAgICApXG5cbiAgICB0aGlzLnF1aWxsRWRpdG9yID0gbmV3IFF1aWxsKHRoaXMuZWRpdG9yRWxlbSwge1xuICAgICAgZGVidWcsXG4gICAgICBmb3JtYXRzLFxuICAgICAgbW9kdWxlcyxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdCxcbiAgICAgIHRoZW1lXG4gICAgfSlcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lZGl0b3JFbGVtLCAnbmd4LXF1aWxsLXZpZXcnKVxuXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy52YWx1ZVNldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmNvbnRlbnQpXG4gICAgfVxuICB9XG59XG4iXX0=