@scandit/web-datacapture-barcode
Version:
Scandit Data Capture SDK for the Web
1 lines • 3.69 kB
JavaScript
import{defaultBarcodeFind as e}from"../defaults/DefaultsBarcodeFind.js";import{BarcodeFindFeedback as t}from"./BarcodeFindFeedback.js";import{BarcodeFindItem as n,BarcodeFindItemSearchOptions as r}from"./BarcodeFindItem.js";import{BarcodeFindSession as i}from"./BarcodeFindSession.js";import{CameraSettings as a,convertToPublicFrameData as o}from"@scandit/web-datacapture-core";import{warnMultithreadingUnavailable as s}from"@scandit/web-datacapture-core/build/js/private/utils/warnMultithreadingUnavailable.js";var c=class c{constructor(){this.feedback=t.createDefaultFeedback(),this.skipSerialization=!0,this.type=`barcodeFind`,this._isEnabled=!0,this._context=null,this.listeners=new Set,this.privateListeners=new Set,this.workerMessageListener=this.onWorkerMessage.bind(this),this._transformer=null}static get recommendedCameraSettings(){return new a(e.CameraSettings.settings)}get context(){return this._context}get allListeners(){return[...this.privateListeners,...this.listeners]}static async forSettings(e){s();let t=new c;return t.settings=e,t}isEnabled(){return this._isEnabled}async setEnabled(e){var t;this._isEnabled=e,await this.workerCommand(`barcodeFindSetEnabled`,{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(`barcodeFindApplySettings`,{settings:e.toJSONObject()})}addListener(e){this.listeners.add(e)}removeListener(e){this.listeners.delete(e)}async setItemList(e){for(let n of this.privateListeners){var t;(t=n.onSetItemList)==null||t.call(n,e)}return this.workerCommand(`barcodeFindSetItemList`,{itemList:e.map(e=>e.toJSONObject())})}async setBarcodeTransformer(e){var t;return this._transformer=e,this.workerCommand(`barcodeFindSetTransformerFunction`,{functionAsString:(t=this._transformer)==null?void 0:t.transformBarcodeData.toString()})}async start(){return this.workerCommand(`barcodeFindSearchStart`,{})}async stop(){return this.workerCommand(`barcodeFindSearchStop`,{})}async pause(){return this.workerCommand(`barcodeFindSearchPause`,{})}toJSONObject(){return{type:this.type,enabled:this.isEnabled(),settings:this.settings.toJSONObject()}}async workerCommand(e,t){this.context!=null&&await this.context.workerCommand(e,t)}async attachedToContext(e){this._context=e,this._context.subscribeToWorkerMessages(this.workerMessageListener),await this.workerCommand(`barcodeFindForSettings`,{settings:this.settings.toJSONObject()})}async detachedFromContext(){var e;await this.workerCommand(`barcodeFindModeRemove`,{}),(e=this._context)==null||e.unsubscribeToWorkerMessages(this.workerMessageListener),this._context=null}async onWorkerMessage(e){switch(e.type){case`barcodeFindDidUpdateSession`:if(this._context==null)return;for(let n of this.allListeners){var t;(t=n.onDidUpdateSession)==null||t.call(n,this,i.fromJSON(e.payload.session),o(e.payload.frameData,this._context))}break;case`barcodeFindSearchPaused`:for(let t of this.allListeners){let i=e.payload.foundItems.map(e=>new n(new r(e),null));t.didPauseSearch(i)}break;case`barcodeFindSearchStarted`:for(let e of this.allListeners)e.didStartSearch();break;case`barcodeFindSearchStopped`:for(let t of this.allListeners){let i=e.payload.foundItems.map(e=>new n(new r(e),null));t.didStopSearch(i)}break;case`barcodeFindListUpdatedFeedback`:for(let e of this.allListeners){var a;(a=e.onFindListUpdatedFeedback)==null||a.call(e)}break;case`barcodeFindFeedback`:for(let e of this.allListeners){var s;(s=e.onFeedback)==null||s.call(e)}break;default:}}addPrivateListener(e){this.privateListeners.add(e)}removePrivateListener(e){this.privateListeners.delete(e)}};export{c as BarcodeFind};