Index3-403c88da.js 3.8 KB

1
  1. import{d as D,r as s,a as A,b as M,e as d,c as y,f as $,k as x,y as g,C as f,j as m,B as j,_ as H}from"./index-ba19c87a.js";import{B as R}from"./index-30278767.js";import{s as W,F as J,I as U}from"./vue-qrcode-reader-6750cc50.js";import{I as X}from"./index-9c6666b7.js";import"./use-route-503f7a9f.js";import"./index-81336658.js";import"./constant-eba5e2d8.js";import"./mount-component-6050520d.js";import"./use-scope-id-eeb8698e.js";import"./index-5cb3ebbf.js";import"./on-popup-reopen-d453be07.js";const Y={key:0,style:{height:"100vh",width:"100vw",display:"flex","flex-direction":"column",overflow:"hidden"}},G={style:{padding:"10px 16px","line-height":"0","align-items":"center",display:"flex","justify-content":"space-between"}},K={style:{"flex-grow":"1","border-top":"1px solid #eee","box-sizing":"border-box"}},L=D({__name:"Index3",emits:["success"],setup(Q,{expose:b,emit:k}){const l=s(!0),w=()=>{l.value=!0},u=()=>{l.value=!1},C=()=>{u()},S=k,T=()=>{const e=document.querySelector("input[name]");e.click(),console.log(e)},p=s("");function v(e){console.log(e),p.value=JSON.stringify(e.map(t=>t.rawValue)),S("success",p.value),u()}const B=s({facingMode:"environment"}),_=[{label:"rear camera",constraints:{facingMode:"environment"}},{label:"front camera",constraints:{facingMode:"user"}}],N=s(_);async function I(){const t=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:a})=>a==="videoinput");N.value=[..._,...t.map(({deviceId:a,label:o})=>({label:`${o} (ID: ${a})`,constraints:{deviceId:a}}))],n.value=""}function P(e,t){for(const a of e){const[o,...c]=a.cornerPoints;t.strokeStyle="red",t.beginPath(),t.moveTo(o.x,o.y);for(const{x:i,y:r}of c)t.lineTo(i,r);t.lineTo(o.x,o.y),t.closePath(),t.stroke()}}function E(e,t){for(const a of e){const{boundingBox:{x:o,y:c,width:i,height:r}}=a;t.lineWidth=2,t.strokeStyle="#007bff",t.strokeRect(o,c,i,r)}}function O(e,t){for(const a of e){const{boundingBox:o,rawValue:c}=a,i=o.x+o.width/2,r=o.y+o.height/2,z=Math.max(12,50*o.width/t.canvas.width);t.font=`bold ${z}px sans-serif`,t.textAlign="center",t.lineWidth=3,t.strokeStyle="#35495e",t.strokeText(a.rawValue,i,r),t.fillStyle="#5cb984",t.fillText(c,i,r)}}const F=s([{text:"nothing (default)",value:void 0},{text:"outline",value:P},{text:"centered text",value:O},{text:"bounding box",value:E}][1]),h=s({aztec:!1,code_128:!1,code_39:!1,code_93:!1,codabar:!1,databar:!1,databar_expanded:!1,data_matrix:!1,dx_film_edge:!1,ean_13:!1,ean_8:!1,itf:!1,maxi_code:!1,micro_qr_code:!1,pdf417:!1,qr_code:!0,rm_qr_code:!1,upc_a:!1,upc_e:!1,linear_codes:!1,matrix_codes:!1}),V=A(()=>Object.keys(h.value).filter(e=>h.value[e])),n=s("");function q(e){n.value=`[${e.name}]: `,e.name==="NotAllowedError"?n.value+="you need to grant camera access permission":e.name==="NotFoundError"?n.value+="no camera on this device":e.name==="NotSupportedError"?n.value+="secure context required (HTTPS, localhost)":e.name==="NotReadableError"?n.value+="is the camera already in use?":e.name==="OverconstrainedError"?n.value+="installed cameras are not suitable":e.name==="StreamApiNotSupportedError"?n.value+="Stream API is not supported in this browser":e.name==="InsecureContextError"?n.value+="Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.":n.value+=e.message,W({type:"danger",message:n.value})}return b({open:w,stop:u}),(e,t)=>{const a=R,o=X;return l.value?(m(),M("div",Y,[d("div",G,[d("div",null,[y(a,{plain:"",icon:"photo-o",type:"primary",size:"small",onClick:T},{default:$(()=>[j("打开图片")]),_:1})]),d("div",null,[y(o,{name:"close",size:"30",onClick:C})])]),d("div",K,[l.value?(m(),x(g(J),{key:0,onDetect:v,capture:null})):f("",!0),l.value?(m(),x(g(U),{key:1,constraints:B.value,track:F.value.value,formats:V.value,onError:q,onDetect:v,onCameraOn:I},null,8,["constraints","track","formats"])):f("",!0)])])):f("",!0)}}});const ue=H(L,[["__scopeId","data-v-e6e53448"]]);export{ue as default};