mirror of
git://soft.sys114.com/mainsail
synced 2026-02-04 16:00:35 +09:00
2 lines
5.3 KiB
JavaScript
2 lines
5.3 KiB
JavaScript
import{_ as l}from"./WebcamNozzleCrosshair-OgFJAMdG.js";import{m as u,B as p,H as g,P as h,R as f,W as c,C as _,n as d}from"./index-Bku7SJna.js";import{m as w,n as b,r as v}from"./vuetify-Ce4WN_Dg.js";import"./overlayscrollbars-CiKU261J.js";import"./echarts-DzoUeqWp.js";var S=Object.defineProperty,C=Object.getOwnPropertyDescriptor,a=(o,t,e,s)=>{for(var i=s>1?void 0:s?C(t,e):t,n=o.length-1,m;n>=0;n--)(m=o[n])&&(i=(s?m(t,e,i):m(i))||i);return s&&i&&S(t,e,i),i};let r=class extends u(p,g){constructor(){super(...arguments),this.isVisibleDocument=!0,this.isVisibleViewport=!1,this.status="connecting",this.statusMessage="",this.timer=null,this.request_start_time=performance.now(),this.time=0,this.request_time=0,this.request_time_smoothing=.2,this.currentFPS=null,this.fpsTimer=null,this.frames=0,this.aspectRatio=null}get webcamStyle(){var e,s,i;const t={transform:this.generateTransform((e=this.camSettings.flip_horizontal)!=null?e:!1,(s=this.camSettings.flip_vertical)!=null?s:!1,(i=this.camSettings.rotation)!=null?i:0),aspectRatio:1.7777777777777777,maxHeight:window.innerHeight-155+"px",maxWidth:"auto"};if(this.aspectRatio&&(t.aspectRatio=this.aspectRatio,t.maxWidth=(window.innerHeight-155)*this.aspectRatio+"px"),this.aspectRatio&&[90,270].includes(this.camSettings.rotation)){t.transform==="none"&&(t.transform="");const n=1/this.aspectRatio;t.transform+=" rotate("+this.camSettings.rotation+"deg) scale("+n+")"}return t}get fpsOutput(){return this.currentFPS===null?"--":this.currentFPS<10?"0"+this.currentFPS.toString():this.currentFPS}get showFpsCounter(){var t,e;return this.showFps?!((e=(t=this.camSettings.extra_data)==null?void 0:t.hideFps)!=null&&e):!1}get url(){var t;return this.convertUrl((t=this.camSettings)==null?void 0:t.snapshot_url,this.printerUrl)}get isVisible(){return this.isVisibleDocument&&this.isVisibleViewport}get showNozzleCrosshair(){var e,s;return((s=(e=this.camSettings.extra_data)==null?void 0:e.nozzleCrosshair)!=null?s:!1)&&this.status==="connected"}mounted(){document.addEventListener("visibilitychange",this.documentVisibilityChanged)}beforeDestroy(){document.removeEventListener("visibilitychange",this.documentVisibilityChanged),this.stopStream()}documentVisibilityChanged(){const t=document.visibilityState;this.isVisibleDocument=t==="visible"}viewportVisibilityChanged(t){this.isVisibleViewport=t}isVisibleChanged(t){if(t){this.startStream();return}this.stopStream()}refreshFrame(){if(!this.isVisible)return;this.timer!==null&&(window.clearTimeout(this.timer),this.timer=null);const t=new URL(this.url);t.searchParams.append("bypassCache",new Date().getTime().toString()),this.image.src=t.toString(),this.request_start_time=performance.now()}onLoad(){this.status!=="connected"&&(this.status="connected",this.statusMessage=""),this.frames++,this.aspectRatio===null&&(this.aspectRatio=this.image.naturalWidth/this.image.naturalHeight);const e=1e3/(this.camSettings.target_fps||10),s=performance.now()-this.request_start_time;this.request_time=this.request_time*this.request_time_smoothing+s*(1-this.request_time_smoothing);const i=Math.max(0,e-this.request_time);this.timer=window.setTimeout(this.refreshFrame,i)}onError(){this.status="error",this.statusMessage=this.$t("Panels.WebcamPanel.ErrorWhileConnecting",{url:this.url}).toString(),this.timer===null&&(this.timer=window.setTimeout(this.refreshFrame,1e3))}startStream(){this.isVisible&&(this.status!=="connected"&&(this.status="connecting",this.statusMessage=this.$t("Panels.WebcamPanel.ConnectingTo",{url:this.url}).toString()),this.clearTimers(),this.fpsTimer=window.setInterval(()=>{this.currentFPS=this.frames,this.frames=0},1e3),this.refreshFrame())}stopStream(){this.clearTimers()}clearTimers(){this.timer&&(window.clearTimeout(this.timer),this.timer=null),this.fpsTimer&&(window.clearTimeout(this.fpsTimer),this.fpsTimer=null,this.frames=0)}camSettingsChanged(){this.aspectRatio=null,this.stopStream(),this.status="connecting",this.startStream()}};a([h({required:!0})],r.prototype,"camSettings",2);a([h({default:null})],r.prototype,"printerUrl",2);a([h({default:!0})],r.prototype,"showFps",2);a([f("image")],r.prototype,"image",2);a([c("isVisible",{immediate:!0})],r.prototype,"isVisibleChanged",1);a([c("camSettings",{deep:!0})],r.prototype,"camSettingsChanged",1);r=a([_],r);var y=function(){var t=this,e=t._self._c;return t._self._setupProxy,e("div",{directives:[{name:"observe-visibility",rawName:"v-observe-visibility",value:t.viewportVisibilityChanged,expression:"viewportVisibilityChanged"}],staticClass:"d-flex justify-center webcamBackground"},[e("img",{directives:[{name:"show",rawName:"v-show",value:t.status==="connected",expression:"status === 'connected'"}],ref:"image",staticClass:"webcamImage",style:t.webcamStyle,attrs:{draggable:"false",alt:t.camSettings.name,src:"#"},on:{error:t.onError,load:t.onLoad}}),t.status==="connected"&&t.showFpsCounter?e("span",{staticClass:"webcamFpsOutput"},[t._v(" "+t._s(t.$t("Panels.WebcamPanel.FPS"))+": "+t._s(t.fpsOutput)+" ")]):t._e(),t.showNozzleCrosshair?e(l,{attrs:{webcam:t.camSettings}}):t._e(),t.status!=="connected"?e(w,[e(b,{staticClass:"_webcam_mjpegstreamer_output text-center d-flex flex-column justify-center align-center"},[t.status==="connecting"?e(v,{staticClass:"mb-3",attrs:{indeterminate:"",color:"primary"}}):t._e(),e("span",{staticClass:"mt-3"},[t._v(t._s(t.statusMessage))])],1)],1):t._e()],1)},x=[],P=d(r,y,x,!1,null,"a21ba006");const M=P.exports;export{M as default};
|