@vuu-ui/vuu-table-extras 0.8.93 → 0.8.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,11 @@
1
1
  'use strict';
2
2
 
3
+ var __defProp = Object.defineProperty;
3
4
  var __typeError = (msg) => {
4
5
  throw TypeError(msg);
5
6
  };
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
9
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
7
10
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
8
11
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
@@ -10,6 +13,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
10
13
  var _expressions, _op, _expressions2, _expressions3, _op2, _expressions4, _op3, _expressions5, _expression, _callStack;
11
14
  class LiteralExpressionImpl {
12
15
  constructor(value) {
16
+ __publicField(this, "type");
17
+ __publicField(this, "value");
13
18
  this.value = value;
14
19
  switch (typeof value) {
15
20
  case "boolean":
@@ -31,7 +36,8 @@ class LiteralExpressionImpl {
31
36
  }
32
37
  class ColumnExpressionImpl {
33
38
  constructor(columnName) {
34
- this.type = "colExpression";
39
+ __publicField(this, "type", "colExpression");
40
+ __publicField(this, "column");
35
41
  this.column = columnName;
36
42
  }
37
43
  toJSON() {
@@ -48,7 +54,7 @@ class ArithmeticExpressionImpl {
48
54
  { type: "unknown" }
49
55
  ]);
50
56
  __privateAdd(this, _op);
51
- this.type = "arithmeticExpression";
57
+ __publicField(this, "type", "arithmeticExpression");
52
58
  __privateSet(this, _op, op);
53
59
  }
54
60
  get op() {
@@ -73,7 +79,8 @@ _op = new WeakMap();
73
79
  class CallExpressionImpl {
74
80
  constructor(functionName) {
75
81
  __privateAdd(this, _expressions2, []);
76
- this.type = "callExpression";
82
+ __publicField(this, "functionName");
83
+ __publicField(this, "type", "callExpression");
77
84
  this.functionName = functionName;
78
85
  }
79
86
  get expressions() {
@@ -98,7 +105,7 @@ class RelationalExpressionImpl {
98
105
  { type: "unknown" }
99
106
  ]);
100
107
  __privateAdd(this, _op2, "unknown");
101
- this.type = "relationalExpression";
108
+ __publicField(this, "type", "relationalExpression");
102
109
  }
103
110
  get op() {
104
111
  return __privateGet(this, _op2);
@@ -126,7 +133,7 @@ class BooleanConditionImp {
126
133
  { type: "unknown" }
127
134
  ]);
128
135
  __privateAdd(this, _op3);
129
- this.type = "booleanCondition";
136
+ __publicField(this, "type", "booleanCondition");
130
137
  __privateSet(this, _op3, booleanOperator);
131
138
  }
132
139
  get op() {
@@ -148,7 +155,7 @@ _op3 = new WeakMap();
148
155
  class ConditionalExpressionImpl {
149
156
  constructor(booleanOperator) {
150
157
  __privateAdd(this, _expressions5);
151
- this.type = "conditionalExpression";
158
+ __publicField(this, "type", "conditionalExpression");
152
159
  __privateSet(this, _expressions5, [
153
160
  booleanOperator ? new BooleanConditionImp(booleanOperator) : new RelationalExpressionImpl(),
154
161
  { type: "unknown" },
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnExpressionTreeWalker.js","sources":["../../../src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.ts"],"sourcesContent":["import { Tree } from \"@vuu-ui/vuu-codemirror\";\nimport { RelationalExpression } from \"./generated/column-parser.terms\";\ntype expressionType =\n | \"arithmeticExpression\"\n | \"booleanCondition\"\n | \"booleanLiteralExpression\"\n | \"callExpression\"\n | \"colExpression\"\n | \"conditionalExpression\"\n | \"numericLiteralExpression\"\n | \"relationalExpression\"\n | \"stringLiteralExpression\"\n | \"unknown\";\n\ntype arithmeticOp = \"*\" | \"/\" | \"+\" | \"-\" | \"unknown\";\ntype booleanOp = \"and\" | \"or\";\ntype relationalOp = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"unknown\";\n\nexport interface Expression {\n type: expressionType;\n expressions?: Expression[];\n toJSON?: () => unknown;\n value?: string | number | boolean;\n}\n\ninterface UnknownExpression extends Expression {\n type: \"unknown\";\n}\n\ninterface BooleanLiteralExpression {\n type: \"booleanLiteralExpression\";\n value: boolean;\n}\n\ninterface NumericLiteralExpression {\n type: \"numericLiteralExpression\";\n value: number;\n}\ninterface StringLiteralExpression {\n type: \"stringLiteralExpression\";\n value: string;\n}\n\ninterface ArithmeticExpression extends Expression {\n expressions: [Expression, Expression];\n op: arithmeticOp;\n type: \"arithmeticExpression\";\n}\n\ninterface BooleanCondition extends Expression {\n expressions: Expression[];\n op: booleanOp;\n type: \"booleanCondition\";\n}\ninterface RelationalExpression extends Expression {\n expressions: Expression[];\n op: relationalOp;\n type: \"relationalExpression\";\n}\n\ninterface ColExpression extends Expression {\n column?: string;\n type: \"colExpression\";\n}\n\ninterface CallExpression extends Expression {\n arguments: Expression[];\n functionName?: string;\n type: \"callExpression\";\n}\n\ntype ConditionExpression = RelationalExpression | BooleanCondition;\n\ninterface ConditionalExpression extends Expression {\n type: \"conditionalExpression\";\n condition: ConditionExpression;\n truthyExpression: Expression;\n falsyExpression: Expression;\n}\n\nexport type ColumnDefinitionExpression =\n | ArithmeticExpression\n | BooleanLiteralExpression\n | CallExpression\n | ColExpression\n | ConditionalExpression\n | NumericLiteralExpression\n | StringLiteralExpression;\n\nclass LiteralExpressionImpl implements Expression {\n type:\n | \"booleanLiteralExpression\"\n | \"numericLiteralExpression\"\n | \"stringLiteralExpression\";\n value: boolean | number | string;\n constructor(value: boolean | number | string) {\n this.value = value;\n switch (typeof value) {\n case \"boolean\":\n this.type = \"booleanLiteralExpression\";\n break;\n case \"number\":\n this.type = \"numericLiteralExpression\";\n break;\n default:\n this.type = \"stringLiteralExpression\";\n }\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value,\n } as\n | StringLiteralExpression\n | BooleanLiteralExpression\n | NumericLiteralExpression;\n }\n}\nclass ColumnExpressionImpl implements ColExpression {\n type = \"colExpression\" as const;\n column: string;\n constructor(columnName: string) {\n this.column = columnName;\n }\n toJSON() {\n return {\n type: this.type,\n column: this.column,\n } as ColExpression;\n }\n}\nclass ArithmeticExpressionImpl implements ArithmeticExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: arithmeticOp | \"unknown\";\n type = \"arithmeticExpression\" as const;\n constructor(op: arithmeticOp | \"unknown\" = \"unknown\") {\n this.#op = op;\n }\n get op() {\n return this.#op;\n }\n set op(op: arithmeticOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n };\n }\n}\n\nclass CallExpressionImpl implements CallExpression {\n #expressions: Expression[] = [];\n functionName: string;\n type = \"callExpression\" as const;\n constructor(functionName: string) {\n this.functionName = functionName;\n }\n\n get expressions() {\n return this.#expressions;\n }\n get arguments() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n functionName: this.functionName,\n arguments: this.#expressions.map((e) => e.toJSON?.()),\n } as CallExpression;\n }\n}\n\nclass RelationalExpressionImpl implements RelationalExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: relationalOp = \"unknown\";\n type = \"relationalExpression\" as const;\n\n get op() {\n return this.#op;\n }\n set op(op: relationalOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n } as RelationalExpression;\n }\n}\n\nclass BooleanConditionImp implements BooleanCondition {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: \"and\" | \"or\";\n type = \"booleanCondition\" as const;\n constructor(booleanOperator: \"and\" | \"or\") {\n this.#op = booleanOperator;\n }\n get op() {\n return this.#op;\n }\n get expressions() {\n return this.#expressions;\n }\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions.map((e) => e.toJSON?.()),\n };\n }\n}\n\nclass ConditionalExpressionImpl implements ConditionalExpression {\n #expressions: [ConditionExpression, Expression, Expression];\n type = \"conditionalExpression\" as const;\n\n constructor(booleanOperator?: \"and\" | \"or\") {\n this.#expressions = [\n booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl(),\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n }\n\n get expressions() {\n return this.#expressions;\n }\n\n get condition(): ConditionExpression {\n return this.#expressions[0];\n }\n get truthyExpression(): Expression {\n return this.#expressions[1];\n }\n set truthyExpression(expression: Expression) {\n this.#expressions[1] = expression;\n }\n get falsyExpression(): Expression {\n return this.#expressions[2];\n }\n set falsyExpression(expression: Expression) {\n this.#expressions[2] = expression;\n }\n\n toJSON() {\n return {\n type: this.type,\n condition: this.condition.toJSON?.(),\n truthyExpression: this.truthyExpression,\n falsyExpression: this.falsyExpression?.toJSON?.() ?? this.falsyExpression,\n };\n }\n}\n\ntype PartialExpression =\n | ArithmeticExpression\n | RelationalExpression\n | ColExpression\n | CallExpression\n | BooleanCondition\n | Partial<ConditionalExpression>;\n\nconst isUnknown = (e: Expression): e is UnknownExpression =>\n e.type === \"unknown\";\n\nconst isArithmeticExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ArithmeticExpression =>\n expression.type === \"arithmeticExpression\";\n\nconst isCallExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is CallExpression => expression.type === \"callExpression\";\n\nconst isConditionalExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ConditionalExpression =>\n expression.type === \"conditionalExpression\";\n\nconst isCondition = (\n expression: Expression | PartialExpression,\n): expression is ConditionExpression =>\n expression.type === \"relationalExpression\" ||\n expression.type === \"booleanCondition\";\n\nconst booleanConditionIsIncomplete = (\n condition: ConditionExpression,\n): boolean =>\n condition.expressions.length < 2 ||\n condition.expressions.some((e) => conditionIsIncomplete(e));\n\nconst isBooleanCondition = (\n expression: Expression,\n): expression is BooleanCondition => expression.type === \"booleanCondition\";\n\nconst isRelationalExpression = (\n expression?: Expression,\n): expression is RelationalExpression =>\n expression?.type === \"relationalExpression\";\n\nconst conditionIsIncomplete = (\n condition: Expression,\n): condition is ConditionExpression =>\n (isBooleanCondition(condition) && booleanConditionIsIncomplete(condition)) ||\n (isRelationalExpression(condition) && condition.expressions.length < 2);\n\nconst firstIncompleteExpression = (\n expression: Expression,\n): Expression | undefined => {\n if (isUnknown(expression)) {\n return expression;\n } else if (isRelationalExpression(expression)) {\n const [operand1, operand2] = expression.expressions;\n if (expressionIsIncomplete(operand1)) {\n return firstIncompleteExpression(operand1);\n } else if (expression.op === \"unknown\") {\n return expression;\n } else if (expressionIsIncomplete(operand2)) {\n return firstIncompleteExpression(operand2);\n }\n } else if (isCondition(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n } else if (isConditionalExpression(expression)) {\n const { condition, truthyExpression, falsyExpression } = expression;\n if (expressionIsIncomplete(condition)) {\n return firstIncompleteExpression(condition);\n } else if (expressionIsIncomplete(truthyExpression)) {\n return firstIncompleteExpression(truthyExpression);\n } else if (expressionIsIncomplete(falsyExpression)) {\n return firstIncompleteExpression(falsyExpression);\n }\n } else if (isArithmeticExpression(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n }\n};\nconst replaceUnknownExpression = (\n incompleteExpression: Expression,\n unknownExpression: UnknownExpression,\n expression: Expression,\n): boolean => {\n const { expressions = [] } = incompleteExpression;\n if (expressions.includes(unknownExpression)) {\n const pos = expressions.indexOf(unknownExpression);\n expressions.splice(pos, 1, expression);\n return true;\n } else {\n for (const e of expressions) {\n if (replaceUnknownExpression(e, unknownExpression, expression)) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst expressionIsIncomplete = (expression: Expression): boolean => {\n if (isUnknown(expression)) {\n return true;\n } else if (isConditionalExpression(expression)) {\n return (\n expressionIsIncomplete(expression.condition) ||\n expressionIsIncomplete(expression.truthyExpression) ||\n expressionIsIncomplete(expression.falsyExpression)\n );\n } else if (\n isRelationalExpression(expression) ||\n isBooleanCondition(expression)\n ) {\n return (\n expression.op === undefined ||\n expression.expressions.some((e) => expressionIsIncomplete(e))\n );\n }\n // TODO missing cases\n return false;\n};\n\ntype ExpressionImpl =\n | ArithmeticExpressionImpl\n | CallExpressionImpl\n | ColumnExpressionImpl\n | ConditionalExpressionImpl\n | LiteralExpressionImpl;\n\ntype PotentiallyUnresolvedExpression = Expression | PartialExpression;\n\nconst addExpression = (\n expression: Expression,\n subExpression: PartialExpression | Expression,\n) => {\n const targetExpression = firstIncompleteExpression(expression);\n if (targetExpression) {\n if (targetExpression.expressions) {\n targetExpression.expressions.push(subExpression as Expression);\n } else {\n console.warn(\"don't know how to treat targetExpression\");\n }\n } else {\n console.error(\"no target expression found\");\n }\n};\n\nclass ColumnExpression {\n #expression: ExpressionImpl | undefined;\n\n #callStack: CallExpression[] = [];\n\n setCondition(booleanOperator?: \"and\" | \"or\") {\n if (this.#expression === undefined) {\n this.addExpression(new ConditionalExpressionImpl(booleanOperator));\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression.condition)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.truthyExpression)) {\n this.#expression.truthyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.truthyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.falsyExpression)) {\n this.#expression.falsyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.falsyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n }\n } /*else if (isCallExpression(this.#expression)) {\n this.addExpression(new RelationalExpressionImpl());\n } */ else {\n console.error(\"setCondition called unexpectedly\");\n }\n }\n\n addExpression(expression: ExpressionImpl | Expression) {\n if (this.#callStack.length > 0) {\n const currentCallExpression = this.#callStack.at(-1);\n currentCallExpression?.arguments.push(expression as Expression);\n } else if (this.#expression === undefined) {\n this.#expression = expression as ExpressionImpl;\n } else if (isArithmeticExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n }\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, expression);\n }\n }\n }\n }\n\n setFunction(functionName: string) {\n const callExpression = new CallExpressionImpl(functionName);\n this.addExpression(callExpression);\n this.#callStack.push(callExpression);\n }\n\n setColumn(columnName: string) {\n this.addExpression(new ColumnExpressionImpl(columnName));\n }\n\n setArithmeticOp(value: string) {\n const op = value as arithmeticOp;\n const expression = this.#expression as Expression;\n if (isArithmeticExpression(expression)) {\n expression.op = op;\n }\n // else {\n // const targetExpression = firstIncompleteExpression(this.#expression);\n // if (targetExpression) {\n // targetExpression.op = op;\n // }\n // }\n }\n\n setRelationalOperator(value: string) {\n const op = value as relationalOp;\n if (this.#expression && isConditionalExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (isRelationalExpression(targetExpression)) {\n targetExpression.op = op;\n } else {\n console.error(`no target expression found (op = ${value})`);\n }\n }\n }\n\n setValue(value: string | number | boolean) {\n const literalExpression = new LiteralExpressionImpl(value);\n if (this.#expression === undefined) {\n this.#expression = literalExpression;\n } else if (isArithmeticExpression(this.#expression)) {\n this.addExpression(literalExpression);\n } else if (isCallExpression(this.#expression)) {\n // TODO this might not be correct if call arguments include nested expression(s)\n this.#expression.arguments.push(literalExpression);\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n literalExpression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, literalExpression);\n }\n } else {\n console.log(\"what do we do with value, in a complete expression\");\n }\n }\n }\n\n closeBrace() {\n this.#callStack.pop();\n }\n\n get expression() {\n return this.#expression;\n }\n\n toJSON() {\n return this.#expression?.toJSON() as ColumnDefinitionExpression;\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const columnExpression = new ColumnExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"AndCondition\":\n columnExpression.setCondition(\"and\");\n break;\n\n case \"OrCondition\":\n columnExpression.setCondition(\"or\");\n break;\n\n case \"RelationalExpression\":\n // TODO this breaks when the relationalexpression is an argument to a CallExpression\n columnExpression.setCondition();\n break;\n\n case \"ArithmeticExpression\":\n columnExpression.addExpression(new ArithmeticExpressionImpl());\n break;\n\n case \"Column\":\n {\n const columnName = source.substring(from, to);\n columnExpression.setColumn(columnName);\n }\n break;\n\n case \"Function\":\n {\n const functionName = source.substring(from, to);\n columnExpression.setFunction(functionName);\n }\n break;\n\n case \"Times\":\n case \"Divide\":\n case \"Plus\":\n case \"Minus\":\n {\n const op = source.substring(from, to);\n columnExpression.setArithmeticOp(op);\n }\n break;\n\n case \"RelationalOperator\":\n {\n const op = source.substring(from, to);\n columnExpression.setRelationalOperator(op);\n }\n break;\n\n case \"False\":\n case \"True\":\n {\n const value = source.substring(from, to);\n columnExpression.setValue(value === \"true\" ? true : false);\n }\n break;\n\n case \"String\":\n columnExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n columnExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"CloseBrace\":\n columnExpression.closeBrace();\n break;\n\n default:\n }\n } while (cursor.next());\n\n return columnExpression.toJSON();\n};\n"],"names":["_expressions","_op"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnExpressionTreeWalker.js","sources":["../../../src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.ts"],"sourcesContent":["import { Tree } from \"@vuu-ui/vuu-codemirror\";\nimport { RelationalExpression } from \"./generated/column-parser.terms\";\ntype expressionType =\n | \"arithmeticExpression\"\n | \"booleanCondition\"\n | \"booleanLiteralExpression\"\n | \"callExpression\"\n | \"colExpression\"\n | \"conditionalExpression\"\n | \"numericLiteralExpression\"\n | \"relationalExpression\"\n | \"stringLiteralExpression\"\n | \"unknown\";\n\ntype arithmeticOp = \"*\" | \"/\" | \"+\" | \"-\" | \"unknown\";\ntype booleanOp = \"and\" | \"or\";\ntype relationalOp = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"unknown\";\n\nexport interface Expression {\n type: expressionType;\n expressions?: Expression[];\n toJSON?: () => unknown;\n value?: string | number | boolean;\n}\n\ninterface UnknownExpression extends Expression {\n type: \"unknown\";\n}\n\ninterface BooleanLiteralExpression {\n type: \"booleanLiteralExpression\";\n value: boolean;\n}\n\ninterface NumericLiteralExpression {\n type: \"numericLiteralExpression\";\n value: number;\n}\ninterface StringLiteralExpression {\n type: \"stringLiteralExpression\";\n value: string;\n}\n\ninterface ArithmeticExpression extends Expression {\n expressions: [Expression, Expression];\n op: arithmeticOp;\n type: \"arithmeticExpression\";\n}\n\ninterface BooleanCondition extends Expression {\n expressions: Expression[];\n op: booleanOp;\n type: \"booleanCondition\";\n}\ninterface RelationalExpression extends Expression {\n expressions: Expression[];\n op: relationalOp;\n type: \"relationalExpression\";\n}\n\ninterface ColExpression extends Expression {\n column?: string;\n type: \"colExpression\";\n}\n\ninterface CallExpression extends Expression {\n arguments: Expression[];\n functionName?: string;\n type: \"callExpression\";\n}\n\ntype ConditionExpression = RelationalExpression | BooleanCondition;\n\ninterface ConditionalExpression extends Expression {\n type: \"conditionalExpression\";\n condition: ConditionExpression;\n truthyExpression: Expression;\n falsyExpression: Expression;\n}\n\nexport type ColumnDefinitionExpression =\n | ArithmeticExpression\n | BooleanLiteralExpression\n | CallExpression\n | ColExpression\n | ConditionalExpression\n | NumericLiteralExpression\n | StringLiteralExpression;\n\nclass LiteralExpressionImpl implements Expression {\n type:\n | \"booleanLiteralExpression\"\n | \"numericLiteralExpression\"\n | \"stringLiteralExpression\";\n value: boolean | number | string;\n constructor(value: boolean | number | string) {\n this.value = value;\n switch (typeof value) {\n case \"boolean\":\n this.type = \"booleanLiteralExpression\";\n break;\n case \"number\":\n this.type = \"numericLiteralExpression\";\n break;\n default:\n this.type = \"stringLiteralExpression\";\n }\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value,\n } as\n | StringLiteralExpression\n | BooleanLiteralExpression\n | NumericLiteralExpression;\n }\n}\nclass ColumnExpressionImpl implements ColExpression {\n type = \"colExpression\" as const;\n column: string;\n constructor(columnName: string) {\n this.column = columnName;\n }\n toJSON() {\n return {\n type: this.type,\n column: this.column,\n } as ColExpression;\n }\n}\nclass ArithmeticExpressionImpl implements ArithmeticExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: arithmeticOp | \"unknown\";\n type = \"arithmeticExpression\" as const;\n constructor(op: arithmeticOp | \"unknown\" = \"unknown\") {\n this.#op = op;\n }\n get op() {\n return this.#op;\n }\n set op(op: arithmeticOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n };\n }\n}\n\nclass CallExpressionImpl implements CallExpression {\n #expressions: Expression[] = [];\n functionName: string;\n type = \"callExpression\" as const;\n constructor(functionName: string) {\n this.functionName = functionName;\n }\n\n get expressions() {\n return this.#expressions;\n }\n get arguments() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n functionName: this.functionName,\n arguments: this.#expressions.map((e) => e.toJSON?.()),\n } as CallExpression;\n }\n}\n\nclass RelationalExpressionImpl implements RelationalExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: relationalOp = \"unknown\";\n type = \"relationalExpression\" as const;\n\n get op() {\n return this.#op;\n }\n set op(op: relationalOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n } as RelationalExpression;\n }\n}\n\nclass BooleanConditionImp implements BooleanCondition {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: \"and\" | \"or\";\n type = \"booleanCondition\" as const;\n constructor(booleanOperator: \"and\" | \"or\") {\n this.#op = booleanOperator;\n }\n get op() {\n return this.#op;\n }\n get expressions() {\n return this.#expressions;\n }\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions.map((e) => e.toJSON?.()),\n };\n }\n}\n\nclass ConditionalExpressionImpl implements ConditionalExpression {\n #expressions: [ConditionExpression, Expression, Expression];\n type = \"conditionalExpression\" as const;\n\n constructor(booleanOperator?: \"and\" | \"or\") {\n this.#expressions = [\n booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl(),\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n }\n\n get expressions() {\n return this.#expressions;\n }\n\n get condition(): ConditionExpression {\n return this.#expressions[0];\n }\n get truthyExpression(): Expression {\n return this.#expressions[1];\n }\n set truthyExpression(expression: Expression) {\n this.#expressions[1] = expression;\n }\n get falsyExpression(): Expression {\n return this.#expressions[2];\n }\n set falsyExpression(expression: Expression) {\n this.#expressions[2] = expression;\n }\n\n toJSON() {\n return {\n type: this.type,\n condition: this.condition.toJSON?.(),\n truthyExpression: this.truthyExpression,\n falsyExpression: this.falsyExpression?.toJSON?.() ?? this.falsyExpression,\n };\n }\n}\n\ntype PartialExpression =\n | ArithmeticExpression\n | RelationalExpression\n | ColExpression\n | CallExpression\n | BooleanCondition\n | Partial<ConditionalExpression>;\n\nconst isUnknown = (e: Expression): e is UnknownExpression =>\n e.type === \"unknown\";\n\nconst isArithmeticExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ArithmeticExpression =>\n expression.type === \"arithmeticExpression\";\n\nconst isCallExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is CallExpression => expression.type === \"callExpression\";\n\nconst isConditionalExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ConditionalExpression =>\n expression.type === \"conditionalExpression\";\n\nconst isCondition = (\n expression: Expression | PartialExpression,\n): expression is ConditionExpression =>\n expression.type === \"relationalExpression\" ||\n expression.type === \"booleanCondition\";\n\nconst booleanConditionIsIncomplete = (\n condition: ConditionExpression,\n): boolean =>\n condition.expressions.length < 2 ||\n condition.expressions.some((e) => conditionIsIncomplete(e));\n\nconst isBooleanCondition = (\n expression: Expression,\n): expression is BooleanCondition => expression.type === \"booleanCondition\";\n\nconst isRelationalExpression = (\n expression?: Expression,\n): expression is RelationalExpression =>\n expression?.type === \"relationalExpression\";\n\nconst conditionIsIncomplete = (\n condition: Expression,\n): condition is ConditionExpression =>\n (isBooleanCondition(condition) && booleanConditionIsIncomplete(condition)) ||\n (isRelationalExpression(condition) && condition.expressions.length < 2);\n\nconst firstIncompleteExpression = (\n expression: Expression,\n): Expression | undefined => {\n if (isUnknown(expression)) {\n return expression;\n } else if (isRelationalExpression(expression)) {\n const [operand1, operand2] = expression.expressions;\n if (expressionIsIncomplete(operand1)) {\n return firstIncompleteExpression(operand1);\n } else if (expression.op === \"unknown\") {\n return expression;\n } else if (expressionIsIncomplete(operand2)) {\n return firstIncompleteExpression(operand2);\n }\n } else if (isCondition(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n } else if (isConditionalExpression(expression)) {\n const { condition, truthyExpression, falsyExpression } = expression;\n if (expressionIsIncomplete(condition)) {\n return firstIncompleteExpression(condition);\n } else if (expressionIsIncomplete(truthyExpression)) {\n return firstIncompleteExpression(truthyExpression);\n } else if (expressionIsIncomplete(falsyExpression)) {\n return firstIncompleteExpression(falsyExpression);\n }\n } else if (isArithmeticExpression(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n }\n};\nconst replaceUnknownExpression = (\n incompleteExpression: Expression,\n unknownExpression: UnknownExpression,\n expression: Expression,\n): boolean => {\n const { expressions = [] } = incompleteExpression;\n if (expressions.includes(unknownExpression)) {\n const pos = expressions.indexOf(unknownExpression);\n expressions.splice(pos, 1, expression);\n return true;\n } else {\n for (const e of expressions) {\n if (replaceUnknownExpression(e, unknownExpression, expression)) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst expressionIsIncomplete = (expression: Expression): boolean => {\n if (isUnknown(expression)) {\n return true;\n } else if (isConditionalExpression(expression)) {\n return (\n expressionIsIncomplete(expression.condition) ||\n expressionIsIncomplete(expression.truthyExpression) ||\n expressionIsIncomplete(expression.falsyExpression)\n );\n } else if (\n isRelationalExpression(expression) ||\n isBooleanCondition(expression)\n ) {\n return (\n expression.op === undefined ||\n expression.expressions.some((e) => expressionIsIncomplete(e))\n );\n }\n // TODO missing cases\n return false;\n};\n\ntype ExpressionImpl =\n | ArithmeticExpressionImpl\n | CallExpressionImpl\n | ColumnExpressionImpl\n | ConditionalExpressionImpl\n | LiteralExpressionImpl;\n\ntype PotentiallyUnresolvedExpression = Expression | PartialExpression;\n\nconst addExpression = (\n expression: Expression,\n subExpression: PartialExpression | Expression,\n) => {\n const targetExpression = firstIncompleteExpression(expression);\n if (targetExpression) {\n if (targetExpression.expressions) {\n targetExpression.expressions.push(subExpression as Expression);\n } else {\n console.warn(\"don't know how to treat targetExpression\");\n }\n } else {\n console.error(\"no target expression found\");\n }\n};\n\nclass ColumnExpression {\n #expression: ExpressionImpl | undefined;\n\n #callStack: CallExpression[] = [];\n\n setCondition(booleanOperator?: \"and\" | \"or\") {\n if (this.#expression === undefined) {\n this.addExpression(new ConditionalExpressionImpl(booleanOperator));\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression.condition)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.truthyExpression)) {\n this.#expression.truthyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.truthyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.falsyExpression)) {\n this.#expression.falsyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.falsyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n }\n } /*else if (isCallExpression(this.#expression)) {\n this.addExpression(new RelationalExpressionImpl());\n } */ else {\n console.error(\"setCondition called unexpectedly\");\n }\n }\n\n addExpression(expression: ExpressionImpl | Expression) {\n if (this.#callStack.length > 0) {\n const currentCallExpression = this.#callStack.at(-1);\n currentCallExpression?.arguments.push(expression as Expression);\n } else if (this.#expression === undefined) {\n this.#expression = expression as ExpressionImpl;\n } else if (isArithmeticExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n }\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, expression);\n }\n }\n }\n }\n\n setFunction(functionName: string) {\n const callExpression = new CallExpressionImpl(functionName);\n this.addExpression(callExpression);\n this.#callStack.push(callExpression);\n }\n\n setColumn(columnName: string) {\n this.addExpression(new ColumnExpressionImpl(columnName));\n }\n\n setArithmeticOp(value: string) {\n const op = value as arithmeticOp;\n const expression = this.#expression as Expression;\n if (isArithmeticExpression(expression)) {\n expression.op = op;\n }\n // else {\n // const targetExpression = firstIncompleteExpression(this.#expression);\n // if (targetExpression) {\n // targetExpression.op = op;\n // }\n // }\n }\n\n setRelationalOperator(value: string) {\n const op = value as relationalOp;\n if (this.#expression && isConditionalExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (isRelationalExpression(targetExpression)) {\n targetExpression.op = op;\n } else {\n console.error(`no target expression found (op = ${value})`);\n }\n }\n }\n\n setValue(value: string | number | boolean) {\n const literalExpression = new LiteralExpressionImpl(value);\n if (this.#expression === undefined) {\n this.#expression = literalExpression;\n } else if (isArithmeticExpression(this.#expression)) {\n this.addExpression(literalExpression);\n } else if (isCallExpression(this.#expression)) {\n // TODO this might not be correct if call arguments include nested expression(s)\n this.#expression.arguments.push(literalExpression);\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n literalExpression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, literalExpression);\n }\n } else {\n console.log(\"what do we do with value, in a complete expression\");\n }\n }\n }\n\n closeBrace() {\n this.#callStack.pop();\n }\n\n get expression() {\n return this.#expression;\n }\n\n toJSON() {\n return this.#expression?.toJSON() as ColumnDefinitionExpression;\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const columnExpression = new ColumnExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"AndCondition\":\n columnExpression.setCondition(\"and\");\n break;\n\n case \"OrCondition\":\n columnExpression.setCondition(\"or\");\n break;\n\n case \"RelationalExpression\":\n // TODO this breaks when the relationalexpression is an argument to a CallExpression\n columnExpression.setCondition();\n break;\n\n case \"ArithmeticExpression\":\n columnExpression.addExpression(new ArithmeticExpressionImpl());\n break;\n\n case \"Column\":\n {\n const columnName = source.substring(from, to);\n columnExpression.setColumn(columnName);\n }\n break;\n\n case \"Function\":\n {\n const functionName = source.substring(from, to);\n columnExpression.setFunction(functionName);\n }\n break;\n\n case \"Times\":\n case \"Divide\":\n case \"Plus\":\n case \"Minus\":\n {\n const op = source.substring(from, to);\n columnExpression.setArithmeticOp(op);\n }\n break;\n\n case \"RelationalOperator\":\n {\n const op = source.substring(from, to);\n columnExpression.setRelationalOperator(op);\n }\n break;\n\n case \"False\":\n case \"True\":\n {\n const value = source.substring(from, to);\n columnExpression.setValue(value === \"true\" ? true : false);\n }\n break;\n\n case \"String\":\n columnExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n columnExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"CloseBrace\":\n columnExpression.closeBrace();\n break;\n\n default:\n }\n } while (cursor.next());\n\n return columnExpression.toJSON();\n};\n"],"names":["_expressions","_op"],"mappings":"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"}
@@ -34,14 +34,18 @@ const DataSourceStats = ({
34
34
  const from = numberFormatter.format(range.from + 1);
35
35
  const to = numberFormatter.format(Math.min(range.to, size));
36
36
  const value = numberFormatter.format(size);
37
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
38
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-label`, children: "Rows" }),
39
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-range`, children: from }),
40
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "-" }),
41
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-range`, children: to }),
42
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "of" }),
43
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-size`, children: value })
44
- ] });
37
+ if (size === 0) {
38
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-label`, children: "No Rows to display" }) });
39
+ } else {
40
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, children: [
41
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-label`, children: "Rows" }),
42
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-range`, children: from }),
43
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "-" }),
44
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-range`, children: to }),
45
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "of" }),
46
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${classBase}-size`, children: value })
47
+ ] });
48
+ }
45
49
  };
46
50
 
47
51
  exports.DataSourceStats = DataSourceStats;
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourceStats.js","sources":["../../src/datasource-stats/DatasourceStats.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\n\nimport dataSourceStats from \"./DatasourceStats.css\";\n\ninterface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {\n dataSource: DataSource;\n}\n\nconst classBase = \"vuuDatasourceStats\";\n\nconst numberFormatter = new Intl.NumberFormat();\n\nexport const DataSourceStats = ({\n className: classNameProp,\n dataSource,\n}: DataSourceStatsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-datasource-stats\",\n css: dataSourceStats,\n window: targetWindow,\n });\n\n const [range, setRange] = useState<VuuRange>(dataSource.range);\n const [size, setSize] = useState(dataSource.size);\n useEffect(() => {\n setSize(dataSource.size);\n dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n return () => {\n dataSource.removeListener(\"resize\", setSize);\n dataSource.removeListener(\"range\", setRange);\n };\n }, [dataSource]);\n\n const className = cx(classBase, classNameProp);\n const from = numberFormatter.format(range.from + 1);\n const to = numberFormatter.format(Math.min(range.to, size));\n const value = numberFormatter.format(size);\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>Rows</span>\n <span className={`${classBase}-range`}>{from}</span>\n <span>-</span>\n <span className={`${classBase}-range`}>{to}</span>\n <span>of</span>\n <span className={`${classBase}-size`}>{value}</span>\n </div>\n );\n};\n"],"names":["useWindow","useComponentCssInjection","dataSourceStats","useState","useEffect","jsxs","jsx"],"mappings":";;;;;;;;;AAaA,MAAM,SAAY,GAAA,oBAAA,CAAA;AAElB,MAAM,eAAA,GAAkB,IAAI,IAAA,CAAK,YAAa,EAAA,CAAA;AAEvC,MAAM,kBAAkB,CAAC;AAAA,EAC9B,SAAW,EAAA,aAAA;AAAA,EACX,UAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,cAAA,CAAmB,WAAW,KAAK,CAAA,CAAA;AAC7D,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAAA,cAAA,CAAS,WAAW,IAAI,CAAA,CAAA;AAChD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAA;AACvB,IAAW,UAAA,CAAA,EAAA,CAAG,UAAU,OAAO,CAAA,CAAA;AAC/B,IAAW,UAAA,CAAA,EAAA,CAAG,SAAS,QAAQ,CAAA,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAW,UAAA,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAC3C,MAAW,UAAA,CAAA,cAAA,CAAe,SAAS,QAAQ,CAAA,CAAA;AAAA,KAC7C,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA,CAAA;AAC7C,EAAA,MAAM,IAAO,GAAA,eAAA,CAAgB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,EAAA,GAAK,gBAAgB,MAAO,CAAA,IAAA,CAAK,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,CAAC,CAAA,CAAA;AAC1D,EAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACzC,EACE,uBAAAC,eAAA,CAAC,SAAI,SACH,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAU,QAAI,EAAA,MAAA,EAAA,CAAA;AAAA,mCAC1C,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,oBAC7CA,cAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,mCACN,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAG,EAAA,EAAA,EAAA,CAAA;AAAA,oBAC3CA,cAAA,CAAC,UAAK,QAAE,EAAA,IAAA,EAAA,CAAA;AAAA,mCACP,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,SAAU,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,GAC/C,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DatasourceStats.js","sources":["../../src/datasource-stats/DatasourceStats.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\n\nimport dataSourceStats from \"./DatasourceStats.css\";\n\ninterface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {\n dataSource: DataSource;\n}\n\nconst classBase = \"vuuDatasourceStats\";\n\nconst numberFormatter = new Intl.NumberFormat();\n\nexport const DataSourceStats = ({\n className: classNameProp,\n dataSource,\n}: DataSourceStatsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-datasource-stats\",\n css: dataSourceStats,\n window: targetWindow,\n });\n\n const [range, setRange] = useState<VuuRange>(dataSource.range);\n const [size, setSize] = useState(dataSource.size);\n useEffect(() => {\n setSize(dataSource.size);\n dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n return () => {\n dataSource.removeListener(\"resize\", setSize);\n dataSource.removeListener(\"range\", setRange);\n };\n }, [dataSource]);\n\n const className = cx(classBase, classNameProp);\n const from = numberFormatter.format(range.from + 1);\n const to = numberFormatter.format(Math.min(range.to, size));\n const value = numberFormatter.format(size);\n if (size === 0) {\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>No Rows to display</span>\n </div>\n );\n } else {\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>Rows</span>\n <span className={`${classBase}-range`}>{from}</span>\n <span>-</span>\n <span className={`${classBase}-range`}>{to}</span>\n <span>of</span>\n <span className={`${classBase}-size`}>{value}</span>\n </div>\n );\n }\n};\n"],"names":["useWindow","useComponentCssInjection","dataSourceStats","useState","useEffect","jsx","jsxs"],"mappings":";;;;;;;;;AAaA,MAAM,SAAY,GAAA,oBAAA,CAAA;AAElB,MAAM,eAAA,GAAkB,IAAI,IAAA,CAAK,YAAa,EAAA,CAAA;AAEvC,MAAM,kBAAkB,CAAC;AAAA,EAC9B,SAAW,EAAA,aAAA;AAAA,EACX,UAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAeA,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAAC,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,cAAA,CAAmB,WAAW,KAAK,CAAA,CAAA;AAC7D,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAAA,cAAA,CAAS,WAAW,IAAI,CAAA,CAAA;AAChD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAA;AACvB,IAAW,UAAA,CAAA,EAAA,CAAG,UAAU,OAAO,CAAA,CAAA;AAC/B,IAAW,UAAA,CAAA,EAAA,CAAG,SAAS,QAAQ,CAAA,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAW,UAAA,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAC3C,MAAW,UAAA,CAAA,cAAA,CAAe,SAAS,QAAQ,CAAA,CAAA;AAAA,KAC7C,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA,CAAA;AAC7C,EAAA,MAAM,IAAO,GAAA,eAAA,CAAgB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,EAAA,GAAK,gBAAgB,MAAO,CAAA,IAAA,CAAK,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,CAAC,CAAA,CAAA;AAC1D,EAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACzC,EAAA,IAAI,SAAS,CAAG,EAAA;AACd,IACE,uBAAAC,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EACH,QAAC,kBAAAA,cAAA,CAAA,MAAA,EAAA,EAAK,WAAW,CAAG,EAAA,SAAS,CAAU,MAAA,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAkB,CAC3D,EAAA,CAAA,CAAA;AAAA,GAEG,MAAA;AACL,IACE,uBAAAC,eAAA,CAAC,SAAI,SACH,EAAA,QAAA,EAAA;AAAA,sBAAAD,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAU,QAAI,EAAA,MAAA,EAAA,CAAA;AAAA,qCAC1C,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,sBAC7CA,cAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,qCACN,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAG,EAAA,EAAA,EAAA,CAAA;AAAA,sBAC3CA,cAAA,CAAC,UAAK,QAAE,EAAA,IAAA,EAAA,CAAA;AAAA,qCACP,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,SAAU,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,KAC/C,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,9 @@
1
+ var __defProp = Object.defineProperty;
1
2
  var __typeError = (msg) => {
2
3
  throw TypeError(msg);
3
4
  };
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
7
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
8
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
@@ -8,6 +11,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
8
11
  var _expressions, _op, _expressions2, _expressions3, _op2, _expressions4, _op3, _expressions5, _expression, _callStack;
9
12
  class LiteralExpressionImpl {
10
13
  constructor(value) {
14
+ __publicField(this, "type");
15
+ __publicField(this, "value");
11
16
  this.value = value;
12
17
  switch (typeof value) {
13
18
  case "boolean":
@@ -29,7 +34,8 @@ class LiteralExpressionImpl {
29
34
  }
30
35
  class ColumnExpressionImpl {
31
36
  constructor(columnName) {
32
- this.type = "colExpression";
37
+ __publicField(this, "type", "colExpression");
38
+ __publicField(this, "column");
33
39
  this.column = columnName;
34
40
  }
35
41
  toJSON() {
@@ -46,7 +52,7 @@ class ArithmeticExpressionImpl {
46
52
  { type: "unknown" }
47
53
  ]);
48
54
  __privateAdd(this, _op);
49
- this.type = "arithmeticExpression";
55
+ __publicField(this, "type", "arithmeticExpression");
50
56
  __privateSet(this, _op, op);
51
57
  }
52
58
  get op() {
@@ -71,7 +77,8 @@ _op = new WeakMap();
71
77
  class CallExpressionImpl {
72
78
  constructor(functionName) {
73
79
  __privateAdd(this, _expressions2, []);
74
- this.type = "callExpression";
80
+ __publicField(this, "functionName");
81
+ __publicField(this, "type", "callExpression");
75
82
  this.functionName = functionName;
76
83
  }
77
84
  get expressions() {
@@ -96,7 +103,7 @@ class RelationalExpressionImpl {
96
103
  { type: "unknown" }
97
104
  ]);
98
105
  __privateAdd(this, _op2, "unknown");
99
- this.type = "relationalExpression";
106
+ __publicField(this, "type", "relationalExpression");
100
107
  }
101
108
  get op() {
102
109
  return __privateGet(this, _op2);
@@ -124,7 +131,7 @@ class BooleanConditionImp {
124
131
  { type: "unknown" }
125
132
  ]);
126
133
  __privateAdd(this, _op3);
127
- this.type = "booleanCondition";
134
+ __publicField(this, "type", "booleanCondition");
128
135
  __privateSet(this, _op3, booleanOperator);
129
136
  }
130
137
  get op() {
@@ -146,7 +153,7 @@ _op3 = new WeakMap();
146
153
  class ConditionalExpressionImpl {
147
154
  constructor(booleanOperator) {
148
155
  __privateAdd(this, _expressions5);
149
- this.type = "conditionalExpression";
156
+ __publicField(this, "type", "conditionalExpression");
150
157
  __privateSet(this, _expressions5, [
151
158
  booleanOperator ? new BooleanConditionImp(booleanOperator) : new RelationalExpressionImpl(),
152
159
  { type: "unknown" },
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnExpressionTreeWalker.js","sources":["../../../src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.ts"],"sourcesContent":["import { Tree } from \"@vuu-ui/vuu-codemirror\";\nimport { RelationalExpression } from \"./generated/column-parser.terms\";\ntype expressionType =\n | \"arithmeticExpression\"\n | \"booleanCondition\"\n | \"booleanLiteralExpression\"\n | \"callExpression\"\n | \"colExpression\"\n | \"conditionalExpression\"\n | \"numericLiteralExpression\"\n | \"relationalExpression\"\n | \"stringLiteralExpression\"\n | \"unknown\";\n\ntype arithmeticOp = \"*\" | \"/\" | \"+\" | \"-\" | \"unknown\";\ntype booleanOp = \"and\" | \"or\";\ntype relationalOp = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"unknown\";\n\nexport interface Expression {\n type: expressionType;\n expressions?: Expression[];\n toJSON?: () => unknown;\n value?: string | number | boolean;\n}\n\ninterface UnknownExpression extends Expression {\n type: \"unknown\";\n}\n\ninterface BooleanLiteralExpression {\n type: \"booleanLiteralExpression\";\n value: boolean;\n}\n\ninterface NumericLiteralExpression {\n type: \"numericLiteralExpression\";\n value: number;\n}\ninterface StringLiteralExpression {\n type: \"stringLiteralExpression\";\n value: string;\n}\n\ninterface ArithmeticExpression extends Expression {\n expressions: [Expression, Expression];\n op: arithmeticOp;\n type: \"arithmeticExpression\";\n}\n\ninterface BooleanCondition extends Expression {\n expressions: Expression[];\n op: booleanOp;\n type: \"booleanCondition\";\n}\ninterface RelationalExpression extends Expression {\n expressions: Expression[];\n op: relationalOp;\n type: \"relationalExpression\";\n}\n\ninterface ColExpression extends Expression {\n column?: string;\n type: \"colExpression\";\n}\n\ninterface CallExpression extends Expression {\n arguments: Expression[];\n functionName?: string;\n type: \"callExpression\";\n}\n\ntype ConditionExpression = RelationalExpression | BooleanCondition;\n\ninterface ConditionalExpression extends Expression {\n type: \"conditionalExpression\";\n condition: ConditionExpression;\n truthyExpression: Expression;\n falsyExpression: Expression;\n}\n\nexport type ColumnDefinitionExpression =\n | ArithmeticExpression\n | BooleanLiteralExpression\n | CallExpression\n | ColExpression\n | ConditionalExpression\n | NumericLiteralExpression\n | StringLiteralExpression;\n\nclass LiteralExpressionImpl implements Expression {\n type:\n | \"booleanLiteralExpression\"\n | \"numericLiteralExpression\"\n | \"stringLiteralExpression\";\n value: boolean | number | string;\n constructor(value: boolean | number | string) {\n this.value = value;\n switch (typeof value) {\n case \"boolean\":\n this.type = \"booleanLiteralExpression\";\n break;\n case \"number\":\n this.type = \"numericLiteralExpression\";\n break;\n default:\n this.type = \"stringLiteralExpression\";\n }\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value,\n } as\n | StringLiteralExpression\n | BooleanLiteralExpression\n | NumericLiteralExpression;\n }\n}\nclass ColumnExpressionImpl implements ColExpression {\n type = \"colExpression\" as const;\n column: string;\n constructor(columnName: string) {\n this.column = columnName;\n }\n toJSON() {\n return {\n type: this.type,\n column: this.column,\n } as ColExpression;\n }\n}\nclass ArithmeticExpressionImpl implements ArithmeticExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: arithmeticOp | \"unknown\";\n type = \"arithmeticExpression\" as const;\n constructor(op: arithmeticOp | \"unknown\" = \"unknown\") {\n this.#op = op;\n }\n get op() {\n return this.#op;\n }\n set op(op: arithmeticOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n };\n }\n}\n\nclass CallExpressionImpl implements CallExpression {\n #expressions: Expression[] = [];\n functionName: string;\n type = \"callExpression\" as const;\n constructor(functionName: string) {\n this.functionName = functionName;\n }\n\n get expressions() {\n return this.#expressions;\n }\n get arguments() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n functionName: this.functionName,\n arguments: this.#expressions.map((e) => e.toJSON?.()),\n } as CallExpression;\n }\n}\n\nclass RelationalExpressionImpl implements RelationalExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: relationalOp = \"unknown\";\n type = \"relationalExpression\" as const;\n\n get op() {\n return this.#op;\n }\n set op(op: relationalOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n } as RelationalExpression;\n }\n}\n\nclass BooleanConditionImp implements BooleanCondition {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: \"and\" | \"or\";\n type = \"booleanCondition\" as const;\n constructor(booleanOperator: \"and\" | \"or\") {\n this.#op = booleanOperator;\n }\n get op() {\n return this.#op;\n }\n get expressions() {\n return this.#expressions;\n }\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions.map((e) => e.toJSON?.()),\n };\n }\n}\n\nclass ConditionalExpressionImpl implements ConditionalExpression {\n #expressions: [ConditionExpression, Expression, Expression];\n type = \"conditionalExpression\" as const;\n\n constructor(booleanOperator?: \"and\" | \"or\") {\n this.#expressions = [\n booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl(),\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n }\n\n get expressions() {\n return this.#expressions;\n }\n\n get condition(): ConditionExpression {\n return this.#expressions[0];\n }\n get truthyExpression(): Expression {\n return this.#expressions[1];\n }\n set truthyExpression(expression: Expression) {\n this.#expressions[1] = expression;\n }\n get falsyExpression(): Expression {\n return this.#expressions[2];\n }\n set falsyExpression(expression: Expression) {\n this.#expressions[2] = expression;\n }\n\n toJSON() {\n return {\n type: this.type,\n condition: this.condition.toJSON?.(),\n truthyExpression: this.truthyExpression,\n falsyExpression: this.falsyExpression?.toJSON?.() ?? this.falsyExpression,\n };\n }\n}\n\ntype PartialExpression =\n | ArithmeticExpression\n | RelationalExpression\n | ColExpression\n | CallExpression\n | BooleanCondition\n | Partial<ConditionalExpression>;\n\nconst isUnknown = (e: Expression): e is UnknownExpression =>\n e.type === \"unknown\";\n\nconst isArithmeticExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ArithmeticExpression =>\n expression.type === \"arithmeticExpression\";\n\nconst isCallExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is CallExpression => expression.type === \"callExpression\";\n\nconst isConditionalExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ConditionalExpression =>\n expression.type === \"conditionalExpression\";\n\nconst isCondition = (\n expression: Expression | PartialExpression,\n): expression is ConditionExpression =>\n expression.type === \"relationalExpression\" ||\n expression.type === \"booleanCondition\";\n\nconst booleanConditionIsIncomplete = (\n condition: ConditionExpression,\n): boolean =>\n condition.expressions.length < 2 ||\n condition.expressions.some((e) => conditionIsIncomplete(e));\n\nconst isBooleanCondition = (\n expression: Expression,\n): expression is BooleanCondition => expression.type === \"booleanCondition\";\n\nconst isRelationalExpression = (\n expression?: Expression,\n): expression is RelationalExpression =>\n expression?.type === \"relationalExpression\";\n\nconst conditionIsIncomplete = (\n condition: Expression,\n): condition is ConditionExpression =>\n (isBooleanCondition(condition) && booleanConditionIsIncomplete(condition)) ||\n (isRelationalExpression(condition) && condition.expressions.length < 2);\n\nconst firstIncompleteExpression = (\n expression: Expression,\n): Expression | undefined => {\n if (isUnknown(expression)) {\n return expression;\n } else if (isRelationalExpression(expression)) {\n const [operand1, operand2] = expression.expressions;\n if (expressionIsIncomplete(operand1)) {\n return firstIncompleteExpression(operand1);\n } else if (expression.op === \"unknown\") {\n return expression;\n } else if (expressionIsIncomplete(operand2)) {\n return firstIncompleteExpression(operand2);\n }\n } else if (isCondition(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n } else if (isConditionalExpression(expression)) {\n const { condition, truthyExpression, falsyExpression } = expression;\n if (expressionIsIncomplete(condition)) {\n return firstIncompleteExpression(condition);\n } else if (expressionIsIncomplete(truthyExpression)) {\n return firstIncompleteExpression(truthyExpression);\n } else if (expressionIsIncomplete(falsyExpression)) {\n return firstIncompleteExpression(falsyExpression);\n }\n } else if (isArithmeticExpression(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n }\n};\nconst replaceUnknownExpression = (\n incompleteExpression: Expression,\n unknownExpression: UnknownExpression,\n expression: Expression,\n): boolean => {\n const { expressions = [] } = incompleteExpression;\n if (expressions.includes(unknownExpression)) {\n const pos = expressions.indexOf(unknownExpression);\n expressions.splice(pos, 1, expression);\n return true;\n } else {\n for (const e of expressions) {\n if (replaceUnknownExpression(e, unknownExpression, expression)) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst expressionIsIncomplete = (expression: Expression): boolean => {\n if (isUnknown(expression)) {\n return true;\n } else if (isConditionalExpression(expression)) {\n return (\n expressionIsIncomplete(expression.condition) ||\n expressionIsIncomplete(expression.truthyExpression) ||\n expressionIsIncomplete(expression.falsyExpression)\n );\n } else if (\n isRelationalExpression(expression) ||\n isBooleanCondition(expression)\n ) {\n return (\n expression.op === undefined ||\n expression.expressions.some((e) => expressionIsIncomplete(e))\n );\n }\n // TODO missing cases\n return false;\n};\n\ntype ExpressionImpl =\n | ArithmeticExpressionImpl\n | CallExpressionImpl\n | ColumnExpressionImpl\n | ConditionalExpressionImpl\n | LiteralExpressionImpl;\n\ntype PotentiallyUnresolvedExpression = Expression | PartialExpression;\n\nconst addExpression = (\n expression: Expression,\n subExpression: PartialExpression | Expression,\n) => {\n const targetExpression = firstIncompleteExpression(expression);\n if (targetExpression) {\n if (targetExpression.expressions) {\n targetExpression.expressions.push(subExpression as Expression);\n } else {\n console.warn(\"don't know how to treat targetExpression\");\n }\n } else {\n console.error(\"no target expression found\");\n }\n};\n\nclass ColumnExpression {\n #expression: ExpressionImpl | undefined;\n\n #callStack: CallExpression[] = [];\n\n setCondition(booleanOperator?: \"and\" | \"or\") {\n if (this.#expression === undefined) {\n this.addExpression(new ConditionalExpressionImpl(booleanOperator));\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression.condition)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.truthyExpression)) {\n this.#expression.truthyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.truthyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.falsyExpression)) {\n this.#expression.falsyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.falsyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n }\n } /*else if (isCallExpression(this.#expression)) {\n this.addExpression(new RelationalExpressionImpl());\n } */ else {\n console.error(\"setCondition called unexpectedly\");\n }\n }\n\n addExpression(expression: ExpressionImpl | Expression) {\n if (this.#callStack.length > 0) {\n const currentCallExpression = this.#callStack.at(-1);\n currentCallExpression?.arguments.push(expression as Expression);\n } else if (this.#expression === undefined) {\n this.#expression = expression as ExpressionImpl;\n } else if (isArithmeticExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n }\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, expression);\n }\n }\n }\n }\n\n setFunction(functionName: string) {\n const callExpression = new CallExpressionImpl(functionName);\n this.addExpression(callExpression);\n this.#callStack.push(callExpression);\n }\n\n setColumn(columnName: string) {\n this.addExpression(new ColumnExpressionImpl(columnName));\n }\n\n setArithmeticOp(value: string) {\n const op = value as arithmeticOp;\n const expression = this.#expression as Expression;\n if (isArithmeticExpression(expression)) {\n expression.op = op;\n }\n // else {\n // const targetExpression = firstIncompleteExpression(this.#expression);\n // if (targetExpression) {\n // targetExpression.op = op;\n // }\n // }\n }\n\n setRelationalOperator(value: string) {\n const op = value as relationalOp;\n if (this.#expression && isConditionalExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (isRelationalExpression(targetExpression)) {\n targetExpression.op = op;\n } else {\n console.error(`no target expression found (op = ${value})`);\n }\n }\n }\n\n setValue(value: string | number | boolean) {\n const literalExpression = new LiteralExpressionImpl(value);\n if (this.#expression === undefined) {\n this.#expression = literalExpression;\n } else if (isArithmeticExpression(this.#expression)) {\n this.addExpression(literalExpression);\n } else if (isCallExpression(this.#expression)) {\n // TODO this might not be correct if call arguments include nested expression(s)\n this.#expression.arguments.push(literalExpression);\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n literalExpression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, literalExpression);\n }\n } else {\n console.log(\"what do we do with value, in a complete expression\");\n }\n }\n }\n\n closeBrace() {\n this.#callStack.pop();\n }\n\n get expression() {\n return this.#expression;\n }\n\n toJSON() {\n return this.#expression?.toJSON() as ColumnDefinitionExpression;\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const columnExpression = new ColumnExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"AndCondition\":\n columnExpression.setCondition(\"and\");\n break;\n\n case \"OrCondition\":\n columnExpression.setCondition(\"or\");\n break;\n\n case \"RelationalExpression\":\n // TODO this breaks when the relationalexpression is an argument to a CallExpression\n columnExpression.setCondition();\n break;\n\n case \"ArithmeticExpression\":\n columnExpression.addExpression(new ArithmeticExpressionImpl());\n break;\n\n case \"Column\":\n {\n const columnName = source.substring(from, to);\n columnExpression.setColumn(columnName);\n }\n break;\n\n case \"Function\":\n {\n const functionName = source.substring(from, to);\n columnExpression.setFunction(functionName);\n }\n break;\n\n case \"Times\":\n case \"Divide\":\n case \"Plus\":\n case \"Minus\":\n {\n const op = source.substring(from, to);\n columnExpression.setArithmeticOp(op);\n }\n break;\n\n case \"RelationalOperator\":\n {\n const op = source.substring(from, to);\n columnExpression.setRelationalOperator(op);\n }\n break;\n\n case \"False\":\n case \"True\":\n {\n const value = source.substring(from, to);\n columnExpression.setValue(value === \"true\" ? true : false);\n }\n break;\n\n case \"String\":\n columnExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n columnExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"CloseBrace\":\n columnExpression.closeBrace();\n break;\n\n default:\n }\n } while (cursor.next());\n\n return columnExpression.toJSON();\n};\n"],"names":["_expressions","_op"],"mappings":";;;;;;;AAAA,IAAA,YAAA,EAAA,GAAA,EAAAA,aAAAC,EAAAA,aAAAA,EAAAA,IAAAA,EAAAD,aAAAC,EAAAA,IAAAA,EAAAD,aAAA,EAAA,WAAA,EAAA,UAAA,CAAA;AAyFA,MAAM,qBAA4C,CAAA;AAAA,EAMhD,YAAY,KAAkC,EAAA;AAC5C,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,IAAA,QAAQ,OAAO,KAAO;AAAA,MACpB,KAAK,SAAA;AACH,QAAA,IAAA,CAAK,IAAO,GAAA,0BAAA,CAAA;AACZ,QAAA,MAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA,IAAA,CAAK,IAAO,GAAA,0BAAA,CAAA;AACZ,QAAA,MAAA;AAAA,MACF;AACE,QAAA,IAAA,CAAK,IAAO,GAAA,yBAAA,CAAA;AAAA,KAChB;AAAA,GACF;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,OAAO,IAAK,CAAA,KAAA;AAAA,KACd,CAAA;AAAA,GAIF;AACF,CAAA;AACA,MAAM,oBAA8C,CAAA;AAAA,EAGlD,YAAY,UAAoB,EAAA;AAFhC,IAAO,IAAA,CAAA,IAAA,GAAA,eAAA,CAAA;AAGL,IAAA,IAAA,CAAK,MAAS,GAAA,UAAA,CAAA;AAAA,GAChB;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,QAAQ,IAAK,CAAA,MAAA;AAAA,KACf,CAAA;AAAA,GACF;AACF,CAAA;AACA,MAAM,wBAAyD,CAAA;AAAA,EAO7D,WAAA,CAAY,KAA+B,SAAW,EAAA;AANtD,IAAyC,YAAA,CAAA,IAAA,EAAA,YAAA,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AACA,IAAO,IAAA,CAAA,IAAA,GAAA,sBAAA,CAAA;AAEL,IAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,GAAG,EAAkB,EAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA;AAAA,MACT,aAAa,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA,KACpB,CAAA;AAAA,GACF;AACF,CAAA;AA1BE,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIA,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAwBF,MAAM,kBAA6C,CAAA;AAAA,EAIjD,YAAY,YAAsB,EAAA;AAHlC,IAAA,YAAA,CAAA,IAAA,EAAAA,eAA6B,EAAC,CAAA,CAAA;AAE9B,IAAO,IAAA,CAAA,IAAA,GAAA,gBAAA,CAAA;AAEL,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,cAAc,IAAK,CAAA,YAAA;AAAA,MACnB,SAAA,EAAW,mBAAKA,aAAa,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,CAAA;AAAA,KACtD,CAAA;AAAA,GACF;AACF,CAAA;AArBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAuBF,MAAM,wBAAyD,CAAA;AAAA,EAA/D,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAAA,aAAyC,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAAC,IAAoB,EAAA,SAAA,CAAA,CAAA;AACpB,IAAO,IAAA,CAAA,IAAA,GAAA,sBAAA,CAAA;AAAA,GAAA;AAAA,EAEP,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,GAAG,EAAkB,EAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAKA,IAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAKC,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA;AAAA,MACT,aAAa,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;AAAA,KACpB,CAAA;AAAA,GACF;AACF,CAAA;AAxBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIAC,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAsBF,MAAM,mBAAgD,CAAA;AAAA,EAOpD,YAAY,eAA+B,EAAA;AAN3C,IAAA,YAAA,CAAA,IAAA,EAAAD,aAAyC,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAAC,YAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACA,IAAO,IAAA,CAAA,IAAA,GAAA,kBAAA,CAAA;AAEL,IAAA,YAAA,CAAA,IAAA,EAAKA,IAAM,EAAA,eAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAKC,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA;AAAA,MACT,WAAA,EAAa,mBAAKD,aAAa,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,CAAA;AAAA,KACxD,CAAA;AAAA,GACF;AACF,CAAA;AAtBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIAC,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAoBF,MAAM,yBAA2D,CAAA;AAAA,EAI/D,YAAY,eAAgC,EAAA;AAH5C,IAAAD,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AACA,IAAO,IAAA,CAAA,IAAA,GAAA,uBAAA,CAAA;AAGL,IAAA,YAAA,CAAA,IAAA,EAAKA,aAAe,EAAA;AAAA,MAClB,kBACI,IAAI,mBAAA,CAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA;AAAA,MACjC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GACF;AAAA,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,IAAI,SAAiC,GAAA;AACnC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,gBAA+B,GAAA;AACjC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,iBAAiB,UAAwB,EAAA;AAC3C,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAa,CAAC,CAAI,GAAA,UAAA,CAAA;AAAA,GACzB;AAAA,EACA,IAAI,eAA8B,GAAA;AAChC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,gBAAgB,UAAwB,EAAA;AAC1C,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAa,CAAC,CAAI,GAAA,UAAA,CAAA;AAAA,GACzB;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,SAAA,EAAW,IAAK,CAAA,SAAA,CAAU,MAAS,IAAA;AAAA,MACnC,kBAAkB,IAAK,CAAA,gBAAA;AAAA,MACvB,eAAiB,EAAA,IAAA,CAAK,eAAiB,EAAA,MAAA,QAAc,IAAK,CAAA,eAAA;AAAA,KAC5D,CAAA;AAAA,GACF;AACF,CAAA;AAzCEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAmDF,MAAM,SAAY,GAAA,CAAC,CACjB,KAAA,CAAA,CAAE,IAAS,KAAA,SAAA,CAAA;AAEb,MAAM,sBAAyB,GAAA,CAC7B,UAEA,KAAA,UAAA,CAAW,IAAS,KAAA,sBAAA,CAAA;AAEtB,MAAM,gBAAmB,GAAA,CACvB,UACiC,KAAA,UAAA,CAAW,IAAS,KAAA,gBAAA,CAAA;AAEvD,MAAM,uBAA0B,GAAA,CAC9B,UAEA,KAAA,UAAA,CAAW,IAAS,KAAA,uBAAA,CAAA;AAEtB,MAAM,cAAc,CAClB,UAAA,KAEA,WAAW,IAAS,KAAA,sBAAA,IACpB,WAAW,IAAS,KAAA,kBAAA,CAAA;AAQtB,MAAM,kBAAqB,GAAA,CACzB,UACmC,KAAA,UAAA,CAAW,IAAS,KAAA,kBAAA,CAAA;AAEzD,MAAM,sBAAyB,GAAA,CAC7B,UAEA,KAAA,UAAA,EAAY,IAAS,KAAA,sBAAA,CAAA;AAQvB,MAAM,yBAAA,GAA4B,CAChC,UAC2B,KAAA;AAC3B,EAAI,IAAA,SAAA,CAAU,UAAU,CAAG,EAAA;AACzB,IAAO,OAAA,UAAA,CAAA;AAAA,GACT,MAAA,IAAW,sBAAuB,CAAA,UAAU,CAAG,EAAA;AAC7C,IAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAI,UAAW,CAAA,WAAA,CAAA;AACxC,IAAI,IAAA,sBAAA,CAAuB,QAAQ,CAAG,EAAA;AACpC,MAAA,OAAO,0BAA0B,QAAQ,CAAA,CAAA;AAAA,KAC3C,MAAA,IAAW,UAAW,CAAA,EAAA,KAAO,SAAW,EAAA;AACtC,MAAO,OAAA,UAAA,CAAA;AAAA,KACT,MAAA,IAAW,sBAAuB,CAAA,QAAQ,CAAG,EAAA;AAC3C,MAAA,OAAO,0BAA0B,QAAQ,CAAA,CAAA;AAAA,KAC3C;AAAA,GACF,MAAA,IAAW,WAAY,CAAA,UAAU,CAAG,EAAA;AAClC,IAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,UAAA,CAAA;AAC7B,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAI,IAAA,sBAAA,CAAuB,CAAC,CAAG,EAAA;AAC7B,QAAA,OAAO,0BAA0B,CAAC,CAAA,CAAA;AAAA,OACpC;AAAA,KACF;AAAA,GACF,MAAA,IAAW,uBAAwB,CAAA,UAAU,CAAG,EAAA;AAC9C,IAAA,MAAM,EAAE,SAAA,EAAW,gBAAkB,EAAA,eAAA,EAAoB,GAAA,UAAA,CAAA;AACzD,IAAI,IAAA,sBAAA,CAAuB,SAAS,CAAG,EAAA;AACrC,MAAA,OAAO,0BAA0B,SAAS,CAAA,CAAA;AAAA,KAC5C,MAAA,IAAW,sBAAuB,CAAA,gBAAgB,CAAG,EAAA;AACnD,MAAA,OAAO,0BAA0B,gBAAgB,CAAA,CAAA;AAAA,KACnD,MAAA,IAAW,sBAAuB,CAAA,eAAe,CAAG,EAAA;AAClD,MAAA,OAAO,0BAA0B,eAAe,CAAA,CAAA;AAAA,KAClD;AAAA,GACF,MAAA,IAAW,sBAAuB,CAAA,UAAU,CAAG,EAAA;AAC7C,IAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,UAAA,CAAA;AAC7B,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAI,IAAA,sBAAA,CAAuB,CAAC,CAAG,EAAA;AAC7B,QAAA,OAAO,0BAA0B,CAAC,CAAA,CAAA;AAAA,OACpC;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AACA,MAAM,wBAA2B,GAAA,CAC/B,oBACA,EAAA,iBAAA,EACA,UACY,KAAA;AACZ,EAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,oBAAA,CAAA;AAC7B,EAAI,IAAA,WAAA,CAAY,QAAS,CAAA,iBAAiB,CAAG,EAAA;AAC3C,IAAM,MAAA,GAAA,GAAM,WAAY,CAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AACjD,IAAY,WAAA,CAAA,MAAA,CAAO,GAAK,EAAA,CAAA,EAAG,UAAU,CAAA,CAAA;AACrC,IAAO,OAAA,IAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAA,IAAI,wBAAyB,CAAA,CAAA,EAAG,iBAAmB,EAAA,UAAU,CAAG,EAAA;AAC9D,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,MAAM,sBAAA,GAAyB,CAAC,UAAoC,KAAA;AAClE,EAAI,IAAA,SAAA,CAAU,UAAU,CAAG,EAAA;AACzB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,MAAA,IAAW,uBAAwB,CAAA,UAAU,CAAG,EAAA;AAC9C,IACE,OAAA,sBAAA,CAAuB,UAAW,CAAA,SAAS,CAC3C,IAAA,sBAAA,CAAuB,WAAW,gBAAgB,CAAA,IAClD,sBAAuB,CAAA,UAAA,CAAW,eAAe,CAAA,CAAA;AAAA,aAGnD,sBAAuB,CAAA,UAAU,CACjC,IAAA,kBAAA,CAAmB,UAAU,CAC7B,EAAA;AACA,IACE,OAAA,UAAA,CAAW,EAAO,KAAA,KAAA,CAAA,IAClB,UAAW,CAAA,WAAA,CAAY,KAAK,CAAC,CAAA,KAAM,sBAAuB,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAEhE;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAWA,MAAM,aAAA,GAAgB,CACpB,UAAA,EACA,aACG,KAAA;AACH,EAAM,MAAA,gBAAA,GAAmB,0BAA0B,UAAU,CAAA,CAAA;AAC7D,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,IAAI,iBAAiB,WAAa,EAAA;AAChC,MAAiB,gBAAA,CAAA,WAAA,CAAY,KAAK,aAA2B,CAAA,CAAA;AAAA,KACxD,MAAA;AACL,MAAA,OAAA,CAAQ,KAAK,0CAA0C,CAAA,CAAA;AAAA,KACzD;AAAA,GACK,MAAA;AACL,IAAA,OAAA,CAAQ,MAAM,4BAA4B,CAAA,CAAA;AAAA,GAC5C;AACF,CAAA,CAAA;AAEA,MAAM,gBAAiB,CAAA;AAAA,EAAvB,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAA+B,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA,EAEhC,aAAa,eAAgC,EAAA;AAC3C,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAW,CAAA,EAAA;AAClC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,yBAA0B,CAAA,eAAe,CAAC,CAAA,CAAA;AAAA,KACxD,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAA,IAAI,sBAAuB,CAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,SAAS,CAAG,EAAA;AACtD,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OACnB,MAAA,IAAA,SAAA,CAAU,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,gBAAgB,CAAG,EAAA;AACvD,QAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,mBAAmB,IAAI,yBAAA;AAAA,UACtC,eAAA;AAAA,SACF,CAAA;AAAA,OACS,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,gBAAgB,CAAG,EAAA;AACpE,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OACnB,MAAA,IAAA,SAAA,CAAU,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,eAAe,CAAG,EAAA;AACtD,QAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,kBAAkB,IAAI,yBAAA;AAAA,UACrC,eAAA;AAAA,SACF,CAAA;AAAA,OACS,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,eAAe,CAAG,EAAA;AACnE,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OAC9B;AAAA,KAGQ,MAAA;AACR,MAAA,OAAA,CAAQ,MAAM,kCAAkC,CAAA,CAAA;AAAA,KAClD;AAAA,GACF;AAAA,EAEA,cAAc,UAAyC,EAAA;AACrD,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,CAAA,CAAA,MAAA,GAAS,CAAG,EAAA;AAC9B,MAAA,MAAM,qBAAwB,GAAA,YAAA,CAAA,IAAA,EAAK,UAAW,CAAA,CAAA,EAAA,CAAG,CAAE,CAAA,CAAA,CAAA;AACnD,MAAuB,qBAAA,EAAA,SAAA,CAAU,KAAK,UAAwB,CAAA,CAAA;AAAA,KAChE,MAAA,IAAW,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,KAAgB,KAAW,CAAA,EAAA;AACzC,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,UAAA,CAAA,CAAA;AAAA,KACV,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACnD,MAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,QAAA,wBAAA;AAAA,UACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,UACL,gBAAA;AAAA,UACA,UAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACS,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAI,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAC5C,QAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,QAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,UAAA,wBAAA;AAAA,YACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,YACL,gBAAA;AAAA,YACA,UAAA;AAAA,WACF,CAAA;AAAA,mBACS,gBAAkB,EAAA;AAC3B,UAAA,aAAA,CAAc,kBAAkB,UAAU,CAAA,CAAA;AAAA,SAC5C;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,YAAY,YAAsB,EAAA;AAChC,IAAM,MAAA,cAAA,GAAiB,IAAI,kBAAA,CAAmB,YAAY,CAAA,CAAA;AAC1D,IAAA,IAAA,CAAK,cAAc,cAAc,CAAA,CAAA;AACjC,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAW,KAAK,cAAc,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,UAAU,UAAoB,EAAA;AAC5B,IAAA,IAAA,CAAK,aAAc,CAAA,IAAI,oBAAqB,CAAA,UAAU,CAAC,CAAA,CAAA;AAAA,GACzD;AAAA,EAEA,gBAAgB,KAAe,EAAA;AAC7B,IAAA,MAAM,EAAK,GAAA,KAAA,CAAA;AACX,IAAA,MAAM,aAAa,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACxB,IAAI,IAAA,sBAAA,CAAuB,UAAU,CAAG,EAAA;AACtC,MAAA,UAAA,CAAW,EAAK,GAAA,EAAA,CAAA;AAAA,KAClB;AAAA,GAOF;AAAA,EAEA,sBAAsB,KAAe,EAAA;AACnC,IAAA,MAAM,EAAK,GAAA,KAAA,CAAA;AACX,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,IAAe,uBAAwB,CAAA,YAAA,CAAA,IAAA,EAAK,YAAW,CAAG,EAAA;AACjE,MAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,sBAAA,CAAuB,gBAAgB,CAAG,EAAA;AAC5C,QAAA,gBAAA,CAAiB,EAAK,GAAA,EAAA,CAAA;AAAA,OACjB,MAAA;AACL,QAAQ,OAAA,CAAA,KAAA,CAAM,CAAoC,iCAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,OAC5D;AAAA,KACF;AAAA,GACF;AAAA,EAEA,SAAS,KAAkC,EAAA;AACzC,IAAM,MAAA,iBAAA,GAAoB,IAAI,qBAAA,CAAsB,KAAK,CAAA,CAAA;AACzD,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAW,CAAA,EAAA;AAClC,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,iBAAA,CAAA,CAAA;AAAA,KACV,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACnD,MAAA,IAAA,CAAK,cAAc,iBAAiB,CAAA,CAAA;AAAA,KAC3B,MAAA,IAAA,gBAAA,CAAiB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAE7C,MAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,SAAU,CAAA,IAAA,CAAK,iBAAiB,CAAA,CAAA;AAAA,KACxC,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAI,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAC5C,QAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,QAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,UAAA,wBAAA;AAAA,YACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,YACL,gBAAA;AAAA,YACA,iBAAA;AAAA,WACF,CAAA;AAAA,mBACS,gBAAkB,EAAA;AAC3B,UAAA,aAAA,CAAc,kBAAkB,iBAAiB,CAAA,CAAA;AAAA,SACnD;AAAA,OACK,MAAA;AACL,QAAA,OAAA,CAAQ,IAAI,oDAAoD,CAAA,CAAA;AAAA,OAClE;AAAA,KACF;AAAA,GACF;AAAA,EAEA,UAAa,GAAA;AACX,IAAA,YAAA,CAAA,IAAA,EAAK,YAAW,GAAI,EAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,cAAa,MAAO,EAAA,CAAA;AAAA,GAClC;AACF,CAAA;AAhJE,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAEA,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAgJW,MAAA,QAAA,GAAW,CAAC,IAAA,EAAY,MAAmB,KAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,IAAI,gBAAiB,EAAA,CAAA;AAC9C,EAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA,CAAA;AAC3B,EAAG,GAAA;AACD,IAAA,MAAM,EAAE,IAAA,EAAM,IAAM,EAAA,EAAA,EAAO,GAAA,MAAA,CAAA;AAC3B,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,cAAA;AACH,QAAA,gBAAA,CAAiB,aAAa,KAAK,CAAA,CAAA;AACnC,QAAA,MAAA;AAAA,MAEF,KAAK,aAAA;AACH,QAAA,gBAAA,CAAiB,aAAa,IAAI,CAAA,CAAA;AAClC,QAAA,MAAA;AAAA,MAEF,KAAK,sBAAA;AAEH,QAAA,gBAAA,CAAiB,YAAa,EAAA,CAAA;AAC9B,QAAA,MAAA;AAAA,MAEF,KAAK,sBAAA;AACH,QAAiB,gBAAA,CAAA,aAAA,CAAc,IAAI,wBAAA,EAA0B,CAAA,CAAA;AAC7D,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA;AACE,UAAA,MAAM,UAAa,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAC5C,UAAA,gBAAA,CAAiB,UAAU,UAAU,CAAA,CAAA;AAAA,SACvC;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,UAAA;AACH,QAAA;AACE,UAAA,MAAM,YAAe,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAC9C,UAAA,gBAAA,CAAiB,YAAY,YAAY,CAAA,CAAA;AAAA,SAC3C;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,QAAA,CAAA;AAAA,MACL,KAAK,MAAA,CAAA;AAAA,MACL,KAAK,OAAA;AACH,QAAA;AACE,UAAA,MAAM,EAAK,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACpC,UAAA,gBAAA,CAAiB,gBAAgB,EAAE,CAAA,CAAA;AAAA,SACrC;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,oBAAA;AACH,QAAA;AACE,UAAA,MAAM,EAAK,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACpC,UAAA,gBAAA,CAAiB,sBAAsB,EAAE,CAAA,CAAA;AAAA,SAC3C;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,MAAA;AACH,QAAA;AACE,UAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACvC,UAAA,gBAAA,CAAiB,QAAS,CAAA,KAAA,KAAU,MAAS,GAAA,IAAA,GAAO,KAAK,CAAA,CAAA;AAAA,SAC3D;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA,gBAAA,CAAiB,SAAS,MAAO,CAAA,SAAA,CAAU,OAAO,CAAG,EAAA,EAAA,GAAK,CAAC,CAAC,CAAA,CAAA;AAC5D,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA,gBAAA,CAAiB,SAAS,UAAW,CAAA,MAAA,CAAO,UAAU,IAAM,EAAA,EAAE,CAAC,CAAC,CAAA,CAAA;AAChE,QAAA,MAAA;AAAA,MAEF,KAAK,YAAA;AACH,QAAA,gBAAA,CAAiB,UAAW,EAAA,CAAA;AAC5B,QAAA,MAAA;AAEF,KACF;AAAA,GACF,QAAS,OAAO,IAAK,EAAA,EAAA;AAErB,EAAA,OAAO,iBAAiB,MAAO,EAAA,CAAA;AACjC;;;;"}
1
+ {"version":3,"file":"ColumnExpressionTreeWalker.js","sources":["../../../src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.ts"],"sourcesContent":["import { Tree } from \"@vuu-ui/vuu-codemirror\";\nimport { RelationalExpression } from \"./generated/column-parser.terms\";\ntype expressionType =\n | \"arithmeticExpression\"\n | \"booleanCondition\"\n | \"booleanLiteralExpression\"\n | \"callExpression\"\n | \"colExpression\"\n | \"conditionalExpression\"\n | \"numericLiteralExpression\"\n | \"relationalExpression\"\n | \"stringLiteralExpression\"\n | \"unknown\";\n\ntype arithmeticOp = \"*\" | \"/\" | \"+\" | \"-\" | \"unknown\";\ntype booleanOp = \"and\" | \"or\";\ntype relationalOp = \"=\" | \"!=\" | \">\" | \">=\" | \"<\" | \"<=\" | \"unknown\";\n\nexport interface Expression {\n type: expressionType;\n expressions?: Expression[];\n toJSON?: () => unknown;\n value?: string | number | boolean;\n}\n\ninterface UnknownExpression extends Expression {\n type: \"unknown\";\n}\n\ninterface BooleanLiteralExpression {\n type: \"booleanLiteralExpression\";\n value: boolean;\n}\n\ninterface NumericLiteralExpression {\n type: \"numericLiteralExpression\";\n value: number;\n}\ninterface StringLiteralExpression {\n type: \"stringLiteralExpression\";\n value: string;\n}\n\ninterface ArithmeticExpression extends Expression {\n expressions: [Expression, Expression];\n op: arithmeticOp;\n type: \"arithmeticExpression\";\n}\n\ninterface BooleanCondition extends Expression {\n expressions: Expression[];\n op: booleanOp;\n type: \"booleanCondition\";\n}\ninterface RelationalExpression extends Expression {\n expressions: Expression[];\n op: relationalOp;\n type: \"relationalExpression\";\n}\n\ninterface ColExpression extends Expression {\n column?: string;\n type: \"colExpression\";\n}\n\ninterface CallExpression extends Expression {\n arguments: Expression[];\n functionName?: string;\n type: \"callExpression\";\n}\n\ntype ConditionExpression = RelationalExpression | BooleanCondition;\n\ninterface ConditionalExpression extends Expression {\n type: \"conditionalExpression\";\n condition: ConditionExpression;\n truthyExpression: Expression;\n falsyExpression: Expression;\n}\n\nexport type ColumnDefinitionExpression =\n | ArithmeticExpression\n | BooleanLiteralExpression\n | CallExpression\n | ColExpression\n | ConditionalExpression\n | NumericLiteralExpression\n | StringLiteralExpression;\n\nclass LiteralExpressionImpl implements Expression {\n type:\n | \"booleanLiteralExpression\"\n | \"numericLiteralExpression\"\n | \"stringLiteralExpression\";\n value: boolean | number | string;\n constructor(value: boolean | number | string) {\n this.value = value;\n switch (typeof value) {\n case \"boolean\":\n this.type = \"booleanLiteralExpression\";\n break;\n case \"number\":\n this.type = \"numericLiteralExpression\";\n break;\n default:\n this.type = \"stringLiteralExpression\";\n }\n }\n toJSON() {\n return {\n type: this.type,\n value: this.value,\n } as\n | StringLiteralExpression\n | BooleanLiteralExpression\n | NumericLiteralExpression;\n }\n}\nclass ColumnExpressionImpl implements ColExpression {\n type = \"colExpression\" as const;\n column: string;\n constructor(columnName: string) {\n this.column = columnName;\n }\n toJSON() {\n return {\n type: this.type,\n column: this.column,\n } as ColExpression;\n }\n}\nclass ArithmeticExpressionImpl implements ArithmeticExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: arithmeticOp | \"unknown\";\n type = \"arithmeticExpression\" as const;\n constructor(op: arithmeticOp | \"unknown\" = \"unknown\") {\n this.#op = op;\n }\n get op() {\n return this.#op;\n }\n set op(op: arithmeticOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n };\n }\n}\n\nclass CallExpressionImpl implements CallExpression {\n #expressions: Expression[] = [];\n functionName: string;\n type = \"callExpression\" as const;\n constructor(functionName: string) {\n this.functionName = functionName;\n }\n\n get expressions() {\n return this.#expressions;\n }\n get arguments() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n functionName: this.functionName,\n arguments: this.#expressions.map((e) => e.toJSON?.()),\n } as CallExpression;\n }\n}\n\nclass RelationalExpressionImpl implements RelationalExpression {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: relationalOp = \"unknown\";\n type = \"relationalExpression\" as const;\n\n get op() {\n return this.#op;\n }\n set op(op: relationalOp) {\n this.#op = op;\n }\n get expressions() {\n return this.#expressions;\n }\n\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions,\n } as RelationalExpression;\n }\n}\n\nclass BooleanConditionImp implements BooleanCondition {\n #expressions: [Expression, Expression] = [\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n #op: \"and\" | \"or\";\n type = \"booleanCondition\" as const;\n constructor(booleanOperator: \"and\" | \"or\") {\n this.#op = booleanOperator;\n }\n get op() {\n return this.#op;\n }\n get expressions() {\n return this.#expressions;\n }\n toJSON() {\n return {\n type: this.type,\n op: this.#op,\n expressions: this.#expressions.map((e) => e.toJSON?.()),\n };\n }\n}\n\nclass ConditionalExpressionImpl implements ConditionalExpression {\n #expressions: [ConditionExpression, Expression, Expression];\n type = \"conditionalExpression\" as const;\n\n constructor(booleanOperator?: \"and\" | \"or\") {\n this.#expressions = [\n booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl(),\n { type: \"unknown\" },\n { type: \"unknown\" },\n ];\n }\n\n get expressions() {\n return this.#expressions;\n }\n\n get condition(): ConditionExpression {\n return this.#expressions[0];\n }\n get truthyExpression(): Expression {\n return this.#expressions[1];\n }\n set truthyExpression(expression: Expression) {\n this.#expressions[1] = expression;\n }\n get falsyExpression(): Expression {\n return this.#expressions[2];\n }\n set falsyExpression(expression: Expression) {\n this.#expressions[2] = expression;\n }\n\n toJSON() {\n return {\n type: this.type,\n condition: this.condition.toJSON?.(),\n truthyExpression: this.truthyExpression,\n falsyExpression: this.falsyExpression?.toJSON?.() ?? this.falsyExpression,\n };\n }\n}\n\ntype PartialExpression =\n | ArithmeticExpression\n | RelationalExpression\n | ColExpression\n | CallExpression\n | BooleanCondition\n | Partial<ConditionalExpression>;\n\nconst isUnknown = (e: Expression): e is UnknownExpression =>\n e.type === \"unknown\";\n\nconst isArithmeticExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ArithmeticExpression =>\n expression.type === \"arithmeticExpression\";\n\nconst isCallExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is CallExpression => expression.type === \"callExpression\";\n\nconst isConditionalExpression = (\n expression: PotentiallyUnresolvedExpression,\n): expression is ConditionalExpression =>\n expression.type === \"conditionalExpression\";\n\nconst isCondition = (\n expression: Expression | PartialExpression,\n): expression is ConditionExpression =>\n expression.type === \"relationalExpression\" ||\n expression.type === \"booleanCondition\";\n\nconst booleanConditionIsIncomplete = (\n condition: ConditionExpression,\n): boolean =>\n condition.expressions.length < 2 ||\n condition.expressions.some((e) => conditionIsIncomplete(e));\n\nconst isBooleanCondition = (\n expression: Expression,\n): expression is BooleanCondition => expression.type === \"booleanCondition\";\n\nconst isRelationalExpression = (\n expression?: Expression,\n): expression is RelationalExpression =>\n expression?.type === \"relationalExpression\";\n\nconst conditionIsIncomplete = (\n condition: Expression,\n): condition is ConditionExpression =>\n (isBooleanCondition(condition) && booleanConditionIsIncomplete(condition)) ||\n (isRelationalExpression(condition) && condition.expressions.length < 2);\n\nconst firstIncompleteExpression = (\n expression: Expression,\n): Expression | undefined => {\n if (isUnknown(expression)) {\n return expression;\n } else if (isRelationalExpression(expression)) {\n const [operand1, operand2] = expression.expressions;\n if (expressionIsIncomplete(operand1)) {\n return firstIncompleteExpression(operand1);\n } else if (expression.op === \"unknown\") {\n return expression;\n } else if (expressionIsIncomplete(operand2)) {\n return firstIncompleteExpression(operand2);\n }\n } else if (isCondition(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n } else if (isConditionalExpression(expression)) {\n const { condition, truthyExpression, falsyExpression } = expression;\n if (expressionIsIncomplete(condition)) {\n return firstIncompleteExpression(condition);\n } else if (expressionIsIncomplete(truthyExpression)) {\n return firstIncompleteExpression(truthyExpression);\n } else if (expressionIsIncomplete(falsyExpression)) {\n return firstIncompleteExpression(falsyExpression);\n }\n } else if (isArithmeticExpression(expression)) {\n const { expressions = [] } = expression;\n for (const e of expressions) {\n if (expressionIsIncomplete(e)) {\n return firstIncompleteExpression(e);\n }\n }\n }\n};\nconst replaceUnknownExpression = (\n incompleteExpression: Expression,\n unknownExpression: UnknownExpression,\n expression: Expression,\n): boolean => {\n const { expressions = [] } = incompleteExpression;\n if (expressions.includes(unknownExpression)) {\n const pos = expressions.indexOf(unknownExpression);\n expressions.splice(pos, 1, expression);\n return true;\n } else {\n for (const e of expressions) {\n if (replaceUnknownExpression(e, unknownExpression, expression)) {\n return true;\n }\n }\n }\n return false;\n};\n\nconst expressionIsIncomplete = (expression: Expression): boolean => {\n if (isUnknown(expression)) {\n return true;\n } else if (isConditionalExpression(expression)) {\n return (\n expressionIsIncomplete(expression.condition) ||\n expressionIsIncomplete(expression.truthyExpression) ||\n expressionIsIncomplete(expression.falsyExpression)\n );\n } else if (\n isRelationalExpression(expression) ||\n isBooleanCondition(expression)\n ) {\n return (\n expression.op === undefined ||\n expression.expressions.some((e) => expressionIsIncomplete(e))\n );\n }\n // TODO missing cases\n return false;\n};\n\ntype ExpressionImpl =\n | ArithmeticExpressionImpl\n | CallExpressionImpl\n | ColumnExpressionImpl\n | ConditionalExpressionImpl\n | LiteralExpressionImpl;\n\ntype PotentiallyUnresolvedExpression = Expression | PartialExpression;\n\nconst addExpression = (\n expression: Expression,\n subExpression: PartialExpression | Expression,\n) => {\n const targetExpression = firstIncompleteExpression(expression);\n if (targetExpression) {\n if (targetExpression.expressions) {\n targetExpression.expressions.push(subExpression as Expression);\n } else {\n console.warn(\"don't know how to treat targetExpression\");\n }\n } else {\n console.error(\"no target expression found\");\n }\n};\n\nclass ColumnExpression {\n #expression: ExpressionImpl | undefined;\n\n #callStack: CallExpression[] = [];\n\n setCondition(booleanOperator?: \"and\" | \"or\") {\n if (this.#expression === undefined) {\n this.addExpression(new ConditionalExpressionImpl(booleanOperator));\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression.condition)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.truthyExpression)) {\n this.#expression.truthyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.truthyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n } else if (isUnknown(this.#expression.falsyExpression)) {\n this.#expression.falsyExpression = new ConditionalExpressionImpl(\n booleanOperator,\n );\n } else if (expressionIsIncomplete(this.#expression.falsyExpression)) {\n const condition = booleanOperator\n ? new BooleanConditionImp(booleanOperator)\n : new RelationalExpressionImpl();\n this.addExpression(condition);\n }\n } /*else if (isCallExpression(this.#expression)) {\n this.addExpression(new RelationalExpressionImpl());\n } */ else {\n console.error(\"setCondition called unexpectedly\");\n }\n }\n\n addExpression(expression: ExpressionImpl | Expression) {\n if (this.#callStack.length > 0) {\n const currentCallExpression = this.#callStack.at(-1);\n currentCallExpression?.arguments.push(expression as Expression);\n } else if (this.#expression === undefined) {\n this.#expression = expression as ExpressionImpl;\n } else if (isArithmeticExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n }\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n expression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, expression);\n }\n }\n }\n }\n\n setFunction(functionName: string) {\n const callExpression = new CallExpressionImpl(functionName);\n this.addExpression(callExpression);\n this.#callStack.push(callExpression);\n }\n\n setColumn(columnName: string) {\n this.addExpression(new ColumnExpressionImpl(columnName));\n }\n\n setArithmeticOp(value: string) {\n const op = value as arithmeticOp;\n const expression = this.#expression as Expression;\n if (isArithmeticExpression(expression)) {\n expression.op = op;\n }\n // else {\n // const targetExpression = firstIncompleteExpression(this.#expression);\n // if (targetExpression) {\n // targetExpression.op = op;\n // }\n // }\n }\n\n setRelationalOperator(value: string) {\n const op = value as relationalOp;\n if (this.#expression && isConditionalExpression(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (isRelationalExpression(targetExpression)) {\n targetExpression.op = op;\n } else {\n console.error(`no target expression found (op = ${value})`);\n }\n }\n }\n\n setValue(value: string | number | boolean) {\n const literalExpression = new LiteralExpressionImpl(value);\n if (this.#expression === undefined) {\n this.#expression = literalExpression;\n } else if (isArithmeticExpression(this.#expression)) {\n this.addExpression(literalExpression);\n } else if (isCallExpression(this.#expression)) {\n // TODO this might not be correct if call arguments include nested expression(s)\n this.#expression.arguments.push(literalExpression);\n } else if (isConditionalExpression(this.#expression)) {\n if (expressionIsIncomplete(this.#expression)) {\n const targetExpression = firstIncompleteExpression(this.#expression);\n if (targetExpression && isUnknown(targetExpression)) {\n replaceUnknownExpression(\n this.#expression,\n targetExpression,\n literalExpression,\n );\n } else if (targetExpression) {\n addExpression(targetExpression, literalExpression);\n }\n } else {\n console.log(\"what do we do with value, in a complete expression\");\n }\n }\n }\n\n closeBrace() {\n this.#callStack.pop();\n }\n\n get expression() {\n return this.#expression;\n }\n\n toJSON() {\n return this.#expression?.toJSON() as ColumnDefinitionExpression;\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const columnExpression = new ColumnExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"AndCondition\":\n columnExpression.setCondition(\"and\");\n break;\n\n case \"OrCondition\":\n columnExpression.setCondition(\"or\");\n break;\n\n case \"RelationalExpression\":\n // TODO this breaks when the relationalexpression is an argument to a CallExpression\n columnExpression.setCondition();\n break;\n\n case \"ArithmeticExpression\":\n columnExpression.addExpression(new ArithmeticExpressionImpl());\n break;\n\n case \"Column\":\n {\n const columnName = source.substring(from, to);\n columnExpression.setColumn(columnName);\n }\n break;\n\n case \"Function\":\n {\n const functionName = source.substring(from, to);\n columnExpression.setFunction(functionName);\n }\n break;\n\n case \"Times\":\n case \"Divide\":\n case \"Plus\":\n case \"Minus\":\n {\n const op = source.substring(from, to);\n columnExpression.setArithmeticOp(op);\n }\n break;\n\n case \"RelationalOperator\":\n {\n const op = source.substring(from, to);\n columnExpression.setRelationalOperator(op);\n }\n break;\n\n case \"False\":\n case \"True\":\n {\n const value = source.substring(from, to);\n columnExpression.setValue(value === \"true\" ? true : false);\n }\n break;\n\n case \"String\":\n columnExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n columnExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"CloseBrace\":\n columnExpression.closeBrace();\n break;\n\n default:\n }\n } while (cursor.next());\n\n return columnExpression.toJSON();\n};\n"],"names":["_expressions","_op"],"mappings":";;;;;;;;;;AAAA,IAAA,YAAA,EAAA,GAAA,EAAAA,aAAAC,EAAAA,aAAAA,EAAAA,IAAAA,EAAAD,aAAAC,EAAAA,IAAAA,EAAAD,aAAA,EAAA,WAAA,EAAA,UAAA,CAAA;AAyFA,MAAM,qBAA4C,CAAA;AAAA,EAMhD,YAAY,KAAkC,EAAA;AAL9C,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAIA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAEE,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA,CAAA;AACb,IAAA,QAAQ,OAAO,KAAO;AAAA,MACpB,KAAK,SAAA;AACH,QAAA,IAAA,CAAK,IAAO,GAAA,0BAAA,CAAA;AACZ,QAAA,MAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAA,IAAA,CAAK,IAAO,GAAA,0BAAA,CAAA;AACZ,QAAA,MAAA;AAAA,MACF;AACE,QAAA,IAAA,CAAK,IAAO,GAAA,yBAAA,CAAA;AAAA,KAChB;AAAA,GACF;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,OAAO,IAAK,CAAA,KAAA;AAAA,KACd,CAAA;AAAA,GAIF;AACF,CAAA;AACA,MAAM,oBAA8C,CAAA;AAAA,EAGlD,YAAY,UAAoB,EAAA;AAFhC,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,eAAA,CAAA,CAAA;AACP,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAEE,IAAA,IAAA,CAAK,MAAS,GAAA,UAAA,CAAA;AAAA,GAChB;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,QAAQ,IAAK,CAAA,MAAA;AAAA,KACf,CAAA;AAAA,GACF;AACF,CAAA;AACA,MAAM,wBAAyD,CAAA;AAAA,EAO7D,WAAA,CAAY,KAA+B,SAAW,EAAA;AANtD,IAAyC,YAAA,CAAA,IAAA,EAAA,YAAA,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AACA,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,sBAAA,CAAA,CAAA;AAEL,IAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,GAAG,EAAkB,EAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAK,GAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAK,CAAA,IAAA,EAAA,GAAA,CAAA;AAAA,MACT,aAAa,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA,KACpB,CAAA;AAAA,GACF;AACF,CAAA;AA1BE,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIA,GAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAwBF,MAAM,kBAA6C,CAAA;AAAA,EAIjD,YAAY,YAAsB,EAAA;AAHlC,IAAA,YAAA,CAAA,IAAA,EAAAA,eAA6B,EAAC,CAAA,CAAA;AAC9B,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA,CAAA;AACA,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,CAAA,CAAA;AAEL,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,cAAc,IAAK,CAAA,YAAA;AAAA,MACnB,SAAA,EAAW,mBAAKA,aAAa,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,CAAA;AAAA,KACtD,CAAA;AAAA,GACF;AACF,CAAA;AArBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAuBF,MAAM,wBAAyD,CAAA;AAAA,EAA/D,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAAA,aAAyC,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAAC,IAAoB,EAAA,SAAA,CAAA,CAAA;AACpB,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,sBAAA,CAAA,CAAA;AAAA,GAAA;AAAA,EAEP,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,GAAG,EAAkB,EAAA;AACvB,IAAA,YAAA,CAAA,IAAA,EAAKA,IAAM,EAAA,EAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAKC,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA;AAAA,MACT,aAAa,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA;AAAA,KACpB,CAAA;AAAA,GACF;AACF,CAAA;AAxBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIAC,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAsBF,MAAM,mBAAgD,CAAA;AAAA,EAOpD,YAAY,eAA+B,EAAA;AAN3C,IAAA,YAAA,CAAA,IAAA,EAAAD,aAAyC,EAAA;AAAA,MACvC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AACA,IAAAC,YAAAA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AACA,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,CAAA,CAAA;AAEL,IAAA,YAAA,CAAA,IAAA,EAAKA,IAAM,EAAA,eAAA,CAAA,CAAA;AAAA,GACb;AAAA,EACA,IAAI,EAAK,GAAA;AACP,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKD,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EACA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,IAAI,YAAKC,CAAAA,IAAAA,EAAAA,IAAAA,CAAAA;AAAA,MACT,WAAA,EAAa,mBAAKD,aAAa,CAAA,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,UAAU,CAAA;AAAA,KACxD,CAAA;AAAA,GACF;AACF,CAAA;AAtBEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAIAC,IAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAoBF,MAAM,yBAA2D,CAAA;AAAA,EAI/D,YAAY,eAAgC,EAAA;AAH5C,IAAAD,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AACA,IAAO,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,uBAAA,CAAA,CAAA;AAGL,IAAA,YAAA,CAAA,IAAA,EAAKA,aAAe,EAAA;AAAA,MAClB,kBACI,IAAI,mBAAA,CAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA;AAAA,MACjC,EAAE,MAAM,SAAU,EAAA;AAAA,MAClB,EAAE,MAAM,SAAU,EAAA;AAAA,KACpB,CAAA,CAAA;AAAA,GACF;AAAA,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAAA;AAAA,GACd;AAAA,EAEA,IAAI,SAAiC,GAAA;AACnC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,gBAA+B,GAAA;AACjC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,iBAAiB,UAAwB,EAAA;AAC3C,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAa,CAAC,CAAI,GAAA,UAAA,CAAA;AAAA,GACzB;AAAA,EACA,IAAI,eAA8B,GAAA;AAChC,IAAO,OAAA,YAAA,CAAA,IAAA,EAAKA,eAAa,CAAC,CAAA,CAAA;AAAA,GAC5B;AAAA,EACA,IAAI,gBAAgB,UAAwB,EAAA;AAC1C,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,aAAAA,CAAAA,CAAa,CAAC,CAAI,GAAA,UAAA,CAAA;AAAA,GACzB;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA;AAAA,MACL,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,SAAA,EAAW,IAAK,CAAA,SAAA,CAAU,MAAS,IAAA;AAAA,MACnC,kBAAkB,IAAK,CAAA,gBAAA;AAAA,MACvB,eAAiB,EAAA,IAAA,CAAK,eAAiB,EAAA,MAAA,QAAc,IAAK,CAAA,eAAA;AAAA,KAC5D,CAAA;AAAA,GACF;AACF,CAAA;AAzCEA,aAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAmDF,MAAM,SAAY,GAAA,CAAC,CACjB,KAAA,CAAA,CAAE,IAAS,KAAA,SAAA,CAAA;AAEb,MAAM,sBAAyB,GAAA,CAC7B,UAEA,KAAA,UAAA,CAAW,IAAS,KAAA,sBAAA,CAAA;AAEtB,MAAM,gBAAmB,GAAA,CACvB,UACiC,KAAA,UAAA,CAAW,IAAS,KAAA,gBAAA,CAAA;AAEvD,MAAM,uBAA0B,GAAA,CAC9B,UAEA,KAAA,UAAA,CAAW,IAAS,KAAA,uBAAA,CAAA;AAEtB,MAAM,cAAc,CAClB,UAAA,KAEA,WAAW,IAAS,KAAA,sBAAA,IACpB,WAAW,IAAS,KAAA,kBAAA,CAAA;AAQtB,MAAM,kBAAqB,GAAA,CACzB,UACmC,KAAA,UAAA,CAAW,IAAS,KAAA,kBAAA,CAAA;AAEzD,MAAM,sBAAyB,GAAA,CAC7B,UAEA,KAAA,UAAA,EAAY,IAAS,KAAA,sBAAA,CAAA;AAQvB,MAAM,yBAAA,GAA4B,CAChC,UAC2B,KAAA;AAC3B,EAAI,IAAA,SAAA,CAAU,UAAU,CAAG,EAAA;AACzB,IAAO,OAAA,UAAA,CAAA;AAAA,GACT,MAAA,IAAW,sBAAuB,CAAA,UAAU,CAAG,EAAA;AAC7C,IAAA,MAAM,CAAC,QAAA,EAAU,QAAQ,CAAA,GAAI,UAAW,CAAA,WAAA,CAAA;AACxC,IAAI,IAAA,sBAAA,CAAuB,QAAQ,CAAG,EAAA;AACpC,MAAA,OAAO,0BAA0B,QAAQ,CAAA,CAAA;AAAA,KAC3C,MAAA,IAAW,UAAW,CAAA,EAAA,KAAO,SAAW,EAAA;AACtC,MAAO,OAAA,UAAA,CAAA;AAAA,KACT,MAAA,IAAW,sBAAuB,CAAA,QAAQ,CAAG,EAAA;AAC3C,MAAA,OAAO,0BAA0B,QAAQ,CAAA,CAAA;AAAA,KAC3C;AAAA,GACF,MAAA,IAAW,WAAY,CAAA,UAAU,CAAG,EAAA;AAClC,IAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,UAAA,CAAA;AAC7B,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAI,IAAA,sBAAA,CAAuB,CAAC,CAAG,EAAA;AAC7B,QAAA,OAAO,0BAA0B,CAAC,CAAA,CAAA;AAAA,OACpC;AAAA,KACF;AAAA,GACF,MAAA,IAAW,uBAAwB,CAAA,UAAU,CAAG,EAAA;AAC9C,IAAA,MAAM,EAAE,SAAA,EAAW,gBAAkB,EAAA,eAAA,EAAoB,GAAA,UAAA,CAAA;AACzD,IAAI,IAAA,sBAAA,CAAuB,SAAS,CAAG,EAAA;AACrC,MAAA,OAAO,0BAA0B,SAAS,CAAA,CAAA;AAAA,KAC5C,MAAA,IAAW,sBAAuB,CAAA,gBAAgB,CAAG,EAAA;AACnD,MAAA,OAAO,0BAA0B,gBAAgB,CAAA,CAAA;AAAA,KACnD,MAAA,IAAW,sBAAuB,CAAA,eAAe,CAAG,EAAA;AAClD,MAAA,OAAO,0BAA0B,eAAe,CAAA,CAAA;AAAA,KAClD;AAAA,GACF,MAAA,IAAW,sBAAuB,CAAA,UAAU,CAAG,EAAA;AAC7C,IAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,UAAA,CAAA;AAC7B,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAI,IAAA,sBAAA,CAAuB,CAAC,CAAG,EAAA;AAC7B,QAAA,OAAO,0BAA0B,CAAC,CAAA,CAAA;AAAA,OACpC;AAAA,KACF;AAAA,GACF;AACF,CAAA,CAAA;AACA,MAAM,wBAA2B,GAAA,CAC/B,oBACA,EAAA,iBAAA,EACA,UACY,KAAA;AACZ,EAAA,MAAM,EAAE,WAAA,GAAc,EAAC,EAAM,GAAA,oBAAA,CAAA;AAC7B,EAAI,IAAA,WAAA,CAAY,QAAS,CAAA,iBAAiB,CAAG,EAAA;AAC3C,IAAM,MAAA,GAAA,GAAM,WAAY,CAAA,OAAA,CAAQ,iBAAiB,CAAA,CAAA;AACjD,IAAY,WAAA,CAAA,MAAA,CAAO,GAAK,EAAA,CAAA,EAAG,UAAU,CAAA,CAAA;AACrC,IAAO,OAAA,IAAA,CAAA;AAAA,GACF,MAAA;AACL,IAAA,KAAA,MAAW,KAAK,WAAa,EAAA;AAC3B,MAAA,IAAI,wBAAyB,CAAA,CAAA,EAAG,iBAAmB,EAAA,UAAU,CAAG,EAAA;AAC9D,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAEA,MAAM,sBAAA,GAAyB,CAAC,UAAoC,KAAA;AAClE,EAAI,IAAA,SAAA,CAAU,UAAU,CAAG,EAAA;AACzB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,MAAA,IAAW,uBAAwB,CAAA,UAAU,CAAG,EAAA;AAC9C,IACE,OAAA,sBAAA,CAAuB,UAAW,CAAA,SAAS,CAC3C,IAAA,sBAAA,CAAuB,WAAW,gBAAgB,CAAA,IAClD,sBAAuB,CAAA,UAAA,CAAW,eAAe,CAAA,CAAA;AAAA,aAGnD,sBAAuB,CAAA,UAAU,CACjC,IAAA,kBAAA,CAAmB,UAAU,CAC7B,EAAA;AACA,IACE,OAAA,UAAA,CAAW,EAAO,KAAA,KAAA,CAAA,IAClB,UAAW,CAAA,WAAA,CAAY,KAAK,CAAC,CAAA,KAAM,sBAAuB,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GAEhE;AAEA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AAWA,MAAM,aAAA,GAAgB,CACpB,UAAA,EACA,aACG,KAAA;AACH,EAAM,MAAA,gBAAA,GAAmB,0BAA0B,UAAU,CAAA,CAAA;AAC7D,EAAA,IAAI,gBAAkB,EAAA;AACpB,IAAA,IAAI,iBAAiB,WAAa,EAAA;AAChC,MAAiB,gBAAA,CAAA,WAAA,CAAY,KAAK,aAA2B,CAAA,CAAA;AAAA,KACxD,MAAA;AACL,MAAA,OAAA,CAAQ,KAAK,0CAA0C,CAAA,CAAA;AAAA,KACzD;AAAA,GACK,MAAA;AACL,IAAA,OAAA,CAAQ,MAAM,4BAA4B,CAAA,CAAA;AAAA,GAC5C;AACF,CAAA,CAAA;AAEA,MAAM,gBAAiB,CAAA;AAAA,EAAvB,WAAA,GAAA;AACE,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,EAA+B,EAAC,CAAA,CAAA;AAAA,GAAA;AAAA,EAEhC,aAAa,eAAgC,EAAA;AAC3C,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAW,CAAA,EAAA;AAClC,MAAA,IAAA,CAAK,aAAc,CAAA,IAAI,yBAA0B,CAAA,eAAe,CAAC,CAAA,CAAA;AAAA,KACxD,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAA,IAAI,sBAAuB,CAAA,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,CAAA,SAAS,CAAG,EAAA;AACtD,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OACnB,MAAA,IAAA,SAAA,CAAU,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,gBAAgB,CAAG,EAAA;AACvD,QAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,mBAAmB,IAAI,yBAAA;AAAA,UACtC,eAAA;AAAA,SACF,CAAA;AAAA,OACS,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,gBAAgB,CAAG,EAAA;AACpE,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OACnB,MAAA,IAAA,SAAA,CAAU,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,eAAe,CAAG,EAAA;AACtD,QAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,kBAAkB,IAAI,yBAAA;AAAA,UACrC,eAAA;AAAA,SACF,CAAA;AAAA,OACS,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,eAAe,CAAG,EAAA;AACnE,QAAA,MAAM,YAAY,eACd,GAAA,IAAI,oBAAoB,eAAe,CAAA,GACvC,IAAI,wBAAyB,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,cAAc,SAAS,CAAA,CAAA;AAAA,OAC9B;AAAA,KAGQ,MAAA;AACR,MAAA,OAAA,CAAQ,MAAM,kCAAkC,CAAA,CAAA;AAAA,KAClD;AAAA,GACF;AAAA,EAEA,cAAc,UAAyC,EAAA;AACrD,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,UAAW,CAAA,CAAA,MAAA,GAAS,CAAG,EAAA;AAC9B,MAAA,MAAM,qBAAwB,GAAA,YAAA,CAAA,IAAA,EAAK,UAAW,CAAA,CAAA,EAAA,CAAG,CAAE,CAAA,CAAA,CAAA;AACnD,MAAuB,qBAAA,EAAA,SAAA,CAAU,KAAK,UAAwB,CAAA,CAAA;AAAA,KAChE,MAAA,IAAW,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,KAAgB,KAAW,CAAA,EAAA;AACzC,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,UAAA,CAAA,CAAA;AAAA,KACV,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACnD,MAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,QAAA,wBAAA;AAAA,UACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,UACL,gBAAA;AAAA,UACA,UAAA;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACS,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAI,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAC5C,QAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,QAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,UAAA,wBAAA;AAAA,YACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,YACL,gBAAA;AAAA,YACA,UAAA;AAAA,WACF,CAAA;AAAA,mBACS,gBAAkB,EAAA;AAC3B,UAAA,aAAA,CAAc,kBAAkB,UAAU,CAAA,CAAA;AAAA,SAC5C;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,YAAY,YAAsB,EAAA;AAChC,IAAM,MAAA,cAAA,GAAiB,IAAI,kBAAA,CAAmB,YAAY,CAAA,CAAA;AAC1D,IAAA,IAAA,CAAK,cAAc,cAAc,CAAA,CAAA;AACjC,IAAK,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA,CAAW,KAAK,cAAc,CAAA,CAAA;AAAA,GACrC;AAAA,EAEA,UAAU,UAAoB,EAAA;AAC5B,IAAA,IAAA,CAAK,aAAc,CAAA,IAAI,oBAAqB,CAAA,UAAU,CAAC,CAAA,CAAA;AAAA,GACzD;AAAA,EAEA,gBAAgB,KAAe,EAAA;AAC7B,IAAA,MAAM,EAAK,GAAA,KAAA,CAAA;AACX,IAAA,MAAM,aAAa,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AACxB,IAAI,IAAA,sBAAA,CAAuB,UAAU,CAAG,EAAA;AACtC,MAAA,UAAA,CAAW,EAAK,GAAA,EAAA,CAAA;AAAA,KAClB;AAAA,GAOF;AAAA,EAEA,sBAAsB,KAAe,EAAA;AACnC,IAAA,MAAM,EAAK,GAAA,KAAA,CAAA;AACX,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,IAAe,uBAAwB,CAAA,YAAA,CAAA,IAAA,EAAK,YAAW,CAAG,EAAA;AACjE,MAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,sBAAA,CAAuB,gBAAgB,CAAG,EAAA;AAC5C,QAAA,gBAAA,CAAiB,EAAK,GAAA,EAAA,CAAA;AAAA,OACjB,MAAA;AACL,QAAQ,OAAA,CAAA,KAAA,CAAM,CAAoC,iCAAA,EAAA,KAAK,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,OAC5D;AAAA,KACF;AAAA,GACF;AAAA,EAEA,SAAS,KAAkC,EAAA;AACzC,IAAM,MAAA,iBAAA,GAAoB,IAAI,qBAAA,CAAsB,KAAK,CAAA,CAAA;AACzD,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,KAAW,CAAA,EAAA;AAClC,MAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,iBAAA,CAAA,CAAA;AAAA,KACV,MAAA,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACnD,MAAA,IAAA,CAAK,cAAc,iBAAiB,CAAA,CAAA;AAAA,KAC3B,MAAA,IAAA,gBAAA,CAAiB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAE7C,MAAK,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA,CAAY,SAAU,CAAA,IAAA,CAAK,iBAAiB,CAAA,CAAA;AAAA,KACxC,MAAA,IAAA,uBAAA,CAAwB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AACpD,MAAI,IAAA,sBAAA,CAAuB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAW,CAAG,EAAA;AAC5C,QAAM,MAAA,gBAAA,GAAmB,yBAA0B,CAAA,YAAA,CAAA,IAAA,EAAK,WAAW,CAAA,CAAA,CAAA;AACnE,QAAI,IAAA,gBAAA,IAAoB,SAAU,CAAA,gBAAgB,CAAG,EAAA;AACnD,UAAA,wBAAA;AAAA,YACE,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA,YACL,gBAAA;AAAA,YACA,iBAAA;AAAA,WACF,CAAA;AAAA,mBACS,gBAAkB,EAAA;AAC3B,UAAA,aAAA,CAAc,kBAAkB,iBAAiB,CAAA,CAAA;AAAA,SACnD;AAAA,OACK,MAAA;AACL,QAAA,OAAA,CAAQ,IAAI,oDAAoD,CAAA,CAAA;AAAA,OAClE;AAAA,KACF;AAAA,GACF;AAAA,EAEA,UAAa,GAAA;AACX,IAAA,YAAA,CAAA,IAAA,EAAK,YAAW,GAAI,EAAA,CAAA;AAAA,GACtB;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,CAAA;AAAA,GACd;AAAA,EAEA,MAAS,GAAA;AACP,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,cAAa,MAAO,EAAA,CAAA;AAAA,GAClC;AACF,CAAA;AAhJE,WAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAEA,UAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAgJW,MAAA,QAAA,GAAW,CAAC,IAAA,EAAY,MAAmB,KAAA;AACtD,EAAM,MAAA,gBAAA,GAAmB,IAAI,gBAAiB,EAAA,CAAA;AAC9C,EAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA,CAAA;AAC3B,EAAG,GAAA;AACD,IAAA,MAAM,EAAE,IAAA,EAAM,IAAM,EAAA,EAAA,EAAO,GAAA,MAAA,CAAA;AAC3B,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,cAAA;AACH,QAAA,gBAAA,CAAiB,aAAa,KAAK,CAAA,CAAA;AACnC,QAAA,MAAA;AAAA,MAEF,KAAK,aAAA;AACH,QAAA,gBAAA,CAAiB,aAAa,IAAI,CAAA,CAAA;AAClC,QAAA,MAAA;AAAA,MAEF,KAAK,sBAAA;AAEH,QAAA,gBAAA,CAAiB,YAAa,EAAA,CAAA;AAC9B,QAAA,MAAA;AAAA,MAEF,KAAK,sBAAA;AACH,QAAiB,gBAAA,CAAA,aAAA,CAAc,IAAI,wBAAA,EAA0B,CAAA,CAAA;AAC7D,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA;AACE,UAAA,MAAM,UAAa,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAC5C,UAAA,gBAAA,CAAiB,UAAU,UAAU,CAAA,CAAA;AAAA,SACvC;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,UAAA;AACH,QAAA;AACE,UAAA,MAAM,YAAe,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAC9C,UAAA,gBAAA,CAAiB,YAAY,YAAY,CAAA,CAAA;AAAA,SAC3C;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,QAAA,CAAA;AAAA,MACL,KAAK,MAAA,CAAA;AAAA,MACL,KAAK,OAAA;AACH,QAAA;AACE,UAAA,MAAM,EAAK,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACpC,UAAA,gBAAA,CAAiB,gBAAgB,EAAE,CAAA,CAAA;AAAA,SACrC;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,oBAAA;AACH,QAAA;AACE,UAAA,MAAM,EAAK,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACpC,UAAA,gBAAA,CAAiB,sBAAsB,EAAE,CAAA,CAAA;AAAA,SAC3C;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,MAAA;AACH,QAAA;AACE,UAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,SAAU,CAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AACvC,UAAA,gBAAA,CAAiB,QAAS,CAAA,KAAA,KAAU,MAAS,GAAA,IAAA,GAAO,KAAK,CAAA,CAAA;AAAA,SAC3D;AACA,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA,gBAAA,CAAiB,SAAS,MAAO,CAAA,SAAA,CAAU,OAAO,CAAG,EAAA,EAAA,GAAK,CAAC,CAAC,CAAA,CAAA;AAC5D,QAAA,MAAA;AAAA,MAEF,KAAK,QAAA;AACH,QAAA,gBAAA,CAAiB,SAAS,UAAW,CAAA,MAAA,CAAO,UAAU,IAAM,EAAA,EAAE,CAAC,CAAC,CAAA,CAAA;AAChE,QAAA,MAAA;AAAA,MAEF,KAAK,YAAA;AACH,QAAA,gBAAA,CAAiB,UAAW,EAAA,CAAA;AAC5B,QAAA,MAAA;AAEF,KACF;AAAA,GACF,QAAS,OAAO,IAAK,EAAA,EAAA;AAErB,EAAA,OAAO,iBAAiB,MAAO,EAAA,CAAA;AACjC;;;;"}
@@ -1,4 +1,4 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import cx from 'clsx';
3
3
  import { useComponentCssInjection } from '@salt-ds/styles';
4
4
  import { useWindow } from '@salt-ds/window';
@@ -32,14 +32,18 @@ const DataSourceStats = ({
32
32
  const from = numberFormatter.format(range.from + 1);
33
33
  const to = numberFormatter.format(Math.min(range.to, size));
34
34
  const value = numberFormatter.format(size);
35
- return /* @__PURE__ */ jsxs("div", { className, children: [
36
- /* @__PURE__ */ jsx("span", { className: `${classBase}-label`, children: "Rows" }),
37
- /* @__PURE__ */ jsx("span", { className: `${classBase}-range`, children: from }),
38
- /* @__PURE__ */ jsx("span", { children: "-" }),
39
- /* @__PURE__ */ jsx("span", { className: `${classBase}-range`, children: to }),
40
- /* @__PURE__ */ jsx("span", { children: "of" }),
41
- /* @__PURE__ */ jsx("span", { className: `${classBase}-size`, children: value })
42
- ] });
35
+ if (size === 0) {
36
+ return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx("span", { className: `${classBase}-label`, children: "No Rows to display" }) });
37
+ } else {
38
+ return /* @__PURE__ */ jsxs("div", { className, children: [
39
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-label`, children: "Rows" }),
40
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-range`, children: from }),
41
+ /* @__PURE__ */ jsx("span", { children: "-" }),
42
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-range`, children: to }),
43
+ /* @__PURE__ */ jsx("span", { children: "of" }),
44
+ /* @__PURE__ */ jsx("span", { className: `${classBase}-size`, children: value })
45
+ ] });
46
+ }
43
47
  };
