Returns the operator.
The operator is responsible for evaluating the condition param against the transformed value from the selector. Return null if there is no operator and the condition is purely based on the selector transformation (e.g. "Is Blank" could be a selector that checks for blank values without needing an operator).
Returns the param for the condition.
Returns the selector.
The selector is responsible for transforming the cell value before it is passed to the operator predicate.
If null is returned then the raw cell value is used (identity selector).
This allows operators to focus on their core logic and delegate any necessary value transformation to the selector.
For example, a "Text Contains" operator might use a selector that converts values to lowercase strings, enabling case-insensitive matching.
Whether to include blank cells when applying the condition.
Evaluation Behavior:
false (default): Blank cells evaluate to FALSE (fail the condition test)true: Blank cells evaluate to TRUE (pass the condition test)Why This Matters:
Different consumers interpret condition results differently:
DataValidation (acts on FALSE = invalid):
includeBlanks: false → Blanks FAIL validation (are invalid/rejected)includeBlanks: true → Blanks PASS validation (are valid/allowed)includeBlanks: true so blank cells are allowedConditionalFormat & TableFilter (act on TRUE = show/format):
includeBlanks: false → Blanks are NOT formatted/shown (natural behavior)includeBlanks: true → Blanks ARE formatted/shown (rarely needed)includeBlanks: false correctly excludes blanksOne policy, three readings:
A blank cell is not a value, so no operator is asked about one: this flag alone says whether it passes, at the top of a condition and inside a combinator alike. An editor shows it as one checkbox worded for its host: "Ignore blanks" for a validation, "Show blank rows" for a filter, "Format blanks" for a format.
What is blank:
"" result, or a string of only spaces
(Excel's LEN(TRIM(x))=0). A tab, a non-breaking space, 0 and an error are values."" result is a value and is judged.Returns the JSON representation of the condition.
Returns a string representation of the selector, operator, and param.
Whether the condition can be authored as it is.
A message key naming the first problem — an operand not yet given, bounds the wrong
way around, a whole-number rule holding a fraction — or null when there is none.
Interface that captures the selector, operator, and param.