UNPKG

@syncfusion/ej2-barcode-generator

Version:

Barcode generator component is a pure JavaScript library which will convert a string to Barcode and show it to the user. This supports major 1D and 2D barcodes including coda bar, code 128, QR Code.

159 lines (158 loc) 5.31 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import { OneDimension } from '../one-dimension'; /** * This class is used to calculate the barcode of type Universal Product Code barcode */ var UpcE = /** @class */ (function (_super) { __extends(UpcE, _super); function UpcE() { return _super !== null && _super.apply(this, arguments) || this; } /** * Validate the given input. * * @returns {string} Validate the given input. * @param {string} value - provide the input values . * @private */ UpcE.prototype.validateInput = function (value) { if (value.search(/^[0-9]{6}$/) !== -1) { return undefined; } else { return 'Accepts 6 numeric characters.'; } }; UpcE.prototype.checkSum = function (value) { var result = 0; var i; for (i = 1; i < 11; i += 2) { // eslint-disable-next-line result += parseInt(value[i], undefined); } for (i = 0; i < 11; i += 2) { // eslint-disable-next-line result += parseInt(value[i], undefined) * 3; } return (10 - (result % 10)) % 10; }; // eslint-disable-next-line UpcE.prototype.getStructure = function () { return { '0': 'EEEOOO', '1': 'EEOEOO', '2': 'EEOOEO', '3': 'EEOOOE', '4': 'EOEEOO', '5': 'EOOEEO', '6': 'EOOOEE', '7': 'EOEOEO', '8': 'EOEOOE', '9': 'EOOEOE' }; }; UpcE.prototype.getValue = function () { return ['XX00000XXX', 'XX10000XXX', 'XX20000XXX', 'XXX00000XX', 'XXXX00000X', 'XXXXX00005', 'XXXXX00006', 'XXXXX00007', 'XXXXX00008', 'XXXXX00009']; }; UpcE.prototype.getExpansion = function (lastDigit) { var value = this.getValue(); return value["" + lastDigit]; }; UpcE.prototype.getUpcValue = function () { var lastDigit = this.value[this.value.length - 1]; var expansionValue = this.getExpansion(lastDigit); var result = ''; var index = 0; for (var i = 0; i < expansionValue.length; i++) { var value = expansionValue[parseInt(i.toString(), 10)]; if (value === 'X') { result += this.value[index++]; } else { result += value; } } result = '' + '0' + result; var encodingValue = '' + result; if (this.enableCheckSum) { encodingValue += this.checkSum(result); } return encodingValue; }; // eslint-disable-next-line UpcE.prototype.getBinaries = function () { return { 'O': [ '0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011' ], 'E': [ '0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111' ] }; }; UpcE.prototype.encoding = function (upcAValue, string, structure) { var code; var tempValue; // eslint-disable-next-line var codes = this.getBinaries(); for (var i = 0; i < string.length; i++) { tempValue = codes[structure[parseInt(i.toString(), 10)]]; if (i === 0) { code = tempValue[string[parseInt(i.toString(), 10)]]; } else { code += tempValue[string[parseInt(i.toString(), 10)]]; } } return code; }; /** * Draw the barcode SVG.\ * * @returns {void} Draw the barcode SVG . * @param {HTMLElement} canvas - Provide the canvas element . * @private */ UpcE.prototype.draw = function (canvas) { var endBars = '101'; var middleBar = '010101'; var endDigits = '00000000'; var code = []; var upcAValue = this.getUpcValue(); // eslint-disable-next-line var structureValue = this.getStructure(); var structure = structureValue[upcAValue[upcAValue.length - 1]]; code.push(endDigits); code.push(endBars); code.push(this.encoding(upcAValue, this.value, structure)); code.push(middleBar); code.push(endDigits); var renderText = upcAValue[0] + this.value + upcAValue[upcAValue.length - 1]; this.calculateBarCodeAttributes(code, canvas, this.displayText.text === '' ? renderText : undefined); }; return UpcE; }(OneDimension)); export { UpcE };