useBackgroundImageSelect.ts 798 Bytes
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
  }

}