UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

1 lines 3.78 kB
import"../ScanIntention.js";import{ensureSmartScanIntentionSupport as e}from"../private/smartScanIntentionHelper.js";import"../SelectionMode.js";import{defaultSparkScan as t}from"../defaults/DefaultsSparkScan.js";import{SparkScanSession as n}from"./SparkScanSession.js";import{CameraSettings as r,DataCaptureContext as i,Logger as a,convertToPublicFrameData as o}from"@scandit/web-datacapture-core";var s=class s{constructor(){this.type=`sparkScan`,this._synchronousFrameFlow=!1,this._isEnabled=!0,this._isSuppressed=null,this._context=null,this.listeners=new Set,this.__modeViewListener=null,this.allowedRemainingWorkerMessages=new Set,this.workerMessageListener=this.onWorkerMessage.bind(this)}static get recommendedCameraSettings(){return r.fromJSON(t.CameraSettings.settings)}get context(){return this._context}static forSettings(e){let t=new s;return t.settings=e,t}isEnabled(){return this._isEnabled}async setEnabled(e){this._isSuppressed=null,this._isEnabled=e,await this.notifyContext()}isSuppressed(){return this._isSuppressed===!0}async setResultSuppressionEnabled(e){this._isSuppressed=e,await this.notifyContext()}async applySettings(e){var t;return this.settings=e,(t=this.__modeViewListener)==null||t.call(this,e),this.notifyContext()}_setModeViewListener(e){this.__modeViewListener=e,e&&e(this.settings)}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}toJSONObject(){let e={type:this.type,enabled:this._isEnabled,settings:this.settings.toJSONObject()};return this._isSuppressed!==null&&(e.isSuppressed=this._isSuppressed),e}async selectItemWithSmartScanSelection(){await this.workerCommand(`sparkScanSelectItemWithSmartScanSelection`,{})}setDelegate(e){this.delegate=e}async workerCommand(e,t){this.context&&await this.context.workerCommand(e,t)}attachedToContext(e){this._context=e,this._context.subscribeToWorkerMessages(this.workerMessageListener)}async detachedFromContext(){var e;await this.workerCommand(`sparkScanModeRemove`,{}),(e=this._context)==null||e.unsubscribeToWorkerMessages(this.workerMessageListener),this._context=null}sendClearFrameDataRequest(e){queueMicrotask(()=>{var t;(t=this.context)==null||t.workerCommand(`deleteFrameData`,{frameId:e})})}async onDidScan(e){if(this.context==null)return;let{frameData:t}=e.payload;if(this._isSuppressed){this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.clear();return}if(!this._isEnabled){this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.clear();return}this.allowedRemainingWorkerMessages.add(`successFeedback`);let r=[],i=n.fromJSON(e.payload.session);for(let e of this.listeners)if(e.didScan)try{let n=e.didScan(this,i,o(t,this.context));n instanceof Promise&&await n}catch(e){r.push(e)}this.sendClearFrameDataRequest(t.frameId),this.allowedRemainingWorkerMessages.add(`sparkScanDidUpdateSession`);for(let e of r)a.error(e)}onDidUpdateSession(e){if(!this._isEnabled&&!this.allowedRemainingWorkerMessages.has(e.type))return;this.allowedRemainingWorkerMessages.delete(e.type);let t=n.fromJSON(e.payload);for(let e of this.listeners){var r;(r=e.didUpdateSession)==null||r.call(e,this,t)}}async onWorkerMessage(e){switch(e.type){case`sparkScanDidScan`:await this.onDidScan(e);break;case`sparkScanDidUpdateSession`:this.onDidUpdateSession(e);break;case`sparkScanSwitchedToSmartScanSelection`:var t;(t=this.delegate)==null||t.onSwitchedToSmartScanSelection();break;case`sparkScanSwitchedAwayFromSmartScanSelection`:var n;(n=this.delegate)==null||n.onSwitchedAwayFromSmartScanSelection();break;default:}}async notifyContext(){this.context&&(this.settings.selectionMode===`auto`&&(this.settings.scanIntention=`smart`),this.settings=e(this.settings,i.capabilityInfo),await this.context.update())}};export{s as SparkScan};