ngx-quill
Version:
An angular (>= v2) component for the easy use of the QuillJS richt text editor.
140 lines • 16.1 kB
JavaScript
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
var Quill = null;
var getFormat = function (format, configFormat) {
var passedFormat = format || configFormat;
return passedFormat || 'html';
};
var ɵ0 = getFormat;
var QuillViewComponent = /** @class */ (function () {
function QuillViewComponent(
// tslint:disable-next-line:ban-types
platformId, config, renderer, elementRef) {
var _this = this;
this.platformId = platformId;
this.config = config;
this.renderer = renderer;
this.elementRef = elementRef;
this.strict = true;
this.customOptions = [];
this.preserveWhitespace = false;
this.valueSetter = function (quillEditor, value) {
var format = getFormat(_this.format, _this.config.format);
var 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);
};
}
QuillViewComponent.prototype.ngOnChanges = function (changes) {
if (!this.quillEditor) {
return;
}
if (changes.content) {
this.valueSetter(this.quillEditor, changes.content.currentValue);
}
};
QuillViewComponent.prototype.ngAfterViewInit = function () {
if (isPlatformServer(this.platformId)) {
return;
}
if (!Quill) {
Quill = require('quill');
}
var modules = Object.assign({}, this.modules || (this.config.modules || defaultModules));
modules.toolbar = false;
this.customOptions.forEach(function (customOption) {
var newCustomOption = Quill.import(customOption.import);
newCustomOption.whitelist = customOption.whitelist;
Quill.register(newCustomOption, true);
});
var debug = this.debug;
if (!debug && debug !== false && this.config.debug) {
debug = this.config.debug;
}
var formats = this.formats;
if (!formats && formats === undefined) {
formats = this.config.formats ? Object.assign({}, this.config.formats) : (this.config.formats === null ? null : undefined);
}
var 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: debug,
formats: formats,
modules: modules,
readOnly: true,
strict: this.strict,
theme: 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: "\n",
styles: ["\n.ql-container.ngx-quill-view {\n border: 0;\n}\n"]
}),
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);
return QuillViewComponent;
}());
export { QuillViewComponent };
export { ɵ0 };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcXVpbGwvIiwic291cmNlcyI6WyJzcmMvcXVpbGwtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRWxELE9BQU8sRUFBRSxrQkFBa0IsRUFBMEMsTUFBTSwyQkFBMkIsQ0FBQTtBQUV0RyxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBRVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQU1qRCx5Q0FBeUM7QUFDekMsSUFBSSxLQUFLLEdBQVEsSUFBSSxDQUFBO0FBRXJCLElBQU0sU0FBUyxHQUFHLFVBQUMsTUFBb0IsRUFBRSxZQUEwQjtJQUNqRSxJQUFNLFlBQVksR0FBRyxNQUFNLElBQUksWUFBWSxDQUFBO0lBQzNDLE9BQU8sWUFBWSxJQUFJLE1BQU0sQ0FBQTtBQUMvQixDQUFDLENBQUE7O0FBYUQ7SUFjRTtJQUNFLHFDQUFxQztJQUNSLFVBQWtCLEVBQ1gsTUFBbUIsRUFDL0MsUUFBbUIsRUFDbkIsVUFBc0I7UUFMaEMsaUJBTUk7UUFKMkIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNYLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDL0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBVnZCLFdBQU0sR0FBWSxJQUFJLENBQUE7UUFFdEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFBO1FBQ2xDLHVCQUFrQixHQUFZLEtBQUssQ0FBQTtRQVU1QyxnQkFBVyxHQUFHLFVBQUMsV0FBZ0IsRUFBRSxLQUFVO1lBQ3pDLElBQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFJLENBQUMs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Q1QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7WUFDckMsUUFBUSxFQUFFLFlBQVk7WUFNdEIsUUFBUSxFQUFFLElBQ1g7cUJBTlUscURBSVY7U0FHQSxDQUFDO1FBaUJHLG1CQUFBLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNuQixtQkFBQSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtpREFEYyxNQUFNLFVBRTdCLFNBQVM7WUFDUCxVQUFVO09BbkJyQixrQkFBa0IsQ0FrRzlCO0lBQUQseUJBQUM7Q0FBQSxBQWxHRCxJQWtHQztTQWxHWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5pbXBvcnQgeyBRVUlMTF9DT05GSUdfVE9LRU4sIFF1aWxsQ29uZmlnLCBRdWlsbEZvcm1hdCwgUXVpbGxNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1lZGl0b3IuaW50ZXJmYWNlcydcblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IGRlZmF1bHRNb2R1bGVzIH0gZnJvbSAnLi9xdWlsbC1kZWZhdWx0cydcbmltcG9ydCB7IEN1c3RvbU9wdGlvbiB9IGZyb20gJy4vcXVpbGwtZWRpdG9yLmNvbXBvbmVudCdcblxuLy8gQmVjYXVzZSBxdWlsbCB1c2VzIGBkb2N1bWVudGAgZGlyZWN0bHksIHdlIGNhbm5vdCBgaW1wb3J0YCBkdXJpbmcgU1NSXG4vLyBpbnN0ZWFkLCB3ZSBsb2FkIGR5bmFtaWNhbGx5IHZpYSBgcmVxdWlyZSgncXVpbGwnKWAgaW4gYG5nQWZ0ZXJWaWV3SW5pdCgpYFxuZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFyaWFibGUtbmFtZVxubGV0IFF1aWxsOiBhbnkgPSBudWxsXG5cbmNvbnN0IGdldEZvcm1hdCA9IChmb3JtYXQ/OiBRdWlsbEZvcm1hdCwgY29uZmlnRm9ybWF0PzogUXVpbGxGb3JtYXQpOiBRdWlsbEZvcm1hdCA9PiB7XG4gIGNvbnN0IHBhc3NlZEZvcm1hdCA9IGZvcm1hdCB8fCBjb25maWdGb3JtYXRcbiAgcmV0dXJuIHBhc3NlZEZvcm1hdCB8fCAnaHRtbCdcbn1cblxuQENvbXBvbmVudCh7XG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAncXVpbGwtdmlldycsXG4gIHN0eWxlczogW2Bcbi5xbC1jb250YWluZXIubmd4LXF1aWxsLXZpZXcge1xuICBib3JkZXI6IDA7XG59XG5gXSxcbiAgdGVtcGxhdGU6IGBcbmBcbn0pXG5leHBvcnQgY2xhc3MgUXVpbGxWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgcXVpbGxFZGl0b3I6IGFueVxuICBlZGl0b3JFbGVtOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIEBJbnB1dCgpIGZvcm1hdD86ICdvYmplY3QnIHwgJ2h0bWwnIHwgJ3RleHQnIHwgJ2pzb24nXG4gIEBJbnB1dCgpIHRoZW1lPzogc3RyaW5nXG4gIEBJbnB1dCgpIG1vZHVsZXM/OiBRdWlsbE1vZHVsZXNcbiAgQElucHV0KCkgZGVidWc/OiAnd2FybicgfMKgJ2xvZycgfMKgJ2Vycm9yJyB8wqBmYWxzZVxuICBASW5wdXQoKSBmb3JtYXRzPzogc3RyaW5nW10gfMKgbnVsbFxuICBASW5wdXQoKSBzdHJpY3Q6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IGFueVxuICBASW5wdXQoKSBjdXN0b21PcHRpb25zOiBDdXN0b21PcHRpb25bXSA9IFtdXG4gIEBJbnB1dCgpIHByZXNlcnZlV2hpdGVzcGFjZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi10eXBlc1xuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIEBJbmplY3QoUVVJTExfQ09ORklHX1RPS0VOKSBwcml2YXRlIGNvbmZpZzogUXVpbGxDb25maWcsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgdmFsdWVTZXR0ZXIgPSAocXVpbGxFZGl0b3I6IGFueSwgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgY29uc3QgZm9ybWF0ID0gZ2V0Rm9ybWF0KHRoaXMuZm9ybWF0LCB0aGlzLmNvbmZpZy5mb3JtYXQpXG4gICAgbGV0IGNvbnRlbnQgPSB2YWx1ZVxuICAgIGlmIChmb3JtYXQgPT09ICdodG1sJyB8fMKgZm9ybWF0ID09PSAndGV4dCcpIHtcbiAgICAgIGNvbnRlbnQgPSBxdWlsbEVkaXRvci5jbGlwYm9hcmQuY29udmVydCh2YWx1ZSlcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb250ZW50ID0gSlNPTi5wYXJzZSh2YWx1ZSlcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29udGVudCA9IFt7IGluc2VydDogdmFsdWUgfV1cbiAgICAgIH1cbiAgICB9XG4gICAgcXVpbGxFZGl0b3Iuc2V0Q29udGVudHMoY29udGVudClcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMucXVpbGxFZGl0b3IpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jb250ZW50KSB7XG4gICAgICB0aGlzLnZhbHVlU2V0dGVyKHRoaXMucXVpbGxFZGl0b3IsIGNoYW5nZXMuY29udGVudC5jdXJyZW50VmFsdWUpXG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIVF1aWxsKSB7XG4gICAgICBRdWlsbCA9IHJlcXVpcmUoJ3F1aWxsJylcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5tb2R1bGVzIHx8ICh0aGlzLmNvbmZpZy5tb2R1bGVzIHx8wqBkZWZhdWx0TW9kdWxlcykpXG4gICAgbW9kdWxlcy50b29sYmFyID0gZmFsc2VcblxuICAgIHRoaXMuY3VzdG9tT3B0aW9ucy5mb3JFYWNoKChjdXN0b21PcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IG5ld0N1c3RvbU9wdGlvbiA9IFF1aWxsLmltcG9ydChjdXN0b21PcHRpb24uaW1wb3J0KVxuICAgICAgbmV3Q3VzdG9tT3B0aW9uLndoaXRlbGlzdCA9IGN1c3RvbU9wdGlvbi53aGl0ZWxpc3RcbiAgICAgIFF1aWxsLnJlZ2lzdGVyKG5ld0N1c3RvbU9wdGlvbiwgdHJ1ZSlcbiAgICB9KVxuXG4gICAgbGV0IGRlYnVnID0gdGhpcy5kZWJ1Z1xuICAgIGlmICghZGVidWcgJiYgZGVidWcgIT09IGZhbHNlICYmIHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICBkZWJ1ZyA9IHRoaXMuY29uZmlnLmRlYnVnXG4gICAgfVxuXG4gICAgbGV0IGZvcm1hdHMgPSB0aGlzLmZvcm1hdHNcbiAgICBpZiAoIWZvcm1hdHMgJiYgZm9ybWF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3JtYXRzID0gdGhpcy5jb25maWcuZm9ybWF0cyA/IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29uZmlnLmZvcm1hdHMpIDrCoCh0aGlzLmNvbmZpZy5mb3JtYXRzID09PSBudWxsID8gbnVsbCA6IHVuZGVmaW5lZClcbiAgICB9XG4gICAgY29uc3QgdGhlbWUgPSB0aGlzLnRoZW1lIHx8ICh0aGlzLmNvbmZpZy50aGVtZSA/IHRoaXMuY29uZmlnLnRoZW1lIDogJ3Nub3cnKVxuXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKFxuICAgICAgJ2FmdGVyYmVnaW4nLFxuICAgICAgdGhpcy5wcmVzZXJ2ZVdoaXRlc3BhY2UgPyAnPHByZSBxdWlsbC12aWV3LWVsZW1lbnQ+PC9wcmU+JyA6ICc8ZGl2IHF1aWxsLXZpZXctZWxlbWVudD48L2Rpdj4nXG4gICAgKVxuXG4gICAgdGhpcy5lZGl0b3JFbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdbcXVpbGwtdmlldy1lbGVtZW50XSdcbiAgICApXG5cbiAgICB0aGlzLnF1aWxsRWRpdG9yID0gbmV3IFF1aWxsKHRoaXMuZWRpdG9yRWxlbSwge1xuICAgICAgZGVidWcsXG4gICAgICBmb3JtYXRzLFxuICAgICAgbW9kdWxlcyxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgc3RyaWN0OiB0aGlzLnN0cmljdCxcbiAgICAgIHRoZW1lXG4gICAgfSlcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lZGl0b3JFbGVtLCAnbmd4LXF1aWxsLXZpZXcnKVxuXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy52YWx1ZVNldHRlcih0aGlzLnF1aWxsRWRpdG9yLCB0aGlzLmNvbnRlbnQpXG4gICAgfVxuICB9XG59XG4iXX0=