UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

1 lines 2.03 kB
import{BarcodeBatchSession as e}from"./BarcodeBatchSession.js";import{defaultBarcodeBatch as t}from"./defaults/DefaultsBarcodeBatch.js";import{CameraSettings as n}from"@scandit/web-datacapture-core";import{warnMultithreadingUnavailable as r}from"@scandit/web-datacapture-core/build/js/private/utils/warnMultithreadingUnavailable.js";var i=class i{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(){return new n(t.RecommendedCameraSettings)}get context(){return this._context}set context(e){this._context=e}static async forContext(e,t){r();let n=new i;return n.settings=t,e!=null&&await e.setMode(n),n}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(t){switch(t.type){case`barcodeBatchDidUpdateSession`:{let n=e.fromJSON(t.payload);if(!this._isEnabled)return;for(let e of[...this.privateListeners,...this.listeners])e.didUpdateSession&&e.didUpdateSession(this,n)}break;case`didTapTrackedBarcode`:for(let e of this.privateListeners){var n;(n=e.didTapTrackedBarcode)==null||n.call(e,t.payload)}break;default:break}}async notifyContext(){if(this.context)return this.context.update()}};export{i as BarcodeBatch};