{"version":3,"file":"qr-code2.mjs","sources":["../../../../../../../packages/components/qr-code/src/qr-code.vue"],"sourcesContent":["<template>\n  <div>\n    <component :is=\"tag\" ref=\"wrapRef\" />\n  </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, onMounted, ref, unref, watch } from 'vue'\nimport { toDataURL } from 'qrcode'\nimport { downloadByUrl } from '@tav-ui/utils/file/download'\nimport { toCanvas } from './qrcodePlus'\nimport { qrcodeProps } from './types'\nimport type { QrcodeDoneEventParams } from './typing'\n\nexport default defineComponent({\n  name: 'TaQrCode',\n  props: qrcodeProps,\n  emits: { done: (data: QrcodeDoneEventParams) => !!data, error: (error: any) => !!error },\n  setup(props, { emit }) {\n    const wrapRef = ref<HTMLCanvasElement | HTMLImageElement | null>(null)\n    async function createQrcode() {\n      try {\n        const { tag, value, options = {}, width, logo } = props\n        const renderValue = String(value)\n        const wrapEl = unref(wrapRef)\n\n        if (!wrapEl) return\n\n        if (tag === 'canvas') {\n          const url: string = await toCanvas({\n            canvas: wrapEl,\n            width,\n            logo: logo as any,\n            content: renderValue,\n            options: options || {},\n          })\n          emit('done', { url, ctx: (wrapEl as HTMLCanvasElement).getContext('2d') })\n          return\n        }\n\n        if (tag === 'img') {\n          const url = await toDataURL(renderValue, {\n            errorCorrectionLevel: 'H',\n            width,\n            ...options,\n          })\n          ;(unref(wrapRef) as HTMLImageElement).src = url\n          emit('done', { url })\n        }\n      } catch (error) {\n        emit('error', error)\n      }\n    }\n    /**\n     * file download\n     */\n    function download(fileName?: string) {\n      let url = ''\n      const wrapEl = unref(wrapRef)\n      if (wrapEl instanceof HTMLCanvasElement) {\n        url = wrapEl.toDataURL()\n      } else if (wrapEl instanceof HTMLImageElement) {\n        url = wrapEl.src\n      }\n      if (!url) return\n      downloadByUrl({\n        url,\n        fileName,\n      })\n    }\n\n    onMounted(createQrcode)\n\n    // 监听参数变化重新生成二维码\n    watch(\n      props,\n      () => {\n        createQrcode()\n      },\n      {\n        deep: true,\n      }\n    )\n\n    return { wrapRef, download }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_createBlock","_resolveDynamicComponent"],"mappings":"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"}