@ng-arthur/core
Version: 
@ng-arthur/core for Angular 8+ Components
125 lines • 10.1 kB
JavaScript
import * as tslib_1 from "tslib";
import { Component, Input, ChangeDetectionStrategy, ElementRef, Inject, Output, EventEmitter } from '@angular/core';
import QRCode from 'qrcode';
import { DOCUMENT } from "@angular/common";
let NaQRCodeComponent = class NaQRCodeComponent {
    constructor(el, _doc) {
        this.el = el;
        this._doc = _doc;
        this.urlChange = new EventEmitter();
        this.level = 'M';
        /**
         * 定义周边区域应该有多宽。
         */
        this.margin = 0;
        this.type = 'image/jpeg';
        /**
         * 	Height/Width
         */
        this.size = 256;
        // /**
        //  * 宽度
        //  */
        // @Input() width = 256;
        // /**
        //  * 高度
        //  */
        // @Input() height: number;
        /**
         * 前景色,值必须为十六进制格式(RGBA)
         */
        this.colorDark = '#000000';
        /**
         * 背景色,值必须为十六进制格式(RGBA)
         */
        this.colorLight = '#ffffff';
        this.isValidQrCodeText = (data) => {
            // if (this.allowEmptyString === false) {
            //   return !(typeof data === 'undefined' || data === '');
            // }
            return !(typeof data === 'undefined');
        };
    }
    ngOnInit() {
        QRCode.toDataURL(this._doc.getElementById('canvas'), this.data, {
            version: this.version,
            errorCorrectionLevel: this.level,
            margin: this.margin,
            width: this.size,
            color: {
                dark: this.colorDark,
                light: this.colorLight
            },
            type: this.type,
            rendererOpts: {
                quality: 0.3
            }
        })
            .then(url => {
            this.urlChange.emit(url);
        })
            .catch(err => {
            console.error(err);
        });
    }
    ngOnChanges(changes) {
        const data = changes['data'];
        if (data && this.isValidQrCodeText(data.currentValue)) {
            // console.log(data.currentValue);
            // this.qrcode.clear();
            // this.qrcode.makeCode(qrData.currentValue);
        }
    }
};
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Number)
], NaQRCodeComponent.prototype, "version", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String)
], NaQRCodeComponent.prototype, "data", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String)
], NaQRCodeComponent.prototype, "url", void 0);
tslib_1.__decorate([
    Output(),
    tslib_1.__metadata("design:type", Object)
], NaQRCodeComponent.prototype, "urlChange", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String)
], NaQRCodeComponent.prototype, "level", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object)
], NaQRCodeComponent.prototype, "margin", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", String)
], NaQRCodeComponent.prototype, "type", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object)
], NaQRCodeComponent.prototype, "size", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object)
], NaQRCodeComponent.prototype, "colorDark", void 0);
tslib_1.__decorate([
    Input(),
    tslib_1.__metadata("design:type", Object)
], NaQRCodeComponent.prototype, "colorLight", void 0);
NaQRCodeComponent = tslib_1.__decorate([
    Component({
        selector: 'na-qrcode',
        template: "<canvas id=\"canvas\"></canvas>\n",
        changeDetection: ChangeDetectionStrategy.OnPush,
        styles: [""]
    }),
    tslib_1.__param(1, Inject(DOCUMENT)),
    tslib_1.__metadata("design:paramtypes", [ElementRef, Object])
], NaQRCodeComponent);
export { NaQRCodeComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmEtcXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZy1hcnRodXIvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9xcmNvZGUvbmEtcXJjb2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUN0SixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUTNDLElBQWEsaUJBQWlCLEdBQTlCLE1BQWEsaUJBQWlCO0lBZ0M1QixZQUFvQixFQUFjLEVBQTRCLElBQVM7UUFBbkQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUE0QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBNUI3RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN4QyxVQUFLLEdBQW1FLEdBQUcsQ0FBQztRQUNyRjs7V0FFRztRQUNNLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxTQUFJLEdBQThDLFlBQVksQ0FBQztRQUN4RTs7V0FFRztRQUNNLFNBQUksR0FBRyxHQUFHLENBQUM7UUFDcEIsTUFBTTtRQUNOLFFBQVE7UUFDUixNQUFNO1FBQ04sd0JBQXdCO1FBQ3hCLE1BQU07UUFDTixRQUFRO1FBQ1IsTUFBTTtRQUNOLDJCQUEyQjtRQUMzQjs7V0FFRztRQUNNLGNBQVMsR0FBRyxTQUFTLENBQUM7UUFDL0I7O1dBRUc7UUFDTSxlQUFVLEdBQUcsU0FBUyxDQUFDO1FBb0N0QixzQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO1lBQ3RELHlDQUF5QztZQUN6QywwREFBMEQ7WUFDMUQsSUFBSTtZQUNKLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQTtJQXZDMEUsQ0FBQztJQUU1RSxRQUFRO1FBQ04sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzlELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVTthQUN2QjtZQUNELElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFlBQVksRUFBRTtnQkFDWixPQUFPLEVBQUUsR0FBRzthQUNiO1NBQ0YsQ0FBQzthQUNELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JELGtDQUFrQztZQUNsQyx1QkFBdUI7WUFDdkIsNkNBQTZDO1NBQzlDO0lBQ0gsQ0FBQztDQVNGLENBQUE7QUF4RVU7SUFBUixLQUFLLEVBQUU7O2tEQUFpQjtBQUNoQjtJQUFSLEtBQUssRUFBRTs7K0NBQWM7QUFDYjtJQUFSLEtBQUssRUFBRTs7OENBQWE7QUFDWDtJQUFULE1BQU0sRUFBRTs7b0RBQXdDO0FBQ3hDO0lBQVIsS0FBSyxFQUFFOztnREFBNkU7QUFJNUU7SUFBUixLQUFLLEVBQUU7O2lEQUFZO0FBQ1g7SUFBUixLQUFLLEVBQUU7OytDQUFnRTtBQUkvRDtJQUFSLEtBQUssRUFBRTs7K0NBQVk7QUFZWDtJQUFSLEtBQUssRUFBRTs7b0RBQXVCO0FBSXRCO0lBQVIsS0FBSyxFQUFFOztxREFBd0I7QUE5QnJCLGlCQUFpQjtJQU43QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsV0FBVztRQUNyQiw2Q0FBeUM7UUFFekMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O0tBQ2hELENBQUM7SUFpQ3FDLG1CQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTs2Q0FBN0IsVUFBVTtHQWhDdkIsaUJBQWlCLENBeUU3QjtTQXpFWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFbGVtZW50UmVmLCBJbmplY3QsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBRUkNvZGUgZnJvbSAncXJjb2RlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYS1xcmNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmEtcXJjb2RlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmEtcXJjb2RlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOYVFSQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmVyc2lvbjogbnVtYmVyO1xuICBASW5wdXQoKSBkYXRhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVybDogc3RyaW5nO1xuICBAT3V0cHV0KCkgdXJsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBJbnB1dCgpIGxldmVsOiAnbG93JyB8ICdtZWRpdW0nIHwgJ3F1YXJ0aWxlJyB8ICdoaWdoJyB8ICdMJyB8ICdNJyB8ICdRJyB8ICdIJyA9ICdNJztcbiAgLyoqXG4gICAqIOWumuS5ieWRqOi+ueWMuuWfn+W6lOivpeacieWkmuWuveOAglxuICAgKi9cbiAgQElucHV0KCkgbWFyZ2luID0gMDtcbiAgQElucHV0KCkgdHlwZTogJ2ltYWdlL3BuZycgfCAnaW1hZ2UvanBlZycgfCAnaW1hZ2Uvd2VicCcgPSAnaW1hZ2UvanBlZyc7XG4gIC8qKlxuICAgKiBcdEhlaWdodC9XaWR0aFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZSA9IDI1NjtcbiAgLy8gLyoqXG4gIC8vICAqIOWuveW6plxuICAvLyAgKi9cbiAgLy8gQElucHV0KCkgd2lkdGggPSAyNTY7XG4gIC8vIC8qKlxuICAvLyAgKiDpq5jluqZcbiAgLy8gICovXG4gIC8vIEBJbnB1dCgpIGhlaWdodDogbnVtYmVyO1xuICAvKipcbiAgICog5YmN5pmv6Imy77yM5YC85b+F6aG75Li65Y2B5YWt6L+b5Yi25qC85byP77yIUkdCQe+8iVxuICAgKi9cbiAgQElucHV0KCkgY29sb3JEYXJrID0gJyMwMDAwMDAnO1xuICAvKipcbiAgICog6IOM5pmv6Imy77yM5YC85b+F6aG75Li65Y2B5YWt6L+b5Yi25qC85byP77yIUkdCQe+8iVxuICAgKi9cbiAgQElucHV0KCkgY29sb3JMaWdodCA9ICcjZmZmZmZmJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2M6IGFueSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgUVJDb2RlLnRvRGF0YVVSTCh0aGlzLl9kb2MuZ2V0RWxlbWVudEJ5SWQoJ2NhbnZhcycpLCB0aGlzLmRhdGEsIHtcbiAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgIGVycm9yQ29ycmVjdGlvbkxldmVsOiB0aGlzLmxldmVsLFxuICAgICAgbWFyZ2luOiB0aGlzLm1hcmdpbixcbiAgICAgIHdpZHRoOiB0aGlzLnNpemUsXG4gICAgICBjb2xvcjoge1xuICAgICAgICBkYXJrOiB0aGlzLmNvbG9yRGFyayxcbiAgICAgICAgbGlnaHQ6IHRoaXMuY29sb3JMaWdodFxuICAgICAgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHJlbmRlcmVyT3B0czoge1xuICAgICAgICBxdWFsaXR5OiAwLjNcbiAgICAgIH1cbiAgICB9KVxuICAgIC50aGVuKHVybCA9PiB7XG4gICAgICB0aGlzLnVybENoYW5nZS5lbWl0KHVybCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddO1xuICAgIGlmIChkYXRhICYmIHRoaXMuaXNWYWxpZFFyQ29kZVRleHQoZGF0YS5jdXJyZW50VmFsdWUpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhkYXRhLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAvLyB0aGlzLnFyY29kZS5jbGVhcigpO1xuICAgICAgLy8gdGhpcy5xcmNvZGUubWFrZUNvZGUocXJEYXRhLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlzVmFsaWRRckNvZGVUZXh0ID0gKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIC8vIGlmICh0aGlzLmFsbG93RW1wdHlTdHJpbmcgPT09IGZhbHNlKSB7XG4gICAgLy8gICByZXR1cm4gISh0eXBlb2YgZGF0YSA9PT0gJ3VuZGVmaW5lZCcgfHwgZGF0YSA9PT0gJycpO1xuICAgIC8vIH1cbiAgICByZXR1cm4gISh0eXBlb2YgZGF0YSA9PT0gJ3VuZGVmaW5lZCcpO1xuICB9XG5cbn1cbiJdfQ==