import { equals, handler, lift, Writable } from "commonfabric"; interface Panel { name: string; } type PanelEvent = { panel: Writable }; type Selection = { selected: Writable; unused: Writable; }; const compareMember = handler((event, state) => { if (equals(state.selected, event.panel)) return; }); const compareDestructured = handler( (event, { selected }) => { if (equals(selected, event.panel)) return; }, ); const compareMemberAsMethodArgument = handler( (event, state) => { if (event.panel.equals(state.selected)) return; }, ); const compareMemberInLift = lift(( { state, other }: { state: Selection; other: Writable }, ) => equals(state.selected, other)); // FIXTURE: identity-member-argument // Verifies: a member handed to a known identity call is compared, not read, // so it is a comparable cell as a destructured binding compared the same way // is, and in every spelling the state's unused member is pruned. export { compareDestructured, compareMember, compareMemberAsMethodArgument, compareMemberInLift, };