function summarizeConstraint()

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"> &amp;&amp; </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>
  );
}