ll-package
Version:
2 lines (1 loc) • 1.57 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),y=require("./toCanvas.js"),v=require("../../../../node_modules/qrcode/lib/browser.js"),w=require("../../../utils/download.js"),b=require("../../../hooks/useDesign.js"),p=n.defineComponent({name:"LlQrcode",props:{color:{type:String,default:"#000"},background:{type:String,default:"#fff"},value:{type:[String,Array],default:null},options:{type:Object,default:null},margin:{type:Number,default:1},width:{type:Number,default:100},logo:{type:[String,Object],default:""},type:{type:String,default:"img",validator:e=>["canvas","img"].includes(e)}},emits:{done:e=>!!e,error:e=>!!e},setup(e,{emit:u}){const{prefixCls:f}=b.useDesign("qrcode"),a=n.ref(null);async function c(){try{const{type:r,value:o,options:t={},width:d,logo:m}=e,s=String(o),i=n.unref(a);if(!i)return;if(r==="canvas"){const l=await y.toCanvas({canvas:i,width:d,logo:m,content:s,options:{...t,margin:e.margin,color:{dark:e.color,light:e.background}}});u("done",{url:l,ctx:i.getContext("2d")});return}if(r==="img"){const l=await v.toDataURL(s,{errorCorrectionLevel:"H",width:d,...t,margin:e.margin,color:{dark:e.color,light:e.background}});n.unref(a).src=l,u("done",{url:l})}}catch(r){u("error",r)}}function g(r){let o="";const t=n.unref(a);t instanceof HTMLCanvasElement?o=t.toDataURL():t instanceof HTMLImageElement&&(o=t.src),o&&w.downloadByUrl({url:o,fileName:r})}return n.onMounted(c),n.watch(e,()=>{c()},{deep:!0}),{wrapRef:a,download:g,prefixCls:f}}});exports.default=p;