UNPKG

ngx-qrcode2

Version:

An Angular component for generating QRCodes

148 lines 14.1 kB
import { __decorate, __values } from "tslib"; import { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, Renderer2, ViewChild } from '@angular/core'; import QRCode from 'qrcode'; import { NgxQrcodeElementTypes } from './qrcode.types'; import { DEFAULT_VALUES } from './qrcode.constants'; var QrcodeComponent = /** @class */ (function () { function QrcodeComponent(renderer) { this.renderer = renderer; this.elementType = DEFAULT_VALUES.elementType; this.cssClass = DEFAULT_VALUES.cssClass; this.value = DEFAULT_VALUES.value; this.version = DEFAULT_VALUES.version; this.errorCorrectionLevel = DEFAULT_VALUES.errorCorrectionLevel; this.margin = DEFAULT_VALUES.margin; this.scale = DEFAULT_VALUES.scale; this.width = DEFAULT_VALUES.width; this.colorDark = DEFAULT_VALUES.colorDark; this.colorLight = DEFAULT_VALUES.colorLight; } QrcodeComponent.prototype.ngOnChanges = function () { this.createQRCode(); }; QrcodeComponent.prototype.createQRCode = function () { var _this = this; if (!this.value) { return; } var element; switch (this.elementType) { case NgxQrcodeElementTypes.CANVAS: element = this.renderer.createElement('canvas'); this.toCanvas(element).then(function () { _this.renderElement(element); }).catch(function (e) { _this.removeElementChildren(); console.error(e); }); break; default: element = this.renderer.createElement('img'); this.toDataURL().then(function (src) { element.setAttribute('src', src); if (_this.alt) { element.setAttribute('alt', _this.alt); } _this.renderElement(element); }).catch(function (e) { _this.removeElementChildren(); console.error(e); }); } }; QrcodeComponent.prototype.toDataURL = function () { return QRCode.toDataURL(this.value, { version: this.version, errorCorrectionLevel: this.errorCorrectionLevel, margin: this.margin, scale: this.scale, width: this.width, color: { dark: this.colorDark, light: this.colorLight } }); }; QrcodeComponent.prototype.toCanvas = function (canvas) { return QRCode.toCanvas(canvas, this.value, { version: this.version, errorCorrectionLevel: this.errorCorrectionLevel, margin: this.margin, scale: this.scale, width: this.width, color: { dark: this.colorDark, light: this.colorLight } }); }; QrcodeComponent.prototype.renderElement = function (element) { this.removeElementChildren(); this.renderer.appendChild(this.qrcElement.nativeElement, element); }; QrcodeComponent.prototype.removeElementChildren = function () { var e_1, _a; try { for (var _b = __values(this.qrcElement.nativeElement.childNodes), _c = _b.next(); !_c.done; _c = _b.next()) { var node = _c.value; this.renderer.removeChild(this.qrcElement.nativeElement, node); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } }; QrcodeComponent.ctorParameters = function () { return [ { type: Renderer2 } ]; }; __decorate([ Input() ], QrcodeComponent.prototype, "elementType", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "cssClass", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "alt", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "value", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "version", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "errorCorrectionLevel", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "margin", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "scale", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "width", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "colorDark", void 0); __decorate([ Input() ], QrcodeComponent.prototype, "colorLight", void 0); __decorate([ ViewChild('qrcElement') ], QrcodeComponent.prototype, "qrcElement", void 0); QrcodeComponent = __decorate([ Component({ selector: 'ngx-qrcode', template: "\n <div #qrcElement [class]=\"cssClass\"></div>", changeDetection: ChangeDetectionStrategy.OnPush }) ], QrcodeComponent); return QrcodeComponent; }()); export { QrcodeComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1xcmNvZGUyLyIsInNvdXJjZXMiOlsibGliL3FyY29kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2SCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBEO0lBaUJFLHlCQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBZjlCLGdCQUFXLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUN6QyxhQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUVuQyxVQUFLLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUM3QixZQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUVqQyx5QkFBb0IsR0FBRyxjQUFjLENBQUMsb0JBQW9CLENBQUM7UUFDM0QsV0FBTSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDL0IsVUFBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDN0IsVUFBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDN0IsY0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFDckMsZUFBVSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUM7SUFLaEQsQ0FBQztJQUVELHFDQUFXLEdBQVg7UUFDRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELHNDQUFZLEdBQVo7UUFBQSxpQkErQkM7UUE5QkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFL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Q0FBQSxnQkFBQSw0QkFBRTtnQkFBeEQsSUFBTSxJQUFJLFdBQUE7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDaEU7Ozs7Ozs7OztJQUNILENBQUM7O2dCQTlFNkIsU0FBUzs7SUFmOUI7UUFBUixLQUFLLEVBQUU7d0RBQTBDO0lBQ3pDO1FBQVIsS0FBSyxFQUFFO3FEQUFvQztJQUNuQztRQUFSLEtBQUssRUFBRTtnREFBYTtJQUNaO1FBQVIsS0FBSyxFQUFFO2tEQUE4QjtJQUM3QjtRQUFSLEtBQUssRUFBRTtvREFBa0M7SUFFakM7UUFBUixLQUFLLEVBQUU7aUVBQTREO0lBQzNEO1FBQVIsS0FBSyxFQUFFO21EQUFnQztJQUMvQjtRQUFSLEtBQUssRUFBRTtrREFBOEI7SUFDN0I7UUFBUixLQUFLLEVBQUU7a0RBQThCO0lBQzdCO1FBQVIsS0FBSyxFQUFFO3NEQUFzQztJQUNyQztRQUFSLEtBQUssRUFBRTt1REFBd0M7SUFFdkI7UUFBeEIsU0FBUyxDQUFDLFlBQVksQ0FBQzt1REFBd0I7SUFmckMsZUFBZTtRQU4zQixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsWUFBWTtZQUN0QixRQUFRLEVBQUUsb0RBQ21DO1lBQzdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1NBQ2hELENBQUM7T0FDVyxlQUFlLENBZ0czQjtJQUFELHNCQUFDO0NBQUEsQUFoR0QsSUFnR0M7U0FoR1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcblxuaW1wb3J0IHsgTmd4UXJjb2RlRWxlbWVudFR5cGVzIH0gZnJvbSAnLi9xcmNvZGUudHlwZXMnO1xuaW1wb3J0IHsgREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuL3FyY29kZS5jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtcXJjb2RlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICNxcmNFbGVtZW50IFtjbGFzc109XCJjc3NDbGFzc1wiPjwvZGl2PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFFyY29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KCkgZWxlbWVudFR5cGUgPSBERUZBVUxUX1ZBTFVFUy5lbGVtZW50VHlwZTtcbiAgQElucHV0KCkgY3NzQ2xhc3MgPSBERUZBVUxUX1ZBTFVFUy5jc3NDbGFzcztcbiAgQElucHV0KCkgYWx0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHZhbHVlID0gREVGQVVMVF9WQUxVRVMudmFsdWU7XG4gIEBJbnB1dCgpIHZlcnNpb24gPSBERUZBVUxUX1ZBTFVFUy52ZXJzaW9uO1xuXG4gIEBJbnB1dCgpIGVycm9yQ29ycmVjdGlvbkxldmVsID0gREVGQVVMVF9WQUxVRVMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw7XG4gIEBJbnB1dCgpIG1hcmdpbiA9IERFRkFVTFRfVkFMVUVTLm1hcmdpbjtcbiAgQElucHV0KCkgc2NhbGUgPSBERUZBVUxUX1ZBTFVFUy5zY2FsZTtcbiAgQElucHV0KCkgd2lkdGggPSBERUZBVUxUX1ZBTFVFUy53aWR0aDtcbiAgQElucHV0KCkgY29sb3JEYXJrID0gREVGQVVMVF9WQUxVRVMuY29sb3JEYXJrO1xuICBASW5wdXQoKSBjb2xvckxpZ2h0ID0gREVGQVVMVF9WQUxVRVMuY29sb3JMaWdodDtcblxuICBAVmlld0NoaWxkKCdxcmNFbGVtZW50JykgcXJjRWxlbWVudDogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuY3JlYXRlUVJDb2RlKCk7XG4gIH1cblxuICBjcmVhdGVRUkNvZGUoKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnQ7XG5cbiAgICBzd2l0Y2ggKHRoaXMuZWxlbWVudFR5cGUpIHtcblxuICAgICAgY2FzZSBOZ3hRcmNvZGVFbGVtZW50VHlwZXMuQ0FOVkFTOlxuICAgICAgICBlbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgdGhpcy50b0NhbnZhcyhlbGVtZW50KS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlbmRlckVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIH0pLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudENoaWxkcmVuKCk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgICAgIHRoaXMudG9EYXRhVVJMKCkudGhlbigoc3JjOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnc3JjJywgc3JjKTtcbiAgICAgICAgICBpZiAodGhpcy5hbHQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhbHQnLCB0aGlzLmFsdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVFbGVtZW50Q2hpbGRyZW4oKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRvRGF0YVVSTCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBRUkNvZGUudG9EYXRhVVJMKHRoaXMudmFsdWUsXG4gICAgICB7XG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgZXJyb3JDb3JyZWN0aW9uTGV2ZWw6IHRoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsXG4gICAgICAgIG1hcmdpbjogdGhpcy5tYXJnaW4sXG4gICAgICAgIHNjYWxlOiB0aGlzLnNjYWxlLFxuICAgICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgICAgY29sb3I6IHtcbiAgICAgICAgICBkYXJrOiB0aGlzLmNvbG9yRGFyayxcbiAgICAgICAgICBsaWdodDogdGhpcy5jb2xvckxpZ2h0XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0NhbnZhcyhjYW52YXMpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBRUkNvZGUudG9DYW52YXMoY2FudmFzLCB0aGlzLnZhbHVlLCB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb24sXG4gICAgICBlcnJvckNvcnJlY3Rpb25MZXZlbDogdGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbCxcbiAgICAgIG1hcmdpbjogdGhpcy5tYXJnaW4sXG4gICAgICBzY2FsZTogdGhpcy5zY2FsZSxcbiAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZGFyazogdGhpcy5jb2xvckRhcmssXG4gICAgICAgIGxpZ2h0OiB0aGlzLmNvbG9yTGlnaHRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyRWxlbWVudChlbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVFbGVtZW50Q2hpbGRyZW4oKTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMucXJjRWxlbWVudC5uYXRpdmVFbGVtZW50LCBlbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRWxlbWVudENoaWxkcmVuKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnFyY0VsZW1lbnQubmF0aXZlRWxlbWVudC5jaGlsZE5vZGVzKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMucXJjRWxlbWVudC5uYXRpdmVFbGVtZW50LCBub2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==