UNPKG

@scandit/web-datacapture-barcode

Version:

Scandit Data Capture SDK for the Web

1 lines 3.36 kB
import{BarcodeArFeedback as e}from"./BarcodeArFeedback.js";import{Camera as t,CameraPosition as n,FrameSourceState as r,TorchState as i,isCameraFrameSource as a}from"@scandit/web-datacapture-core";var o=class{constructor(e,t,n,r,a){this.torchState=i.Off,this.cameraSupportMap=new Map,this.cameras=[],this.view=e,this.context=t,this.barcodeAr=n,this.viewSettings=r,this.cameraSettings=a}get currentCamera(){if(a(this.context.frameSource))return this.context.frameSource;throw Error(`The current frame source is not a Camera`)}isCameraMirrored(){return this.currentCamera.getMirrorImageEnabled()}async prepare(){await this.barcodeAr.setEnabled(!1),this.barcodeAr.feedback=await e.createWithOptions(this.viewSettings.soundEnabled,this.viewSettings.hapticEnabled),this.barcodeAr.addPrivateListener(this),this.cameras=await t.getAll(!1,a(this.context.frameSource));let i=a(this.context.frameSource)?this.context.frameSource:this.cameras.find(e=>e.position===this.viewSettings.defaultCameraPosition)??this.cameras.find(e=>e.position===(this.viewSettings.defaultCameraPosition===n.WorldFacing?n.UserFacing:n.WorldFacing))??this.cameras[0]??t.pickBestGuess();await this.context.setFrameSource(i),await this.currentCamera.applySettings(this.cameraSettings),await this.currentCamera.switchToDesiredState(r.Standby);let o=await this.isTorchAvailableForCurrentCamera();this.view.setTorchAvailable(o)}async dispose(){var e;this.view.deleteAllViews(),await this.context.removeMode(this.barcodeAr),this.barcodeAr.removePrivateListener(this),await((e=this.context.frameSource)==null?void 0:e.switchToDesiredState(r.Off))}async startSearching(){var e;this.view.deleteAllViews(),await((e=this.context.frameSource)==null?void 0:e.switchToDesiredState(r.On)),await this.barcodeAr.setEnabled(!0),await this.barcodeAr.start()}async stopSearching(){var e;this.view.deleteAllViews(),await((e=this.context.frameSource)==null?void 0:e.switchToDesiredState(r.Off)),await this.barcodeAr.setEnabled(!1),await this.barcodeAr.stop()}async pauseSearching(){var e;this.view.deletePendingViews(),await((e=this.context.frameSource)==null?void 0:e.switchToDesiredState(r.Standby)),await this.barcodeAr.setEnabled(!1),await this.barcodeAr.pause()}emitTappedFeedback(){this.barcodeAr.feedback.tapped.emit()}didUpdateSession(e,t){Object.keys(t.addedTrackedBarcodes).length>0&&this.barcodeAr.feedback.scanned.emit(),this.view.render(t)}async isTorchAvailableForCurrentCamera(){let e=this.currentCamera.label,t=this.cameraSupportMap.get(e);if(t!==void 0)return t.torch;let n=await this.currentCamera.isTorchAvailable();return this.cameraSupportMap.set(e,{torch:n}),n}async onTorchButtonClicked(){let e=await this.isTorchAvailableForCurrentCamera();this.view.setTorchAvailable(e),e&&(await this.currentCamera.setDesiredTorchState(this.torchState===i.Off?i.On:i.Off),this.torchState=this.torchState===i.Off?i.On:i.Off,this.view.toggleTorchIcon(this.torchState))}async onCameraSwitchButtonClicked(){let e=this.currentCamera.getCurrentState(),r=this.currentCamera.position===n.UserFacing?n.WorldFacing:n.UserFacing,i=this.cameras.find(e=>e.position===r)??this.cameras[0]??t.pickBestGuessForPosition(r);await this.context.setFrameSource(i),await this.currentCamera.switchToDesiredState(e);let a=await this.isTorchAvailableForCurrentCamera();this.view.setTorchAvailable(a)}};export{o as BarcodeArPresenter};