in src/components/Firestore/DocumentPreview/store.tsx [260:308]
function summarizeConstraint(
value: ExpressionValue['constraintValue'],
maxLen: number
): ReactNode {
const unknown = <span className="Constraint-unknown">χ</span>; // Greek letter x
if (!value?.simpleConstraints?.length) {
return unknown;
}
let firstCondition = true;
const conditions: ReactNode[] = [];
for (const constraint of value.simpleConstraints) {
if (firstCondition) {
conditions.push(<span className="Constraint-hint">where </span>);
firstCondition = false;
} else {
conditions.push(<span className="Constraint-and"> && </span>);
}
const { comparator, value } = constraint;
if (!value) {
throw new Error(
`Constraint value unset in ${JSON.stringify(constraint)}`
);
}
const valueStr = summarizeExp(value, maxLen);
if (!comparator || comparator === 'UNSET_COMPARATOR') {
throw new Error(
`Constraint comparator unset in ${JSON.stringify(constraint)}`
);
} else if (comparator === 'LIST_CONTAINS') {
conditions.push(
<span>
({valueStr} in {unknown})
</span>
);
} else {
conditions.push(
<span>
{unknown} {COMPARATOR_DISP[comparator] || comparator} {valueStr}
</span>
);
}
}
return (
<span>
{unknown} ({conditions})
</span>
);
}