@scandit/web-datacapture-barcode
Version:
Scandit Data Capture SDK for the Web
1 lines • 2.66 kB
JavaScript
import{RecommendedCameraSettings as e}from"./defaults/Defaults.js";import{BarcodeArSession as t}from"./BarcodeArSession.js";import{BarcodeArFeedback as n}from"./BarcodeArFeedback.js";import{CameraSettings as r,convertToPublicFrameData as i}from"@scandit/web-datacapture-core";import{warnMultithreadingUnavailable as a}from"@scandit/web-datacapture-core/build/js/private/utils/warnMultithreadingUnavailable.js";var o=class o{constructor(){this.skipSerialization=!0,this.type=`barcodeAr`,this._isEnabled=!0,this._context=null,this.listeners=new Set,this.privateListeners=new Set,this.workerMessageListener=this.onWorkerMessage.bind(this)}get context(){return this._context}static createRecommendedCameraSettings(){return new r(e)}set context(e){this._context=e}get allListeners(){return[...this.privateListeners,...this.listeners]}static async forContext(e,t){a();let r=new o;return r.feedback=await n.createDefaultBarcodeArFeedback(),r.settings=t,await e.setMode(r),r}isEnabled(){return this._isEnabled}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}set feedback(e){this._feedback=e}get feedback(){return this._feedback}async setEnabled(e){var t;this._isEnabled=e,await this.workerCommand(`barcodeArSetEnabled`,{enabled:e}),await((t=this.context)==null?void 0:t.update([{type:`modeEnabled`,newValue:e}],{updateContext:!1}))}async applySettings(e){this.settings=e,await this.workerCommand(`barcodeArApplySettings`,{settings:e.toJSONObject()})}toJSONObject(){return{type:this.type,enabled:this._isEnabled,settings:this.settings.toJSONObject()}}async attachedToContext(e){this._context=e,this._context.subscribeToWorkerMessages(this.workerMessageListener),await this.workerCommand(`barcodeArForSettings`,{settings:this.settings.toJSONObject()})}async detachedFromContext(){var e;await this.workerCommand(`barcodeArModeRemove`,{}),(e=this._context)==null||e.unsubscribeToWorkerMessages(this.workerMessageListener),this._context=null}async start(){return this.workerCommand(`barcodeArSearchStart`,{})}async stop(){return this.workerCommand(`barcodeArSearchStop`,{})}async pause(){return this.workerCommand(`barcodeArSearchPause`,{})}async workerCommand(e,t){this.context!=null&&await this.context.workerCommand(e,t)}addPrivateListener(e){this.privateListeners.add(e)}removePrivateListener(e){this.privateListeners.delete(e)}async onWorkerMessage(e){switch(e.type){case`barcodeArDidUpdateSession`:if(!this._isEnabled||!this._context)return;for(let r of this.allListeners){var n;(n=r.didUpdateSession)==null||n.call(r,this,t.fromJSON(e.payload.session),i(e.payload.frameData,this._context))}break;default:break}}};export{o as BarcodeAr};