barcode-detection
Version:
Polyfill for the Barcode Detection API based on Dynamsoft Barcode Reader or ZXing.
3 lines (2 loc) • 6.91 kB
JavaScript
var e=require("dynamsoft-javascript-barcode"),r=require("@zxing/library");function t(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach(function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}}),r.default=e,r}var a=/*#__PURE__*/t(r);e.BarcodeReader.engineResourcePath="https://unpkg.com/dynamsoft-javascript-barcode@9.6.20/dist/";var n,o=new Map([["aztec",e.EnumBarcodeFormat.BF_AZTEC],["codabar",e.EnumBarcodeFormat.BF_CODABAR],["code_11",e.EnumBarcodeFormat.BF_CODE_11],["code_39",e.EnumBarcodeFormat.BF_CODE_39],["code_93",e.EnumBarcodeFormat.BF_CODE_93],["code_128",e.EnumBarcodeFormat.BF_CODE_128],["data_matrix",e.EnumBarcodeFormat.BF_DATAMATRIX],["ean_8",e.EnumBarcodeFormat.BF_EAN_8],["ean_13",e.EnumBarcodeFormat.BF_EAN_13],["itf",e.EnumBarcodeFormat.BF_ITF],["pdf417",e.EnumBarcodeFormat.BF_PDF417],["qr_code",e.EnumBarcodeFormat.BF_QR_CODE],["micro_qr_code",e.EnumBarcodeFormat.BF_MICRO_QR],["gs1_composite",e.EnumBarcodeFormat.BF_GS1_COMPOSITE],["gs1_databar",e.EnumBarcodeFormat.BF_GS1_DATABAR],["gs1_databar_expanded",e.EnumBarcodeFormat.BF_GS1_DATABAR_EXPANDED],["gs1_databar_expanded_stacked",e.EnumBarcodeFormat.BF_GS1_DATABAR_EXPANDED_STACKED],["gs1_databar_limited",e.EnumBarcodeFormat.BF_GS1_DATABAR_LIMITED],["gs1_databar_omnidirectional",e.EnumBarcodeFormat.BF_GS1_DATABAR_OMNIDIRECTIONAL],["gs1_databar_stacked",e.EnumBarcodeFormat.BF_GS1_DATABAR_STACKED],["gs1_databar_stacked_omnidirectional",e.EnumBarcodeFormat.BF_GS1_DATABAR_STACKED_OMNIDIRECTIONAL],["gs1_databar_truncated",e.EnumBarcodeFormat.BF_GS1_DATABAR_TRUNCATED],["maxi_code",e.EnumBarcodeFormat.BF_MAXICODE],["upc_a",e.EnumBarcodeFormat.BF_UPC_A],["upc_e",e.EnumBarcodeFormat.BF_UPC_E]]),i=new Map(Array.from(o).map(function(e){return[e[1],e[0]]})),c=Array.from(o.keys()),u=/*#__PURE__*/function(){function r(e){var r;if(this.formats=void 0,this.formats=null!=(r=null==e?void 0:e.formats)?r:c,0===this.formats.length)throw new TypeError("");if(this.formats.includes("unknown"))throw new TypeError("");this.updateRuntimeSettings()}var t=r.prototype;return t.updateRuntimeSettings=function(){try{var e=this,r=function(){if(e.formats.length!=c.length)return console.log("update runtime settings for formats..."),Promise.resolve(n.getRuntimeSettings()).then(function(r){for(var t=void 0,a=0;a<e.formats.length;a++){var i=o.get(e.formats[a]);i&&(0===a?t=i:t|=i)}var c=function(){if(t)return r.barcodeFormatIds=t,Promise.resolve(n.updateRuntimeSettings(r)).then(function(){})}();if(c&&c.then)return c.then(function(){})})}();return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},r.setEngineResourcePath=function(r){e.BarcodeReader.engineResourcePath=r},r.setLicense=function(r){e.BarcodeReader.license=r},r.getLicense=function(){return e.BarcodeReader.license},r.init=function(){try{return Promise.resolve(e.BarcodeReader.createInstance()).then(function(e){return n=e})}catch(e){return Promise.reject(e)}},r.getSupportedFormats=function(){return Promise.resolve(c)},t.detect=function(e){try{var r=this;if(!n)throw new Error("Dynamsoft Barcode Reader has not been initialized.");return Promise.resolve(n.decode(e)).then(function(e){var t=[];return e.forEach(function(e){var a=r.wrapResult(e);t.push(a)}),t})}catch(e){return Promise.reject(e)}},t.wrapResult=function(e){var r,t,a,n,o=[];r=e.localizationResult.x1,t=e.localizationResult.y1,a=e.localizationResult.x1,n=e.localizationResult.y1;for(var c=1;c<5;c++){var u=e.localizationResult["x"+c],s=e.localizationResult["y"+c];r=Math.min(u,r),t=Math.min(s,t),a=Math.max(u,a),n=Math.max(s,n),o.push({x:u,y:s})}var m=new DOMRectReadOnly(r,t,a-r,n-t),d=i.get(e.barcodeFormat);return d||(d="unknown"),{boundingBox:m,rawValue:e.barcodeText,format:d,cornerPoints:o}},r}(),s=new Map([["aztec",a.BarcodeFormat.AZTEC],["code_39",a.BarcodeFormat.CODE_39],["code_128",a.BarcodeFormat.CODE_128],["data_matrix",a.BarcodeFormat.DATA_MATRIX],["ean_8",a.BarcodeFormat.EAN_8],["ean_13",a.BarcodeFormat.EAN_13],["itf",a.BarcodeFormat.ITF],["pdf417",a.BarcodeFormat.PDF_417],["qr_code",a.BarcodeFormat.QR_CODE],["upc_a",a.BarcodeFormat.UPC_A],["upc_e",a.BarcodeFormat.UPC_E]]),m=new Map(Array.from(s).map(function(e){return[e[1],e[0]]})),d=Array.from(s.keys()),B=/*#__PURE__*/function(){function e(e){var t;this.reader=void 0,this.canvas=void 0;var n=null!=(t=null==e?void 0:e.formats)?t:d;if(0===n.length)throw new TypeError("");if(n.includes("unknown"))throw new TypeError("");if("ZXingBrowser"in window){var o=window.ZXingBrowser;this.reader=new o.BrowserMultiFormatReader}else{var i=new Map([[a.DecodeHintType.POSSIBLE_FORMATS,n.map(function(e){return s.get(e)})]]);this.reader=new r.MultiFormatReader,this.reader.setHints(i)}this.canvas=document.createElement("canvas")}e.getSupportedFormats=function(){return Promise.resolve(d)};var t=e.prototype;return t.detect=function(e){try{var r,t,a=this,n=[];t="ZXingBrowser"in window?e:e instanceof HTMLCanvasElement?a.createBinaryBitmapFromCanvas(e):a.createBinaryBitmap(e);try{r=a.reader.decode(t)}catch(e){return Promise.resolve(n)}var o=a.wrapResult(r);return n.push(o),Promise.resolve(n)}catch(e){return Promise.reject(e)}},t.createBinaryBitmap=function(e){var r,t,a=this.canvas.getContext("2d");return e instanceof HTMLVideoElement?(r=e.videoWidth,t=e.videoHeight):(r=e.naturalWidth,t=e.naturalHeight),this.canvas.width=r,this.canvas.height=t,a.drawImage(e,0,0,r,t),this.createBinaryBitmapFromCanvas(this.canvas)},t.createBinaryBitmapFromCanvas=function(e){var t=new r.HTMLCanvasElementLuminanceSource(e),a=new r.HybridBinarizer(t);return new r.BinaryBitmap(a)},t.wrapResult=function(e){var r,t,a,n,o=e.getResultPoints();r=o[0].getX(),t=o[0].getY(),a=o[0].getX(),n=o[0].getY(),o.forEach(function(e){var o=e.getX(),i=e.getY();r=Math.min(o,r),t=Math.min(i,t),a=Math.max(o,a),n=Math.max(i,n)});var i=new DOMRectReadOnly(r,t,a-r,n-t),c=[{x:i.left,y:i.top},{x:i.right,y:i.top},{x:i.right,y:i.bottom},{x:i.left,y:i.bottom}],u=m.get(e.getBarcodeFormat());return u||(u="unknown"),{boundingBox:i,rawValue:e.getText(),format:u,cornerPoints:c}},e}(),_=/*#__PURE__*/function(){function e(r){this.reader=void 0,this.reader="DBR"===e.engine?new u(r):new B(r)}return e.getSupportedFormats=function(){try{return Promise.resolve("DBR"===e.engine?u.getSupportedFormats():B.getSupportedFormats())}catch(e){return Promise.reject(e)}},e.prototype.detect=function(e){try{return Promise.resolve(this.reader.detect(e))}catch(e){return Promise.reject(e)}},e.setDBREngineResourcePath=function(e){u.setEngineResourcePath(e)},e.setDBRLicense=function(e){u.setLicense(e)},e.getDBRLicense=function(e){return u.getLicense()},e.initDBR=function(){try{return Promise.resolve(u.init())}catch(e){return Promise.reject(e)}},e}();_.engine="DBR",module.exports=_;
//# sourceMappingURL=barcode-detector.cjs.map