import { isVue2 } from './adapter'
export const GRADIENT_ICONS_LIST = ['IconLoadingShadow', 'IconNoData']
let uniqueId = 0
const generateId = (vnode, idMaps) => {
if (isVue2) {
if (vnode.data?.attrs?.id) {
const newId = `${vnode.data.attrs.id}${uniqueId}`
idMaps[vnode.data.attrs.id] = newId
vnode.data.attrs.id = newId
}
} else {
if (vnode.props?.id) {
const newId = `${vnode.props.id}${uniqueId}`
idMaps[vnode.props.id] = newId
vnode.props.id = newId
}
}
if (Array.isArray(vnode?.children)) {
vnode.children.forEach((item) => {
generateId(item, idMaps)
})
}
}
const generateUrl = (vnode, idMaps) => {
const checkList = ['fill', 'mask', 'filter']
checkList.forEach((item) => {
if (isVue2) {
if (vnode.data?.attrs?.[item]?.includes('url(#')) {
const oldId = vnode.data.attrs[item].replace('url(#', '').replace(')', '')
const newId = idMaps[oldId]
if (newId) {
vnode.data.attrs[item] = `url(#${newId})`
}
}
} else {
if (vnode.props?.[item]?.includes('url(#')) {
const oldId = vnode.props[item].replace('url(#', '').replace(')', '')
const newId = idMaps[oldId]
if (newId) {
vnode.props[item] = `url(#${newId})`
}
}
}
})
if (Array.isArray(vnode?.children)) {
vnode.children.forEach((item) => {
generateUrl(item, idMaps)
})
}
}
export const generateIcon = (vnode) => {
if (!vnode) {
return
}
const idMaps = {}
generateId(vnode, idMaps)
generateUrl(vnode, idMaps)
uniqueId++
}