import {b}from'./chunk-OLJXVUYE.js';import {a}from'./chunk-IHTTMWUR.js';import {CameraSettings}from'@scandit/web-datacapture-core';import {warnMultithreadingUnavailable}from'@scandit/web-datacapture-core/build/js/private/utils/warnMultithreadingUnavailable.js';var o=class n{constructor(){this.type="barcodeTracking";this._isEnabled=true;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",true),e}get context(){return this._context}set context(e){this._context=e;}static async forContext(e,a){warnMultithreadingUnavailable();let t=new n;return t.settings=a,e!=null&&await e.setMode(t),t}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 a$1;switch(e.type){case "barcodeBatchDidUpdateSession":{{let t=a.fromJSON(e.payload);if(!this._isEnabled)return;for(let r of [...this.privateListeners,...this.listeners])r.didUpdateSession&&r.didUpdateSession(this,t);}break}case "didTapTrackedBarcode":{for(let t of this.privateListeners)(a$1=t.didTapTrackedBarcode)==null||a$1.call(t,e.payload);break}}}async notifyContext(){if(this.context)return this.context.update()}};export{o as a};