74 lines
2.0 KiB
TypeScript
74 lines
2.0 KiB
TypeScript
import { isProductPackageType, mapMaterialType } from './material-type-mapper'
|
|
import {
|
|
DOUYIN_ACCOUNT_MAINTENANCE_VIDEO_TYPE,
|
|
DOUYIN_QIANCHUAN_VIDEO_TYPE,
|
|
TAOXI_GUANGGUANG_VIDEO_TYPE,
|
|
TAOXI_MAIN_VIDEO_TYPE,
|
|
} from './video-material-types'
|
|
|
|
export const MATERIAL_TYPE_OPTIONS = [
|
|
'3D场景',
|
|
'详情模板',
|
|
'材质',
|
|
'模特',
|
|
'实拍图片',
|
|
'买家秀图片',
|
|
'小红书种草',
|
|
'主图模版',
|
|
'SKU模版',
|
|
TAOXI_MAIN_VIDEO_TYPE,
|
|
'安装视频',
|
|
TAOXI_GUANGGUANG_VIDEO_TYPE,
|
|
DOUYIN_QIANCHUAN_VIDEO_TYPE,
|
|
DOUYIN_ACCOUNT_MAINTENANCE_VIDEO_TYPE,
|
|
'音乐',
|
|
'标准模型',
|
|
'品牌VI灵感',
|
|
'证书-检测报告',
|
|
'任务-详情',
|
|
'任务-页面',
|
|
'任务-其他',
|
|
'任务-3D原图',
|
|
'任务-AI原图',
|
|
'任务-实拍原图',
|
|
'任务-视频截图',
|
|
] as const
|
|
|
|
export type MaterialTypeOption = typeof MATERIAL_TYPE_OPTIONS[number]
|
|
|
|
export function isSelectableMaterialType(type: string): type is MaterialTypeOption {
|
|
return MATERIAL_TYPE_OPTIONS.includes(type as MaterialTypeOption)
|
|
}
|
|
|
|
export function filterSelectableMaterialTypes(types: string[]): string[] {
|
|
const uniqueTypes = new Set(types.filter(isSelectableMaterialType))
|
|
|
|
return MATERIAL_TYPE_OPTIONS.filter((type) => uniqueTypes.has(type))
|
|
}
|
|
|
|
export function getSelectableMaterialTypeOptions(currentType?: string | null): string[] {
|
|
const options = [...MATERIAL_TYPE_OPTIONS]
|
|
|
|
if (!currentType || options.includes(currentType as MaterialTypeOption)) {
|
|
return options
|
|
}
|
|
|
|
return [currentType, ...options]
|
|
}
|
|
|
|
export function isTaskMaterialType(materialType: string): boolean {
|
|
return mapMaterialType(materialType).startsWith('任务-')
|
|
}
|
|
|
|
export function supportsTaskNo(materialType: string): boolean {
|
|
return isTaskMaterialType(materialType)
|
|
}
|
|
|
|
export function supportsIsFullSet(materialType: string): boolean {
|
|
return isProductPackageType(materialType)
|
|
}
|
|
|
|
export function canManuallyReplacePreview(materialType: string): boolean {
|
|
return !isTaskMaterialType(materialType)
|
|
}
|