Spaces:
Running
Running
File size: 1,029 Bytes
503a577 |
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 |
// Common parsing and grouping utilities for galleries
export const VARIANT_PREFIX_MAP: { [variant: string]: string } = {
attacked_wmd: 'attacked_wmd_',
attacked: 'attacked_',
wmd: 'wmd_',
}
export function getVariant(name: string): string {
return (
Object.entries(VARIANT_PREFIX_MAP).find(([, prefix]) => name.startsWith(prefix))?.[0] ||
'original'
)
}
export function getImageName(name: string, variant: string): string {
if (variant !== 'original' && variant in VARIANT_PREFIX_MAP) {
return name.replace(VARIANT_PREFIX_MAP[variant], '')
}
return name
}
export function groupByNameAndVariant<T extends { name: string }>(
items: T[]
): {
[name: string]: { [variant: string]: T }
} {
const grouped: { [name: string]: { [variant: string]: T } } = {}
items.forEach((item) => {
const variant = getVariant(item.name)
const imageName = getImageName(item.name, variant)
if (!grouped[imageName]) grouped[imageName] = {}
grouped[imageName][variant] = item
})
return grouped
}
|