{"version":3,"file":"icon.mjs","sources":["../../../components/hooks/icon.tsx"],"sourcesContent":["import { isFunction } from 'lodash-es';\nimport { getCurrentInstance, h } from 'vue';\n\n/**\n * 渲染icon，用于icon、close等渲染图标的场景\n * @example const renderIconTNode = useIcon();\n * @returns renderIconTNode\n * @param iconType 要渲染的icon元素\n * @param defaultIcons 默认icon集合\n */\nexport function useIcon() {\n  const instance = getCurrentInstance();\n  return function renderIconTNode(iconType: string, defaultIcons?: Record<string, any>) {\n    let iconContent;\n    // 传入的是渲染函数\n    if (isFunction(instance.props[iconType])) {\n      iconContent = instance.props[iconType](h);\n    } else if (instance.slots[iconType]) {\n      // 插槽slot\n      iconContent = instance.slots[iconType] && instance.slots[iconType](null)[0];\n    } else if (defaultIcons) {\n      const Component = defaultIcons[instance.props.theme as string];\n      iconContent = <Component></Component>;\n    }\n    return iconContent;\n  };\n}\n"],"names":["useIcon","instance","getCurrentInstance","renderIconTNode","iconType","defaultIcons","iconContent","isFunction","props","h","slots","Component","theme","_createVNode"],"mappings":";;;;;;;;;AAUO,SAASA,OAAUA,GAAA;AACxB,EAAA,IAAMC,WAAWC,kBAAmB,EAAA,CAAA;AAC7B,EAAA,OAAA,SAASC,eAAgBA,CAAAC,QAAA,EAAkBC,YAAoC,EAAA;AAChF,IAAA,IAAAC,WAAA,CAAA;IAEJ,IAAIC,UAAW,CAAAN,QAAA,CAASO,KAAM,CAAAJ,QAAA,CAAS,CAAG,EAAA;MAC1BE,WAAA,GAAAL,QAAA,CAASO,KAAM,CAAAJ,QAAA,CAAA,CAAUK,CAAC,CAAA,CAAA;KAC1C,MAAA,IAAWR,QAAS,CAAAS,KAAA,CAAMN,QAAW,CAAA,EAAA;AAEnCE,MAAAA,WAAA,GAAcL,SAASS,KAAM,CAAAN,QAAA,CAAA,IAAaH,SAASS,KAAM,CAAAN,QAAA,CAAA,CAAU,IAAI,CAAE,CAAA,CAAA,CAAA,CAAA;eAChEC,YAAc,EAAA;MACjB,IAAAM,SAAA,GAAYN,YAAa,CAAAJ,QAAA,CAASO,KAAM,CAAAI,KAAA,CAAA,CAAA;AAC9CN,MAAAA,WAAA,GAAAO,WAAA,CAAAF,SAAA,EAAyB,IAAA,EAAA,IAAA,CAAA,CAAA;AAC3B,KAAA;AACO,IAAA,OAAAL,WAAA,CAAA;GACT,CAAA;AACF;;;;"}