import { normalize } from "./normalize"; export interface UnitLike { id: number; code: string; name_fa: string | null; } export function unitDisplayName(u: UnitLike): string { return u.name_fa || u.code; } // واحدها با «نام نمایشی» یکتا می‌شوند: وقتی دو ردیف نام فارسی یکسان دارند // (مثلاً ردیف سفارشی «عدد» و ردیف پایه‌ی piece/عدد)، ردیفی که کد استاندارد // دارد (code ≠ نام فارسی، مثل kg یا piece) ارجح است. export function uniqueUnits(units: UnitLike[]): UnitLike[] { const best = new Map(); units.forEach((u) => { const display = unitDisplayName(u); const key = normalize(display); if (!key) return; const cur = best.get(key); const isCanonical = u.code !== display; if (!cur || (isCanonical && cur.code === display)) best.set(key, u); }); return [...best.values()].sort((a, b) => unitDisplayName(a).localeCompare(unitDisplayName(b), "fa")); }