UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

1 lines 3.05 kB
import {a as a$3}from'./chunk-74KP5NGF.js';import {a}from'./chunk-WPSMXGDG.js';import {a as a$2}from'./chunk-CLT5UZMK.js';import {a as a$1}from'./chunk-3YNK2VJA.js';import {CameraSettings,convertToPublicFrameData,Logger,DataCaptureContext}from'@scandit/web-datacapture-core';var u=class l{constructor(){this.type="barcodeCapture";this._isEnabled=true;this._feedback=a.default;this._context=null;this.listeners=new Set;this.allowedRemainingWorkerMessages=new Set;this.workerMessageListener=this.onWorkerMessage.bind(this);}static get recommendedCameraSettings(){return new CameraSettings(a$1.RecommendedCameraSettings)}get context(){return this._context}get feedback(){return this._feedback}static async forContext(e,a){let t=new l;return t.settings=a,e&&await e.setMode(t),t}async setFeedback(e){return this._feedback=e,this.notifyContext()}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.has(e)||this.listeners.add(e);}removeListener(e){this.listeners.delete(e);}toJSONObject(){return {type:this.type,enabled:this._isEnabled,feedback:this.feedback.toJSONObject(),settings:this.settings.toJSONObject()}}attachedToContext(e){this._context=e,this._context.subscribeToWorkerMessages(this.workerMessageListener);}async detachedFromContext(){var e;(e=this._context)==null||e.unsubscribeToWorkerMessages(this.workerMessageListener),this._context=null;}sendClearFrameDataRequest(e){setTimeout(()=>{var a;(a=this.context)==null||a.workerCommand("deleteFrameData",{frameId:e});},0);}async onDidScan(e){if(this.context==null)return;let a=a$2.fromJSON(e.payload.session),{frameData:t}=e.payload;if(!this._isEnabled){this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.clear();return}this.allowedRemainingWorkerMessages.add("successFeedback");let o=[];for(let r of this.listeners)if(r.didScan)try{let s=r.didScan(this,a,convertToPublicFrameData(t,this.context));s instanceof Promise&&await s;}catch(s){o.push(s);}this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.add("barcodeCaptureDidUpdateSession");for(let r of o)Logger.log(Logger.Level.Error,r);}onDidUpdateSession(e){let a=a$2.fromJSON(e.payload);if(!(!this._isEnabled&&!this.allowedRemainingWorkerMessages.has(e.type))){this.allowedRemainingWorkerMessages.delete(e.type);for(let t of this.listeners)t.didUpdateSession&&t.didUpdateSession(this,a);}}onSuccessFeedback(e){!this._isEnabled&&!this.allowedRemainingWorkerMessages.has(e.type)||(this.allowedRemainingWorkerMessages.delete(e.type),this.feedback.success.emit());}async onWorkerMessage(e){switch(e.type){case "barcodeCaptureDidScan":{this.onDidScan(e);break}case "barcodeCaptureDidUpdateSession":{this.onDidUpdateSession(e);break}case "successFeedback":{this.onSuccessFeedback(e);break}}}async notifyContext(){this.context!=null&&(this.settings=a$3(this.settings,DataCaptureContext.capabilityInfo),await this.context.update());}};export{u as a};