Implements computeImpactDeltas pure function with 8 TDD tests covering replace/add/none modes and null weight/price handling. Adds useImpactDeltas hook, categoryId to ThreadWithCandidates, and selectedSetupId state to uiStore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
548 B
TypeScript
23 lines
548 B
TypeScript
import { useMemo } from "react";
|
|
import {
|
|
type CandidateDelta,
|
|
type CandidateInput,
|
|
computeImpactDeltas,
|
|
type DeltaMode,
|
|
type ImpactDeltas,
|
|
type SetupItemInput,
|
|
} from "../lib/impactDeltas";
|
|
|
|
export type { CandidateDelta, DeltaMode, ImpactDeltas };
|
|
|
|
export function useImpactDeltas(
|
|
candidates: CandidateInput[],
|
|
setupItems: SetupItemInput[] | undefined,
|
|
threadCategoryId: number,
|
|
): ImpactDeltas {
|
|
return useMemo(
|
|
() => computeImpactDeltas(candidates, setupItems, threadCategoryId),
|
|
[candidates, setupItems, threadCategoryId],
|
|
);
|
|
}
|