useBackgroundImageSelect.ts
798 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { SelectOption } from "naive-ui"
import { computed } from "vue"
const isHref = (url: string) => {
try {
new URL(url)
return true
} catch (error) {
return false
}
}
export const useBackgroundSelect = () => {
const getAllBackgroundImageList = computed(() => {
const pathList = import.meta.glob('../../assets/external/background/*')
return Object.keys(pathList).map(item => {
const imgName = item.split('/').at(-1)
return {
label: imgName,
value: imgName
} as SelectOption
})
})
const getBackgroundImagePath = (name: string) => {
return isHref(name) ? name : new URL(`../../assets/external/background/${name}`, import.meta.url).href
}
return {
getAllBackgroundImageList,
getBackgroundImagePath
}
}