@scandit/web-datacapture-barcode
Version:
Scandit Data Capture SDK for the Web
8 lines (5 loc) • 2.51 kB
JavaScript
import { a } from './chunk-QHNNJFNX.js';
import { b } from './chunk-XCZGCZ5K.js';
import { CameraSettings, convertToPublicFrameData, Logger } from '@scandit/web-datacapture-core';
var p=class d{constructor(){this.type="sparkScan";this._isEnabled=!0;this._context=null;this.listeners=new Set;this.allowedRemainingWorkerMessages=new Set;this.workerMessageListener=this.onWorkerMessage.bind(this);}static get recommendedCameraSettings(){return new CameraSettings(b.SparkScan.CameraSettings.settings)}get context(){return this._context}static forSettings(e){let a=new d;return a.settings=e,a}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.add(e);}removeListener(e){this.listeners.delete(e);}toJSONObject(){return {type:this.type,enabled:this._isEnabled,settings:this.settings.toJSONObject()}}async workerCommand(e,a){this.context&&await this.context.workerCommand(e,a);}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){queueMicrotask(()=>{var a;(a=this.context)==null||a.workerCommand("deleteFrameData",{frameId:e});});}async onDidScan(e){if(this.context==null)return;let a$1=a.fromJSON(e.payload.session),{frameData:t}=e.payload;if(!this._isEnabled){this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.clear();return}this.allowedRemainingWorkerMessages.add("successFeedback");let s=[];for(let r of this.listeners)if(r.didScan)try{let i=r.didScan(this,a$1,convertToPublicFrameData(t,this.context));i instanceof Promise&&await i;}catch(i){s.push(i);}this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.add("sparkScanDidUpdateSession");for(let r of s)Logger.log(Logger.Level.Error,r);}onDidUpdateSession(e){var t;let a$1=a.fromJSON(e.payload);if(!(!this._isEnabled&&!this.allowedRemainingWorkerMessages.has(e.type))){this.allowedRemainingWorkerMessages.delete(e.type);for(let s of this.listeners)(t=s.didUpdateSession)==null||t.call(s,this,a$1);}}async onWorkerMessage(e){switch(e.type){case"sparkScanDidScan":{this.onDidScan(e);break}case"sparkScanDidUpdateSession":{this.onDidUpdateSession(e);break}}}async notifyContext(){this.context&&await this.context.update();}};
export { p as a };