Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | 103x 103x 4120x 2060x 2060x 103x 103x 103x 6798x 6798x 1133x 1133x 206x 1133x 206x 103x 103x 278x 278x 278x 21x | import type { JsonUnitOpConfig } from "./UnitOpConfig.gen";
import generatedUnitOpConfigs from "./unitOpConfigs.gen.json";
export type UnitOpJsonConfig = JsonUnitOpConfig;
export type UnitOpConfig = UnitOpJsonConfig;
const rawUnitOpConfigs = generatedUnitOpConfigs as Record<
string,
UnitOpJsonConfig
>;
const unitOpConfigs = rawUnitOpConfigs as Record<string, UnitOpConfig>;
export type UnitOpVariantOption = {
objectType: string;
label: string;
order: number | null;
default: boolean;
config: UnitOpConfig;
};
export type UnitOpVariantFamily = {
familyKey: string;
selectorLabel: string;
defaultObjectType: string | null;
options: UnitOpVariantOption[];
};
function getVariantSortOrder(option: UnitOpVariantOption) {
return option.order ?? Number.MAX_SAFE_INTEGER;
}
function compareVariantOptions(
left: UnitOpVariantOption,
right: UnitOpVariantOption,
) {
const orderDifference =
getVariantSortOrder(left) - getVariantSortOrder(right);
if (orderDifference !== 0) return orderDifference;
const labelComparison = left.label.localeCompare(right.label);
if (labelComparison !== 0) return labelComparison;
return left.objectType.localeCompare(right.objectType);
}
function buildUnitOpVariantFamilies() {
const families = new Map<string, UnitOpVariantFamily>();
for (const [objectType, config] of Object.entries(unitOpConfigs)) {
const variant = config.frontend?.variant;
if (!variant) continue;
const family =
families.get(variant.familyKey) ??
({
familyKey: variant.familyKey,
selectorLabel: variant.selectorLabel ?? "Model Type",
defaultObjectType: null,
options: [],
} satisfies UnitOpVariantFamily);
family.options.push({
objectType,
label: variant.label,
order: variant.order ?? null,
default: variant.default ?? false,
config,
});
if (variant.default) {
family.defaultObjectType = objectType;
}
families.set(variant.familyKey, family);
}
for (const family of families.values()) {
family.options.sort(compareVariantOptions);
}
return families;
}
export const unitOpVariantFamilies = buildUnitOpVariantFamilies();
export function getUnitOpVariantFamily(
objectType: string | null | undefined,
): UnitOpVariantFamily | null {
Iif (!objectType) return null;
const variant = unitOpConfigs[objectType]?.frontend?.variant;
if (!variant) return null;
return unitOpVariantFamilies.get(variant.familyKey) ?? null;
}
export { rawUnitOpConfigs };
export default unitOpConfigs;
|