{"version":3,"file":"qrcode.mjs","sources":["../../../components/qrcode/qrcode.tsx"],"sourcesContent":["import { computed, defineComponent } from 'vue';\nimport props from './props';\nimport { DEFAULT_FRONT_COLOR } from '@tdesign/common-js/qrcode/utils';\nimport { usePrefixClass, useConfig, useTNodeJSX, useVariables } from '@tdesign/shared-hooks';\n\nimport QRCodeCanvas from './components/qrcode-canvas';\nimport QRCodeSVG from './components/qrcode-svg';\nimport QRcodeStatus from './components/qrcode-status';\n\nimport type { ImageSettings } from '@tdesign/common-js/qrcode/types';\nimport { isNumber } from 'lodash-es';\n\nexport default defineComponent({\n  name: 'TQRCode',\n  props,\n  setup(props) {\n    const classPrefix = usePrefixClass();\n    const renderTNodeJSX = useTNodeJSX();\n    const { globalConfig } = useConfig('qrcode');\n\n    const { themeFgColor, themeBgColor } = useVariables({\n      themeFgColor: '--td-text-color-primary',\n      themeBgColor: '--td-bg-color-specialcomponent',\n    });\n\n    // bgColor：自定义颜色 > 主题色适配 > 透明[transparent]\n    const finalBgColor = computed(() => props.bgColor || themeBgColor.value || 'transparent');\n    // color[fgColor]：自定义颜色 > 主题色适配 > 默认颜色[#000000]\n    const finalFgColor = computed(() => props.color || themeFgColor.value || DEFAULT_FRONT_COLOR);\n\n    const imageSettings = computed<ImageSettings>(() => {\n      return {\n        src: props.icon,\n        x: undefined,\n        y: undefined,\n        height: isNumber(props.iconSize) ? props.iconSize : props.iconSize?.height ?? 40,\n        width: isNumber(props.iconSize) ? props.iconSize : props.iconSize?.width ?? 40,\n        excavate: true,\n        crossOrigin: 'anonymous',\n      };\n    });\n\n    const classes = computed(() => {\n      return [\n        `${classPrefix.value}-qrcode`,\n        {\n          [`${classPrefix.value}-borderless`]: props.borderless,\n          [`${classPrefix.value}-qrcode-svg`]: props.type === 'svg',\n        },\n      ];\n    });\n\n    const mergedStyle = computed(() => {\n      return {\n        backgroundColor: finalBgColor.value,\n        width: `${props.size}px`,\n        height: `${props.size}px`,\n      };\n    });\n\n    return () => {\n      const QRCodeProps = {\n        value: props.value,\n        size: props.size,\n        bgColor: finalBgColor.value,\n        fgColor: finalFgColor.value,\n        imageSettings: props.icon ? imageSettings.value : undefined,\n        level: props.level,\n      };\n\n      return (\n        <div class={classes.value} style={mergedStyle.value} {...{ level: props.level }}>\n          {props.status !== 'active' && (\n            <div\n              class={[\n                `${classPrefix.value}-mask`,\n                { [`${classPrefix.value}-${props.status}`]: props.status !== 'loading' },\n              ]}\n            >\n              <QRcodeStatus\n                locale={globalConfig.value}\n                status={props.status}\n                onRefresh={props.onRefresh}\n                statusRender={renderTNodeJSX('statusRender', {\n                  params: { status: props.status, onRefresh: props.onRefresh },\n                })}\n              />\n            </div>\n          )}\n          {props.type === 'canvas' ? (\n            <QRCodeCanvas {...QRCodeProps} size={props.size} />\n          ) : (\n            <QRCodeSVG {...QRCodeProps} size={props.size} />\n          )}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","setup","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","globalConfig","_useVariables","useVariables","themeFgColor","themeBgColor","finalBgColor","computed","bgColor","value","finalFgColor","color","DEFAULT_FRONT_COLOR","imageSettings","_props2$iconSize$heig","_props2$iconSize","_props2$iconSize$widt","_props2$iconSize2","src","icon","x","y","height","isNumber","iconSize","width","excavate","crossOrigin","classes","concat","_defineProperty","borderless","type","mergedStyle","backgroundColor","size","QRCodeProps","fgColor","level","_createVNode","_mergeProps","status","QRcodeStatus","onRefresh","params","QRCodeCanvas","QRCodeSVG"],"mappings":"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"}