{"version":3,"file":"avatar.mjs","names":[],"sources":["../../../../src/components/avatar/src/avatar.tsx"],"sourcesContent":["import { computed, defineComponent, reactive } from \"vue\";\nimport { Picture } from \"@element-plus/icons-vue\";\nimport { ElAvatar, avatarEmits, avatarProps } from \"element-plus\";\nimport { definePropType, makeSlots, useEmits, useExpose, useProps, useRender } from \"../../../utils\";\nimport type { Component } from \"vue\";\n\n/** FaAvatar 的运行时 Props 定义 */\nexport const faAvatarProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...avatarProps,\n\t/** set how the image fit its container for an image avatar. */\n\tfit: {\n\t\ttype: definePropType<\n\t\t\t\"fill\" | \"-moz-initial\" | \"inherit\" | \"initial\" | \"revert\" | \"revert-layer\" | \"unset\" | \"none\" | \"contain\" | \"cover\" | \"scale-down\"\n\t\t>(String),\n\t\tdefault: \"cover\",\n\t},\n\t/** representation type to icon, more info on icon component. */\n\ticon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: () => Picture,\n\t},\n\t/** Base64图片 */\n\tbase64: Boolean,\n\t/** 原图 */\n\toriginal: Boolean,\n\t/** 标准 */\n\tnormal: Boolean,\n\t/** 小图 */\n\tsmall: Boolean,\n\t/** 缩略图 */\n\tthumb: Boolean,\n};\n\n/** FaAvatar 的运行时 Emits 定义 */\nexport const faAvatarEmits = {\n\t...avatarEmits,\n};\n\n/** FaAvatar 的插槽参数 */\nexport interface FaAvatarSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: { src?: string };\n}\n\nexport default defineComponent({\n\tname: \"FaAvatar\",\n\tprops: faAvatarProps,\n\temits: faAvatarEmits,\n\tslots: makeSlots<FaAvatarSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst state = reactive({\n\t\t\tsrc: computed(() => {\n\t\t\t\tif (!props.src) return undefined;\n\t\t\t\tif (props.base64) {\n\t\t\t\t\treturn `data:image/png;base64,${props.src}`;\n\t\t\t\t} else if (props.original) {\n\t\t\t\t\treturn props.src;\n\t\t\t\t} else if (props.normal) {\n\t\t\t\t\treturn `${props.src}@!normal`;\n\t\t\t\t} else if (props.small) {\n\t\t\t\t\treturn `${props.src}@!small`;\n\t\t\t\t} else if (props.thumb) {\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t} else {\n\t\t\t\t\t// 默认使用缩略图\n\t\t\t\t\treturn `${props.src}@!thumb`;\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elAvatarProps = useProps(props, avatarProps, [\"src\"]);\n\t\tconst elAvatarEmits = useEmits(avatarEmits, emit);\n\n\t\tuseRender(() => (\n\t\t\t<ElAvatar {...elAvatarProps.value} {...elAvatarEmits.value} class=\"fa-avatar\" src={state.src}>\n\t\t\t\t{slots.default?.({ src: state.src })}\n\t\t\t</ElAvatar>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 图片路径 */\n\t\t\tsrc: state.src,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;AAOA,MAAa,gBAAgB;CAE5B,GAAG;;CAEH,KAAK;EACJ,MAAM,eAEJ,MAAM;EACR,SAAS;CACV;;CAEA,MAAM;EACL,MAAM,eAAmC;GAAC;GAAQ;GAAQ;EAAQ,CAAC;EACnE,eAAe;CAChB;;CAEA,QAAQ;;CAER,UAAU;;CAEV,QAAQ;;CAER,OAAO;;CAEP,OAAO;AACR;;AAGA,MAAa,gBAAgB,EAC5B,GAAG,YACJ;AAQA,IAAA,iBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAyB;CAChC,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,QAAQ,SAAS,EACtB,KAAK,eAAe;GACnB,IAAI,CAAC,MAAM,KAAK,OAAO,KAAA;GACvB,IAAI,MAAM,QACT,OAAO,yBAAyB,MAAM;QAChC,IAAI,MAAM,UAChB,OAAO,MAAM;QACP,IAAI,MAAM,QAChB,OAAO,GAAG,MAAM,IAAG;QACb,IAAI,MAAM,OAChB,OAAO,GAAG,MAAM,IAAG;QACb,IAAI,MAAM,OAChB,OAAO,GAAG,MAAM,IAAG;QAGnB,OAAO,GAAG,MAAM,IAAG;EAErB,CAAC,EACF,CAAC;EAGD,MAAM,gBAAgB,SAAS,OAAO,aAAa,CAAC,KAAK,CAAC;EAC1D,MAAM,gBAAgB,SAAS,aAAa,IAAI;EAEhD,gBAAU,YAAA,UAAA,WACK,cAAc,OAAW,cAAc,OAAK;GAAA,SAAA;GAAA,OAAyB,MAAM;EAAG,CAAA,GAAA,EAAA,eAAA,CAC1F,MAAM,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,EAAA,CAAA,CAErC;EAED,OAAO,UAAU,QAAQ;;AAExB,KAAK,MAAM,IACZ,CAAC;CACF;AACD,CAAC"}