Index3-38f5e417.js 3.8 KB

1
  1. import{d as D,r as s,a as A,b as M,e as d,c as x,f as $,k as y,B as g,C as f,j as m,s as j,_ as H}from"./index-ddf66cb5.js";import{B as R}from"./index-f37a4c38.js";import{s as W,F as J,k as U}from"./vue-qrcode-reader-1a1b35e0.js";import{I as X}from"./index-e9453d64.js";import"./use-route-0a2b7081.js";import"./index-856231c7.js";import"./mount-component-8daea98e.js";import"./use-scope-id-7611483c.js";import"./index-c1d3cef3.js";import"./on-popup-reopen-8ab517b6.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 t=document.querySelector("input[name]");t.click(),console.log(t)},p=s("");function v(t){console.log(t),p.value=JSON.stringify(t.map(e=>e.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 P(){const e=(await navigator.mediaDevices.enumerateDevices()).filter(({kind:n})=>n==="videoinput");N.value=[..._,...e.map(({deviceId:n,label:o})=>({label:`${o} (ID: ${n})`,constraints:{deviceId:n}}))],a.value=""}function E(t,e){for(const n of t){const[o,...c]=n.cornerPoints;e.strokeStyle="red",e.beginPath(),e.moveTo(o.x,o.y);for(const{x:i,y:r}of c)e.lineTo(i,r);e.lineTo(o.x,o.y),e.closePath(),e.stroke()}}function O(t,e){for(const n of t){const{boundingBox:{x:o,y:c,width:i,height:r}}=n;e.lineWidth=2,e.strokeStyle="#007bff",e.strokeRect(o,c,i,r)}}function F(t,e){for(const n of t){const{boundingBox:o,rawValue:c}=n,i=o.x+o.width/2,r=o.y+o.height/2,z=Math.max(12,50*o.width/e.canvas.width);e.font=`bold ${z}px sans-serif`,e.textAlign="center",e.lineWidth=3,e.strokeStyle="#35495e",e.strokeText(n.rawValue,i,r),e.fillStyle="#5cb984",e.fillText(c,i,r)}}const I=s([{text:"nothing (default)",value:void 0},{text:"outline",value:E},{text:"centered text",value:F},{text:"bounding box",value:O}][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(t=>h.value[t])),a=s("");function q(t){a.value=`[${t.name}]: `,t.name==="NotAllowedError"?a.value+="you need to grant camera access permission":t.name==="NotFoundError"?a.value+="no camera on this device":t.name==="NotSupportedError"?a.value+="secure context required (HTTPS, localhost)":t.name==="NotReadableError"?a.value+="is the camera already in use?":t.name==="OverconstrainedError"?a.value+="installed cameras are not suitable":t.name==="StreamApiNotSupportedError"?a.value+="Stream API is not supported in this browser":t.name==="InsecureContextError"?a.value+="Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.":a.value+=t.message,W({type:"danger",message:a.value})}return b({open:w,stop:u}),(t,e)=>{const n=R,o=X;return l.value?(m(),M("div",Y,[d("div",G,[d("div",null,[x(n,{plain:"",icon:"photo-o",type:"primary",size:"small",onClick:T},{default:$(()=>e[0]||(e[0]=[j("打开图片")])),_:1})]),d("div",null,[x(o,{name:"close",size:"30",onClick:C})])]),d("div",K,[l.value?(m(),y(g(J),{key:0,onDetect:v,capture:null})):f("",!0),l.value?(m(),y(g(U),{key:1,constraints:B.value,track:I.value.value,formats:V.value,onError:q,onDetect:v,onCameraOn:P},null,8,["constraints","track","formats"])):f("",!0)])])):f("",!0)}}});const de=H(L,[["__scopeId","data-v-e6e53448"]]);export{de as default};