UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 1.58 kB
{"version":3,"file":"icon.mjs","sources":["../../src/hooks/icon.tsx"],"sourcesContent":["import isFunction from 'lodash/isFunction';\nimport { getCurrentInstance, h } from 'vue';\n\n/**\n * Render icon for scenarios where icons, close, etc. need to be rendered\n * @example const renderIconTNode = useIcon();\n * @returns renderIconTNode\n * @param iconType The type of icon element to render\n * @param defaultIcons Default icon collection\n */\nexport function useIcon() {\n const instance = getCurrentInstance();\n return function renderIconTNode(iconType: string, defaultIcons?: Record<string, any>) {\n let iconContent;\n \n // If a render function is passed\n if (isFunction(instance.props[iconType])) {\n iconContent = (instance.props as Object)[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 \n return iconContent;\n };\n}"],"names":["iconContent"],"mappings":";;;;;;;;;;;;;AAUO,SAAA,OAAA,GAAA;AACL,EAAA,IAAA,QAAA,GAAA,kBAAA,EAAA,CAAA;AACO,EAAA,OAAA,SAAA,eAAA,CAAA,QAAA,EAAA,YAAA,EAAA;AACD,IAAA,IAAA,WAAA,CAAA;;;;AAOFA,MAAAA,WAAAA,GAAAA,QAAAA,CAAAA,KAAAA,CAAAA,QAAAA,CAAAA,IAAAA,QAAAA,CAAAA,KAAAA,CAAAA,QAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;;;AAGAA,MAAAA,WAAAA,GAAAA,WAAAA,CAAAA,SAAAA,EAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACF,KAAA;AAEO,IAAA,OAAA,WAAA,CAAA;;AAEX;;;;"}