44
48
 
45
49
  export { DataSourceStats };
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourceStats.js","sources":["../../src/datasource-stats/DatasourceStats.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\n\nimport dataSourceStats from \"./DatasourceStats.css\";\n\ninterface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {\n dataSource: DataSource;\n}\n\nconst classBase = \"vuuDatasourceStats\";\n\nconst numberFormatter = new Intl.NumberFormat();\n\nexport const DataSourceStats = ({\n className: classNameProp,\n dataSource,\n}: DataSourceStatsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-datasource-stats\",\n css: dataSourceStats,\n window: targetWindow,\n });\n\n const [range, setRange] = useState<VuuRange>(dataSource.range);\n const [size, setSize] = useState(dataSource.size);\n useEffect(() => {\n setSize(dataSource.size);\n dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n return () => {\n dataSource.removeListener(\"resize\", setSize);\n dataSource.removeListener(\"range\", setRange);\n };\n }, [dataSource]);\n\n const className = cx(classBase, classNameProp);\n const from = numberFormatter.format(range.from + 1);\n const to = numberFormatter.format(Math.min(range.to, size));\n const value = numberFormatter.format(size);\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>Rows</span>\n <span className={`${classBase}-range`}>{from}</span>\n <span>-</span>\n <span className={`${classBase}-range`}>{to}</span>\n <span>of</span>\n <span className={`${classBase}-size`}>{value}</span>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAaA,MAAM,SAAY,GAAA,oBAAA,CAAA;AAElB,MAAM,eAAA,GAAkB,IAAI,IAAA,CAAK,YAAa,EAAA,CAAA;AAEvC,MAAM,kBAAkB,CAAC;AAAA,EAC9B,SAAW,EAAA,aAAA;AAAA,EACX,UAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAA,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAmB,WAAW,KAAK,CAAA,CAAA;AAC7D,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,QAAA,CAAS,WAAW,IAAI,CAAA,CAAA;AAChD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAA;AACvB,IAAW,UAAA,CAAA,EAAA,CAAG,UAAU,OAAO,CAAA,CAAA;AAC/B,IAAW,UAAA,CAAA,EAAA,CAAG,SAAS,QAAQ,CAAA,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAW,UAAA,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAC3C,MAAW,UAAA,CAAA,cAAA,CAAe,SAAS,QAAQ,CAAA,CAAA;AAAA,KAC7C,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA,CAAA;AAC7C,EAAA,MAAM,IAAO,GAAA,eAAA,CAAgB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,EAAA,GAAK,gBAAgB,MAAO,CAAA,IAAA,CAAK,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,CAAC,CAAA,CAAA;AAC1D,EAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACzC,EACE,uBAAA,IAAA,CAAC,SAAI,SACH,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAU,QAAI,EAAA,MAAA,EAAA,CAAA;AAAA,wBAC1C,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,oBAC7C,GAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,wBACN,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAG,EAAA,EAAA,EAAA,CAAA;AAAA,oBAC3C,GAAA,CAAC,UAAK,QAAE,EAAA,IAAA,EAAA,CAAA;AAAA,wBACP,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,SAAU,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,GAC/C,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DatasourceStats.js","sources":["../../src/datasource-stats/DatasourceStats.tsx"],"sourcesContent":["import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport cx from \"clsx\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { HTMLAttributes, useEffect, useState } from \"react\";\n\nimport dataSourceStats from \"./DatasourceStats.css\";\n\ninterface DataSourceStatsProps extends HTMLAttributes<HTMLSpanElement> {\n dataSource: DataSource;\n}\n\nconst classBase = \"vuuDatasourceStats\";\n\nconst numberFormatter = new Intl.NumberFormat();\n\nexport const DataSourceStats = ({\n className: classNameProp,\n dataSource,\n}: DataSourceStatsProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-datasource-stats\",\n css: dataSourceStats,\n window: targetWindow,\n });\n\n const [range, setRange] = useState<VuuRange>(dataSource.range);\n const [size, setSize] = useState(dataSource.size);\n useEffect(() => {\n setSize(dataSource.size);\n dataSource.on(\"resize\", setSize);\n dataSource.on(\"range\", setRange);\n return () => {\n dataSource.removeListener(\"resize\", setSize);\n dataSource.removeListener(\"range\", setRange);\n };\n }, [dataSource]);\n\n const className = cx(classBase, classNameProp);\n const from = numberFormatter.format(range.from + 1);\n const to = numberFormatter.format(Math.min(range.to, size));\n const value = numberFormatter.format(size);\n if (size === 0) {\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>No Rows to display</span>\n </div>\n );\n } else {\n return (\n <div className={className}>\n <span className={`${classBase}-label`}>Rows</span>\n <span className={`${classBase}-range`}>{from}</span>\n <span>-</span>\n <span className={`${classBase}-range`}>{to}</span>\n <span>of</span>\n <span className={`${classBase}-size`}>{value}</span>\n </div>\n );\n }\n};\n"],"names":[],"mappings":";;;;;;;AAaA,MAAM,SAAY,GAAA,oBAAA,CAAA;AAElB,MAAM,eAAA,GAAkB,IAAI,IAAA,CAAK,YAAa,EAAA,CAAA;AAEvC,MAAM,kBAAkB,CAAC;AAAA,EAC9B,SAAW,EAAA,aAAA;AAAA,EACX,UAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,sBAAA;AAAA,IACR,GAAK,EAAA,eAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAmB,WAAW,KAAK,CAAA,CAAA;AAC7D,EAAA,MAAM,CAAC,IAAM,EAAA,OAAO,CAAI,GAAA,QAAA,CAAS,WAAW,IAAI,CAAA,CAAA;AAChD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAA,CAAQ,WAAW,IAAI,CAAA,CAAA;AACvB,IAAW,UAAA,CAAA,EAAA,CAAG,UAAU,OAAO,CAAA,CAAA;AAC/B,IAAW,UAAA,CAAA,EAAA,CAAG,SAAS,QAAQ,CAAA,CAAA;AAC/B,IAAA,OAAO,MAAM;AACX,MAAW,UAAA,CAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAC3C,MAAW,UAAA,CAAA,cAAA,CAAe,SAAS,QAAQ,CAAA,CAAA;AAAA,KAC7C,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAM,MAAA,SAAA,GAAY,EAAG,CAAA,SAAA,EAAW,aAAa,CAAA,CAAA;AAC7C,EAAA,MAAM,IAAO,GAAA,eAAA,CAAgB,MAAO,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAClD,EAAM,MAAA,EAAA,GAAK,gBAAgB,MAAO,CAAA,IAAA,CAAK,IAAI,KAAM,CAAA,EAAA,EAAI,IAAI,CAAC,CAAA,CAAA;AAC1D,EAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AACzC,EAAA,IAAI,SAAS,CAAG,EAAA;AACd,IACE,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EACH,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,WAAW,CAAG,EAAA,SAAS,CAAU,MAAA,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAkB,CAC3D,EAAA,CAAA,CAAA;AAAA,GAEG,MAAA;AACL,IACE,uBAAA,IAAA,CAAC,SAAI,SACH,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAU,QAAI,EAAA,MAAA,EAAA,CAAA;AAAA,0BAC1C,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA,sBAC7C,GAAA,CAAC,UAAK,QAAC,EAAA,GAAA,EAAA,CAAA;AAAA,0BACN,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,UAAW,QAAG,EAAA,EAAA,EAAA,CAAA;AAAA,sBAC3C,GAAA,CAAC,UAAK,QAAE,EAAA,IAAA,EAAA,CAAA;AAAA,0BACP,MAAK,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,SAAS,SAAU,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,KAC/C,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
- "version": "0.8.93",
2
+ "version": "0.8.94",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "devDependencies": {
6
- "@vuu-ui/vuu-filter-types": "0.8.93",
7
- "@vuu-ui/vuu-protocol-types": "0.8.93"
6
+ "@vuu-ui/vuu-filter-types": "0.8.94",
7
+ "@vuu-ui/vuu-protocol-types": "0.8.94"
8
8
  },
