Files
web-temp/layers/utils/dataUtil.ts

71 lines
1.7 KiB
TypeScript

// 이미지 호스트 리턴하는 함수
// [TODO] 환경변수 처리 수정
export const getResolvedHost = (path: string): string => {
const config = useRuntimeConfig()
// const isDev = process.env.NODE_ENV === "development";
// const rootPath = isDev ? "/images" : `${config.public.staticUrl}`;
const rootPath = config.public.staticUrl
return `${rootPath}${path}`
}
// 리소스 데이터 리턴하는 함수
// [TODO] data 타입 정의
export const getResourcesData = ({
resources,
isMultiple = false,
groupSets = false,
}: {
resources: any
isMultiple?: boolean
groupSets?: boolean
}) => {
const groups = groupSets
? resources[0]?.group_sets[0]?.groups
: resources[0]?.groups
if (isMultiple) {
return groups
}
return groups?.[0] ?? null
}
// 반응형 클래스 리턴하는 함수
export const getResponsiveClass = () => {
return ['bg-[image:var(--mobile-bg)]', 'sm:bg-[image:var(--pc-bg)]']
}
// 통합된 반응형 리소스 함수
export const getResponsiveSrc = (
pathArray: any,
options: {
resourcesType?: 'image' | 'bg' | 'video'
} = {}
) => {
const { resourcesType = 'image' } = options
const pcField = resourcesType === 'video' ? 'path_vid_pc' : 'path_pc'
const mobileField = resourcesType === 'video' ? 'path_vid_mo' : 'path_mo'
if (!pathArray?.[mobileField]) {
return null
}
const resolvedImages = {
pc: getResolvedHost(pathArray[pcField] || pathArray[mobileField]),
mobile: getResolvedHost(pathArray[mobileField]),
}
if (resourcesType === 'bg') {
return {
'--pc-bg': `url(${resolvedImages.pc})`,
'--mobile-bg': `url(${resolvedImages.mobile})`,
}
}
return {
mobileSrc: resolvedImages.mobile,
pcSrc: resolvedImages.pc,
}
}