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
  }
}