mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
1 line
18 KiB
JavaScript
1 line
18 KiB
JavaScript
|
|
(self.webpackChunkgabinete_digital=self.webpackChunkgabinete_digital||[]).push([[8206],{58206:function(e,t,i){"use strict";i.r(t),i.d(t,{pwa_camera:function(){return o}});var a=i(75485);let s=window.ImageCapture;void 0===s&&(s=class{constructor(e){if("video"!==e.kind)throw new DOMException("NotSupportedError");this._videoStreamTrack=e,"readyState"in this._videoStreamTrack||(this._videoStreamTrack.readyState="live"),this._previewStream=new MediaStream([e]),this.videoElement=document.createElement("video"),this.videoElementPlaying=new Promise(e=>{this.videoElement.addEventListener("playing",e)}),HTMLMediaElement?this.videoElement.srcObject=this._previewStream:this.videoElement.src=URL.createObjectURL(this._previewStream),this.videoElement.muted=!0,this.videoElement.setAttribute("playsinline",""),this.videoElement.play(),this.canvasElement=document.createElement("canvas"),this.canvas2dContext=this.canvasElement.getContext("2d")}get videoStreamTrack(){return this._videoStreamTrack}getPhotoCapabilities(){return new Promise(function(e,t){const i={current:0,min:0,max:0};e({exposureCompensation:i,exposureMode:"none",fillLightMode:["none"],focusMode:"none",imageHeight:i,imageWidth:i,iso:i,redEyeReduction:!1,whiteBalanceMode:"none",zoom:i}),t(new DOMException("OperationError"))})}setOptions(e={}){return new Promise(function(e,t){})}takePhoto(){const e=this;return new Promise(function(t,i){if("live"!==e._videoStreamTrack.readyState)return i(new DOMException("InvalidStateError"));e.videoElementPlaying.then(()=>{try{e.canvasElement.width=e.videoElement.videoWidth,e.canvasElement.height=e.videoElement.videoHeight,e.canvas2dContext.drawImage(e.videoElement,0,0),e.canvasElement.toBlob(t)}catch(a){i(new DOMException("UnknownError"))}})})}grabFrame(){const e=this;return new Promise(function(t,i){if("live"!==e._videoStreamTrack.readyState)return i(new DOMException("InvalidStateError"));e.videoElementPlaying.then(()=>{try{e.canvasElement.width=e.videoElement.videoWidth,e.canvasElement.height=e.videoElement.videoHeight,e.canvas2dContext.drawImage(e.videoElement,0,0),t(window.createImageBitmap(e.canvasElement))}catch(a){i(new DOMException("UnknownError"))}})})}}),window.ImageCapture=s;const o=class{constructor(e){(0,a.r)(this,e),this.facingMode="user",this.noDevicesText="No camera found",this.noDevicesButtonText="Choose image",this.showShutterOverlay=!1,this.flashIndex=0,this.hasCamera=null,this.rotation=0,this.deviceError=null,this.hasMultipleCameras=!1,this.hasFlash=!1,this.flashModes=[],this.flashMode="off",this.handlePickFile=e=>{},this.handleShutterClick=e=>{console.log(),this.capture()},this.handleRotateClick=e=>{this.rotate()},this.handleClose=e=>{this.handlePhoto&&this.handlePhoto(null)},this.handleFlashClick=e=>{this.cycleFlash()},this.handleCancelPhoto=e=>{const t=this.stream&&this.stream.getTracks()[0];let i=t&&t.getConstraints();this.photo=null,i?this.initCamera({video:{facingMode:i.facingMode}}):this.initCamera()},this.handleAcceptPhoto=e=>{this.handlePhoto&&this.handlePhoto(this.photo)},this.handleFileInputChange=async e=>{const t=e.target.files[0];try{const e=await this.getOrientation(t);console.log("Got orientation",e),this.photoOrientation=e}catch(e){}this.handlePhoto&&this.handlePhoto(t)},this.handleVideoMetadata=e=>{console.log("Video metadata",e)},this.isServer=(0,a.d)(this,"isServer")}async componentDidLoad(){this.isServer||(this.defaultConstraints={video:{facingMode:this.facingMode}},await this.queryDevices(),await this.initCamera())}componentDidUnload(){this.stopStream(),this.photoSrc&&URL.revokeObjectURL(this.photoSrc)}hasImageCapture(){return"ImageCapture"in window}async queryDevices(){try{const e=(await navigator.mediaDevices.enumerateDevices()).filter(e=>"videoinput"==e.kind);this.hasCamera=!!e.length,this.hasMultipleCameras=e.length>1}catch(e){this.deviceError=e}}async initCamera(e){e||(e=this.defaultConstraints);try{const t=await navigator.mediaDevices.getUserMedia(Object.assign({video:!0,audio:!1},e));this.initStream(t)}catch(t){this.deviceError=t,this.handleNoDeviceError&&this.handleNoDeviceError(t)}}async init
|