36 lines
887 B
TypeScript
36 lines
887 B
TypeScript
import type { CreateFlowState } from "../../app/(app)/create/types";
|
|
import { TRAIT_KEYS, type TraitKey } from "./deckTypes";
|
|
|
|
export const EMPTY_SETUP_TRAITS: Record<TraitKey, boolean> = {
|
|
network: false,
|
|
nonvoters: false,
|
|
employer: false,
|
|
sponsor: false,
|
|
records: false,
|
|
risky: false,
|
|
};
|
|
|
|
export function tickedSetupTraitIds(
|
|
traits: CreateFlowState["setupTraits"],
|
|
): TraitKey[] {
|
|
if (!traits) return [];
|
|
return TRAIT_KEYS.filter((key) => traits[key] === true);
|
|
}
|
|
|
|
export function setupTraitsFromTickedIds(
|
|
ids: readonly string[],
|
|
): Record<TraitKey, boolean> {
|
|
const ticked = new Set(ids);
|
|
const out = { ...EMPTY_SETUP_TRAITS };
|
|
for (const key of TRAIT_KEYS) {
|
|
out[key] = ticked.has(key);
|
|
}
|
|
return out;
|
|
}
|
|
|
|
export function hasTickedSetupTrait(
|
|
traits: CreateFlowState["setupTraits"],
|
|
): boolean {
|
|
return tickedSetupTraitIds(traits).length > 0;
|
|
}
|