@ithinkdt/naive
Version:
iThinkDT Naive UI
49 lines (40 loc) • 1.37 kB
JavaScript
import { reactive, isRef } from 'vue'
export const SVG_PREFIX = 'data:image/svg+xml;base64,'
export const DATA_CATEGORY = 'data-category'
export const DATA_NAME = 'data-name'
export const handle = (icon, ret = {}) => {
ret.body = icon
if (icon) {
ret.svg = icon.startsWith(SVG_PREFIX)
if (ret.svg) {
const svg = atob(icon.slice(SVG_PREFIX.length))
ret.source = svg
let categoryIndex = svg.indexOf(DATA_CATEGORY)
if (categoryIndex !== -1) {
categoryIndex = categoryIndex + DATA_CATEGORY.length + 2
const nameIndex = svg.indexOf(DATA_NAME) + DATA_NAME.length + 2
ret.category = svg.slice(categoryIndex, svg.indexOf('"', categoryIndex))
ret.name = svg.slice(nameIndex, svg.indexOf('"', nameIndex))
}
}
} else {
delete ret.svg
delete ret.category
delete ret.name
}
return ret
}
export function getIconFiles(icons) {
if (!Array.isArray(icons)) icons = [icons]
return icons.map((icon, i) => {
const id = new Date().toLocaleDateString() + '_' + i
const ret = {
id,
name: id,
type: 'image/*',
status: 'finished',
url: icon,
}
return isRef(icon) ? reactive(ret) : ret
})
}