interface Topper { id: number; // ID элемента name: string; // Название filename: string; // Имя файла model: string; // Модель } export const baseToppers = [ { name: 'Ровный', filename: 'icon_stolb_verh_3.svg', model: 'top' }, { name: 'Вершина 1', filename: 'icon_stolb_verh_2.svg', model: 'decor1' }, { name: 'Вершина 2', filename: 'icon_stolb_verh_1.svg', model: 'decor2' }, ].map((el, i) => Object.assign(el, { id: i })) export const aristoToppers = [ { name: 'Колпак', filename: 'icon_stolb_verh_1.svg', model: 'aristo1' }, ].map((el, i) => Object.assign(el, { id: i })) export const allToppers = { 'baseToppers': baseToppers, 'aristoToppers': aristoToppers, } as { [key: string]: Topper[] } function getToppersByType(type: string | null): any { if (!type) type = 'NONE' // Проверяем, существует ли указанный тип в объекте allToppers if (allToppers[type]) { return allToppers[type]; } // Если типа нет, берем первый доступный элемент из allToppers const keys = Object.keys(allToppers); if (keys.length > 0) { const firstKey = keys[0]; return allToppers[firstKey]; } // Если объект allToppers пустой, возвращаем значение по умолчанию (например, пустой массив) return []; } export const getFilename = (id: toppersIds, type: string | null) => { let toppers = getToppersByType(type) const el = toppers.find((el: Topper) => el.id == id) if (!el || !el.filename) return undefined return `/topper/${el?.filename}` } export const getName = (id: toppersIds, type: string | null) => { let toppers = getToppersByType(type) const el = toppers.find((el: Topper) => el.id == id) if (!el || !el.filename) return undefined return el.name } export const getModel = (id: toppersIds, type: string | null) => { let toppers = getToppersByType(type) let el = toppers.find((el: Topper) => el.id == id) if (!el || !el.filename) return undefined return `/models_one/pillar/topper/${el?.model}.glb` } export type toppersIds = typeof allToppers[string][number]['id']