UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

8 lines (5 loc) 2.59 kB
import { a } from './chunk-FLTJ6FPP.js'; import { b } from './chunk-XCZGCZ5K.js'; import { CameraSettings, BrowserHelper, Logger, Feature } from '@scandit/web-datacapture-core'; var p=class l{constructor(){this.type="barcodeTracking";this._isEnabled=!0;this._context=null;this.listeners=[];this.privateListeners=new Set;this.workerMessageListener=this.onWorkerMessage.bind(this);}static get recommendedCameraSettings(){let e=new CameraSettings(b.BarcodeBatch.RecommendedCameraSettings);return e.setProperty("grayScaleFrameReader",!0),e}get context(){return this._context}set context(e){this._context=e;}static async forContext(e,r){let[{missingFeatures:t},i]=await Promise.all([BrowserHelper.checkBrowserCompatibility(),BrowserHelper.checkMultithreadingSupport()]);i||(Logger.log(Logger.Level.Warn,"Multithreading is not supported."),t.includes(Feature.CrossOriginIsolated)&&Logger.log(Logger.Level.Warn,"Headers for Multithreading are absent or misconfigured: please check how to configure them properly: https://docs.scandit.com/sdks/web/matrixscan/get-started#enable-browser-multithreading"),t.includes(Feature.SharedArrayBuffer)&&Logger.log(Logger.Level.Warn,"SharedArrayBuffer not supported. Check the requirements here: https://docs.scandit.com/system-requirements#web-sdk"));let s=new l;return s.settings=r,e!=null&&await e.addMode(s),s}isEnabled(){return this._isEnabled}async setEnabled(e){this._isEnabled=e,await this.notifyContext();}async applySettings(e){return this.settings=e,this.notifyContext()}addListener(e){this.listeners.includes(e)||this.listeners.push(e);}removeListener(e){this.listeners.includes(e)&&this.listeners.splice(this.listeners.indexOf(e),1);}toJSONObject(){return {type:this.type,enabled:this._isEnabled,settings:this.settings.toJSONObject()}}attachedToContext(e){this._context=e,this._context.subscribeToWorkerMessages(this.workerMessageListener);}detachedFromContext(){var e;(e=this._context)==null||e.unsubscribeToWorkerMessages(this.workerMessageListener),this._context=null;}addPrivateListener(e){this.privateListeners.add(e);}removePrivateListener(e){this.privateListeners.delete(e);}async onWorkerMessage(e){var r;switch(e.type){case"barcodeBatchDidUpdateSession":{{let t=a.fromJSON(e.payload);if(!this._isEnabled)return;for(let i of [...this.privateListeners,...this.listeners])i.didUpdateSession&&i.didUpdateSession(this,t);}break}case"didTapTrackedBarcode":{for(let t of this.privateListeners)(r=t.didTapTrackedBarcode)==null||r.call(t,e.payload);break}}}async notifyContext(){if(this.context)return this.context.update()}}; export { p as a };