9
9
  "dependencies": {
10
- "@vuu-ui/vuu-codemirror": "0.8.93",
11
- "@vuu-ui/vuu-data-react": "0.8.93",
12
- "@vuu-ui/vuu-data-types": "0.8.93",
13
- "@vuu-ui/vuu-table-types": "0.8.93",
14
- "@vuu-ui/vuu-layout": "0.8.93",
15
- "@vuu-ui/vuu-popups": "0.8.93",
16
- "@vuu-ui/vuu-table": "0.8.93",
17
- "@vuu-ui/vuu-utils": "0.8.93",
18
- "@vuu-ui/vuu-ui-controls": "0.8.93",
10
+ "@vuu-ui/vuu-codemirror": "0.8.94",
11
+ "@vuu-ui/vuu-data-react": "0.8.94",
12
+ "@vuu-ui/vuu-data-types": "0.8.94",
13
+ "@vuu-ui/vuu-table-types": "0.8.94",
14
+ "@vuu-ui/vuu-layout": "0.8.94",
15
+ "@vuu-ui/vuu-popups": "0.8.94",
16
+ "@vuu-ui/vuu-table": "0.8.94",
17
+ "@vuu-ui/vuu-utils": "0.8.94",
18
+ "@vuu-ui/vuu-ui-controls": "0.8.94",
19
19
  "@lezer/lr": "1.3.4",
20
20
  "@salt-ds/core": "1.34.0",
21
21
  "@salt-ds/styles": "0.2.1",