@vuu-ui/vuu-table-extras 0.8.80 → 0.8.82
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.
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +10 -21
- package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -1
- package/cjs/table-settings/useTableSettings.js +13 -9
- package/cjs/table-settings/useTableSettings.js.map +1 -1
- package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +10 -21
- package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +1 -1
- package/esm/table-settings/useTableSettings.js +13 -9
- package/esm/table-settings/useTableSettings.js.map +1 -1
- package/package.json +13 -13
- package/types/table-settings/useTableSettings.d.ts +2 -2
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
throw TypeError("Cannot " + msg);
|
|
6
|
-
};
|
|
7
|
-
var __privateGet = (obj, member, getter) => {
|
|
8
|
-
__accessCheck(obj, member, "read from private field");
|
|
9
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
10
|
-
};
|
|
11
|
-
var __privateAdd = (obj, member, value) => {
|
|
12
|
-
if (member.has(obj))
|
|
13
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
14
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
15
|
-
};
|
|
16
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
17
|
-
__accessCheck(obj, member, "write to private field");
|
|
18
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
19
|
-
return value;
|
|
3
|
+
var __typeError = (msg) => {
|
|
4
|
+
throw TypeError(msg);
|
|
20
5
|
};
|
|
6
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
7
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
8
|
+
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);
|
|
9
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
21
10
|
var _expressions, _op, _expressions2, _expressions3, _op2, _expressions4, _op3, _expressions5, _expression, _callStack;
|
|
22
11
|
class LiteralExpressionImpl {
|
|
23
12
|
constructor(value) {
|
|
@@ -58,7 +47,7 @@ class ArithmeticExpressionImpl {
|
|
|
58
47
|
{ type: "unknown" },
|
|
59
48
|
{ type: "unknown" }
|
|
60
49
|
]);
|
|
61
|
-
__privateAdd(this, _op
|
|
50
|
+
__privateAdd(this, _op);
|
|
62
51
|
this.type = "arithmeticExpression";
|
|
63
52
|
__privateSet(this, _op, op);
|
|
64
53
|
}
|
|
@@ -136,7 +125,7 @@ class BooleanConditionImp {
|
|
|
136
125
|
{ type: "unknown" },
|
|
137
126
|
{ type: "unknown" }
|
|
138
127
|
]);
|
|
139
|
-
__privateAdd(this, _op3
|
|
128
|
+
__privateAdd(this, _op3);
|
|
140
129
|
this.type = "booleanCondition";
|
|
141
130
|
__privateSet(this, _op3, booleanOperator);
|
|
142
131
|
}
|
|
@@ -158,7 +147,7 @@ _expressions4 = new WeakMap();
|
|
|
158
147
|
_op3 = new WeakMap();
|
|
159
148
|
class ConditionalExpressionImpl {
|
|
160
149
|
constructor(booleanOperator) {
|
|
161
|
-
__privateAdd(this, _expressions5
|
|
150
|
+
__privateAdd(this, _expressions5);
|
|
162
151
|
this.type = "conditionalExpression";
|
|
163
152
|
__privateSet(this, _expressions5, [
|
|
164
153
|
booleanOperator ? new BooleanConditionImp(booleanOperator) : new RelationalExpressionImpl(),
|
|
@@ -277,7 +266,7 @@ const addExpression = (expression, subExpression) => {
|
|
|
277
266
|
};
|
|
278
267
|
class ColumnExpression {
|
|
279
268
|
constructor() {
|
|
280
|
-
__privateAdd(this, _expression
|
|
269
|
+
__privateAdd(this, _expression);
|
|
281
270
|
__privateAdd(this, _callStack, []);
|
|
282
271
|
}
|
|
283
272
|
setCondition(booleanOperator) {
|
package/cjs/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map
CHANGED
|
@@ -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":";;;;;;;;;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;;;;"}
|
|
@@ -150,15 +150,19 @@ const useTableSettings = ({
|
|
|
150
150
|
[]
|
|
151
151
|
);
|
|
152
152
|
const handleCommitColumnWidth = react.useCallback((_, value) => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
153
|
+
if (value === void 0) {
|
|
154
|
+
console.log(`column width is undefined`);
|
|
155
|
+
} else {
|
|
156
|
+
const columnDefaultWidth = parseInt(value);
|
|
157
|
+
if (!isNaN(columnDefaultWidth)) {
|
|
158
|
+
setColumnState((state) => ({
|
|
159
|
+
...state,
|
|
160
|
+
tableConfig: {
|
|
161
|
+
...state.tableConfig,
|
|
162
|
+
columnDefaultWidth
|
|
163
|
+
}
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
162
166
|
}
|
|
163
167
|
console.log({ value });
|
|
164
168
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSettings.js","sources":["../../src/table-settings/useTableSettings.ts"],"sourcesContent":["import { SchemaColumn } from \"@vuu-ui/vuu-data-types\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n ColumnDescriptor,\n TableConfig,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n addColumnToSubscribedColumns,\n queryClosest,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-utils\";\nimport { Commithandler } from \"@vuu-ui/vuu-ui-controls/src\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\n\nconst sortOrderFromAvailableColumns = (\n availableColumns: SchemaColumn[],\n columns: ColumnDescriptor[]\n) => {\n const sortedColumns: ColumnDescriptor[] = [];\n for (const { name } of availableColumns) {\n const column = columns.find((col) => col.name === name);\n if (column) {\n sortedColumns.push(column);\n }\n }\n return sortedColumns;\n};\n\nexport type ColumnItem = Pick<\n ColumnDescriptor,\n \"hidden\" | \"label\" | \"name\" | \"serverDataType\"\n> & {\n isCalculated: boolean;\n subscribed: boolean;\n};\n\nconst buildColumnItems = (\n availableColumns: SchemaColumn[],\n configuredColumns: ColumnDescriptor[]\n): ColumnItem[] => {\n return availableColumns.map<ColumnItem>(({ name, serverDataType }) => {\n const configuredColumn = configuredColumns.find((col) => col.name === name);\n return {\n hidden: configuredColumn?.hidden,\n isCalculated: isCalculatedColumn(name),\n label: configuredColumn?.label ?? name,\n name,\n serverDataType,\n subscribed: configuredColumn !== undefined,\n };\n });\n};\n\ntype ColumnState = {\n availableColumns: SchemaColumn[];\n tableConfig: TableConfig;\n};\n\nexport const useTableSettings = ({\n availableColumns: availableColumnsProp,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n}: Omit<TableSettingsProps, \"onAddCalculatedColumn\">) => {\n const [{ availableColumns, tableConfig }, setColumnState] =\n useState<ColumnState>({\n availableColumns: availableColumnsProp,\n tableConfig: tableConfigProp,\n });\n\n const columnItems = useMemo(\n () => buildColumnItems(availableColumns, tableConfig.columns),\n [availableColumns, tableConfig.columns]\n );\n\n const handleMoveListItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumnState((state) => {\n const newAvailableColumns = moveItem(\n state.availableColumns,\n fromIndex,\n toIndex\n );\n const newColumns = sortOrderFromAvailableColumns(\n newAvailableColumns,\n tableConfig.columns\n );\n\n return {\n availableColumns: newAvailableColumns,\n tableConfig: {\n ...state.tableConfig,\n columns: newColumns,\n },\n };\n });\n },\n [tableConfig.columns]\n );\n\n const handleColumnChange = useCallback<ColumnChangeHandler>(\n (name, property, value) => {\n // to be applied immediately\n const columnItem = columnItems.find((col) => col.name === name);\n if (property === \"subscribed\") {\n if (columnItem?.subscribed) {\n const subscribedColumns = tableConfig.columns\n .filter((col) => col.name !== name)\n .map((col) => col.name);\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...tableConfig,\n columns: tableConfig.columns.filter(\n subscribedOnly(subscribedColumns)\n ),\n },\n }));\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n } else {\n const newConfig = {\n ...tableConfig,\n columns: addColumnToSubscribedColumns(\n tableConfig.columns,\n availableColumns,\n name\n ),\n };\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n\n const subscribedColumns = newConfig.columns.map((col) => col.name);\n\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n }\n } else if (columnItem?.subscribed) {\n const column = tableConfig.columns.find((col) => col.name === name);\n if (column) {\n const newConfig = updateTableConfig(tableConfig, {\n type: \"column-prop\",\n property,\n column,\n value,\n });\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n }\n }\n },\n [availableColumns, columnItems, onDataSourceConfigChange, tableConfig]\n );\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\n const columnFormatHeader =\n value === 0 ? undefined : value === 1 ? \"capitalize\" : \"uppercase\";\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnFormatHeader,\n },\n }));\n }\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const { ariaPressed, value } = button;\n console.log({ ariaPressed, value, button });\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaPressed !== \"true\",\n },\n }));\n }\n },\n []\n );\n\n const handleCommitColumnWidth = useCallback<Commithandler>((_, value) => {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnDefaultWidth,\n },\n }));\n }\n console.log({ value });\n }, []);\n\n useLayoutEffectSkipFirst(() => {\n onConfigChange?.(tableConfig);\n }, [onConfigChange, tableConfig]);\n\n const columnLabelsValue =\n tableConfig.columnFormatHeader === undefined\n ? 0\n : tableConfig.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onColumnChange: handleColumnChange,\n onCommitColumnWidth: handleCommitColumnWidth,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n"],"names":["isCalculatedColumn","useState","useMemo","useCallback","moveItem","subscribedOnly","addColumnToSubscribedColumns","updateTableConfig","queryClosest","useLayoutEffectSkipFirst"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableSettings.js","sources":["../../src/table-settings/useTableSettings.ts"],"sourcesContent":["import { SchemaColumn } from \"@vuu-ui/vuu-data-types\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n ColumnDescriptor,\n TableConfig,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n addColumnToSubscribedColumns,\n queryClosest,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n useLayoutEffectSkipFirst,\n CommitHandler,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\n\nconst sortOrderFromAvailableColumns = (\n availableColumns: SchemaColumn[],\n columns: ColumnDescriptor[]\n) => {\n const sortedColumns: ColumnDescriptor[] = [];\n for (const { name } of availableColumns) {\n const column = columns.find((col) => col.name === name);\n if (column) {\n sortedColumns.push(column);\n }\n }\n return sortedColumns;\n};\n\nexport type ColumnItem = Pick<\n ColumnDescriptor,\n \"hidden\" | \"label\" | \"name\" | \"serverDataType\"\n> & {\n isCalculated: boolean;\n subscribed: boolean;\n};\n\nconst buildColumnItems = (\n availableColumns: SchemaColumn[],\n configuredColumns: ColumnDescriptor[]\n): ColumnItem[] => {\n return availableColumns.map<ColumnItem>(({ name, serverDataType }) => {\n const configuredColumn = configuredColumns.find((col) => col.name === name);\n return {\n hidden: configuredColumn?.hidden,\n isCalculated: isCalculatedColumn(name),\n label: configuredColumn?.label ?? name,\n name,\n serverDataType,\n subscribed: configuredColumn !== undefined,\n };\n });\n};\n\ntype ColumnState = {\n availableColumns: SchemaColumn[];\n tableConfig: TableConfig;\n};\n\nexport const useTableSettings = ({\n availableColumns: availableColumnsProp,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n}: Omit<TableSettingsProps, \"onAddCalculatedColumn\">) => {\n const [{ availableColumns, tableConfig }, setColumnState] =\n useState<ColumnState>({\n availableColumns: availableColumnsProp,\n tableConfig: tableConfigProp,\n });\n\n const columnItems = useMemo(\n () => buildColumnItems(availableColumns, tableConfig.columns),\n [availableColumns, tableConfig.columns]\n );\n\n const handleMoveListItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumnState((state) => {\n const newAvailableColumns = moveItem(\n state.availableColumns,\n fromIndex,\n toIndex\n );\n const newColumns = sortOrderFromAvailableColumns(\n newAvailableColumns,\n tableConfig.columns\n );\n\n return {\n availableColumns: newAvailableColumns,\n tableConfig: {\n ...state.tableConfig,\n columns: newColumns,\n },\n };\n });\n },\n [tableConfig.columns]\n );\n\n const handleColumnChange = useCallback<ColumnChangeHandler>(\n (name, property, value) => {\n // to be applied immediately\n const columnItem = columnItems.find((col) => col.name === name);\n if (property === \"subscribed\") {\n if (columnItem?.subscribed) {\n const subscribedColumns = tableConfig.columns\n .filter((col) => col.name !== name)\n .map((col) => col.name);\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...tableConfig,\n columns: tableConfig.columns.filter(\n subscribedOnly(subscribedColumns)\n ),\n },\n }));\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n } else {\n const newConfig = {\n ...tableConfig,\n columns: addColumnToSubscribedColumns(\n tableConfig.columns,\n availableColumns,\n name\n ),\n };\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n\n const subscribedColumns = newConfig.columns.map((col) => col.name);\n\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n }\n } else if (columnItem?.subscribed) {\n const column = tableConfig.columns.find((col) => col.name === name);\n if (column) {\n const newConfig = updateTableConfig(tableConfig, {\n type: \"column-prop\",\n property,\n column,\n value,\n });\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n }\n }\n },\n [availableColumns, columnItems, onDataSourceConfigChange, tableConfig]\n );\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\n const columnFormatHeader =\n value === 0 ? undefined : value === 1 ? \"capitalize\" : \"uppercase\";\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnFormatHeader,\n },\n }));\n }\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const { ariaPressed, value } = button;\n console.log({ ariaPressed, value, button });\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaPressed !== \"true\",\n },\n }));\n }\n },\n []\n );\n\n const handleCommitColumnWidth = useCallback<\n CommitHandler<HTMLInputElement, string | undefined>\n >((_, value) => {\n if (value === undefined) {\n console.log(`column width is undefined`);\n } else {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnDefaultWidth,\n },\n }));\n }\n }\n console.log({ value });\n }, []);\n\n useLayoutEffectSkipFirst(() => {\n onConfigChange?.(tableConfig);\n }, [onConfigChange, tableConfig]);\n\n const columnLabelsValue =\n tableConfig.columnFormatHeader === undefined\n ? 0\n : tableConfig.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onColumnChange: handleColumnChange,\n onCommitColumnWidth: handleCommitColumnWidth,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n"],"names":["isCalculatedColumn","useState","useMemo","useCallback","moveItem","subscribedOnly","addColumnToSubscribedColumns","updateTableConfig","queryClosest","useLayoutEffectSkipFirst"],"mappings":"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"}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
throw TypeError("Cannot " + msg);
|
|
4
|
-
};
|
|
5
|
-
var __privateGet = (obj, member, getter) => {
|
|
6
|
-
__accessCheck(obj, member, "read from private field");
|
|
7
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
-
};
|
|
9
|
-
var __privateAdd = (obj, member, value) => {
|
|
10
|
-
if (member.has(obj))
|
|
11
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
-
};
|
|
14
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
-
__accessCheck(obj, member, "write to private field");
|
|
16
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
-
return value;
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
18
3
|
};
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
+
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);
|
|
7
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
19
8
|
var _expressions, _op, _expressions2, _expressions3, _op2, _expressions4, _op3, _expressions5, _expression, _callStack;
|
|
20
9
|
class LiteralExpressionImpl {
|
|
21
10
|
constructor(value) {
|
|
@@ -56,7 +45,7 @@ class ArithmeticExpressionImpl {
|
|
|
56
45
|
{ type: "unknown" },
|
|
57
46
|
{ type: "unknown" }
|
|
58
47
|
]);
|
|
59
|
-
__privateAdd(this, _op
|
|
48
|
+
__privateAdd(this, _op);
|
|
60
49
|
this.type = "arithmeticExpression";
|
|
61
50
|
__privateSet(this, _op, op);
|
|
62
51
|
}
|
|
@@ -134,7 +123,7 @@ class BooleanConditionImp {
|
|
|
134
123
|
{ type: "unknown" },
|
|
135
124
|
{ type: "unknown" }
|
|
136
125
|
]);
|
|
137
|
-
__privateAdd(this, _op3
|
|
126
|
+
__privateAdd(this, _op3);
|
|
138
127
|
this.type = "booleanCondition";
|
|
139
128
|
__privateSet(this, _op3, booleanOperator);
|
|
140
129
|
}
|
|
@@ -156,7 +145,7 @@ _expressions4 = new WeakMap();
|
|
|
156
145
|
_op3 = new WeakMap();
|
|
157
146
|
class ConditionalExpressionImpl {
|
|
158
147
|
constructor(booleanOperator) {
|
|
159
|
-
__privateAdd(this, _expressions5
|
|
148
|
+
__privateAdd(this, _expressions5);
|
|
160
149
|
this.type = "conditionalExpression";
|
|
161
150
|
__privateSet(this, _expressions5, [
|
|
162
151
|
booleanOperator ? new BooleanConditionImp(booleanOperator) : new RelationalExpressionImpl(),
|
|
@@ -275,7 +264,7 @@ const addExpression = (expression, subExpression) => {
|
|
|
275
264
|
};
|
|
276
265
|
class ColumnExpression {
|
|
277
266
|
constructor() {
|
|
278
|
-
__privateAdd(this, _expression
|
|
267
|
+
__privateAdd(this, _expression);
|
|
279
268
|
__privateAdd(this, _callStack, []);
|
|
280
269
|
}
|
|
281
270
|
setCondition(booleanOperator) {
|
package/esm/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -148,15 +148,19 @@ const useTableSettings = ({
|
|
|
148
148
|
[]
|
|
149
149
|
);
|
|
150
150
|
const handleCommitColumnWidth = useCallback((_, value) => {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
151
|
+
if (value === void 0) {
|
|
152
|
+
console.log(`column width is undefined`);
|
|
153
|
+
} else {
|
|
154
|
+
const columnDefaultWidth = parseInt(value);
|
|
155
|
+
if (!isNaN(columnDefaultWidth)) {
|
|
156
|
+
setColumnState((state) => ({
|
|
157
|
+
...state,
|
|
158
|
+
tableConfig: {
|
|
159
|
+
...state.tableConfig,
|
|
160
|
+
columnDefaultWidth
|
|
161
|
+
}
|
|
162
|
+
}));
|
|
163
|
+
}
|
|
160
164
|
}
|
|
161
165
|
console.log({ value });
|
|
162
166
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSettings.js","sources":["../../src/table-settings/useTableSettings.ts"],"sourcesContent":["import { SchemaColumn } from \"@vuu-ui/vuu-data-types\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n ColumnDescriptor,\n TableConfig,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n addColumnToSubscribedColumns,\n queryClosest,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-utils\";\nimport { Commithandler } from \"@vuu-ui/vuu-ui-controls/src\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\n\nconst sortOrderFromAvailableColumns = (\n availableColumns: SchemaColumn[],\n columns: ColumnDescriptor[]\n) => {\n const sortedColumns: ColumnDescriptor[] = [];\n for (const { name } of availableColumns) {\n const column = columns.find((col) => col.name === name);\n if (column) {\n sortedColumns.push(column);\n }\n }\n return sortedColumns;\n};\n\nexport type ColumnItem = Pick<\n ColumnDescriptor,\n \"hidden\" | \"label\" | \"name\" | \"serverDataType\"\n> & {\n isCalculated: boolean;\n subscribed: boolean;\n};\n\nconst buildColumnItems = (\n availableColumns: SchemaColumn[],\n configuredColumns: ColumnDescriptor[]\n): ColumnItem[] => {\n return availableColumns.map<ColumnItem>(({ name, serverDataType }) => {\n const configuredColumn = configuredColumns.find((col) => col.name === name);\n return {\n hidden: configuredColumn?.hidden,\n isCalculated: isCalculatedColumn(name),\n label: configuredColumn?.label ?? name,\n name,\n serverDataType,\n subscribed: configuredColumn !== undefined,\n };\n });\n};\n\ntype ColumnState = {\n availableColumns: SchemaColumn[];\n tableConfig: TableConfig;\n};\n\nexport const useTableSettings = ({\n availableColumns: availableColumnsProp,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n}: Omit<TableSettingsProps, \"onAddCalculatedColumn\">) => {\n const [{ availableColumns, tableConfig }, setColumnState] =\n useState<ColumnState>({\n availableColumns: availableColumnsProp,\n tableConfig: tableConfigProp,\n });\n\n const columnItems = useMemo(\n () => buildColumnItems(availableColumns, tableConfig.columns),\n [availableColumns, tableConfig.columns]\n );\n\n const handleMoveListItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumnState((state) => {\n const newAvailableColumns = moveItem(\n state.availableColumns,\n fromIndex,\n toIndex\n );\n const newColumns = sortOrderFromAvailableColumns(\n newAvailableColumns,\n tableConfig.columns\n );\n\n return {\n availableColumns: newAvailableColumns,\n tableConfig: {\n ...state.tableConfig,\n columns: newColumns,\n },\n };\n });\n },\n [tableConfig.columns]\n );\n\n const handleColumnChange = useCallback<ColumnChangeHandler>(\n (name, property, value) => {\n // to be applied immediately\n const columnItem = columnItems.find((col) => col.name === name);\n if (property === \"subscribed\") {\n if (columnItem?.subscribed) {\n const subscribedColumns = tableConfig.columns\n .filter((col) => col.name !== name)\n .map((col) => col.name);\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...tableConfig,\n columns: tableConfig.columns.filter(\n subscribedOnly(subscribedColumns)\n ),\n },\n }));\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n } else {\n const newConfig = {\n ...tableConfig,\n columns: addColumnToSubscribedColumns(\n tableConfig.columns,\n availableColumns,\n name\n ),\n };\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n\n const subscribedColumns = newConfig.columns.map((col) => col.name);\n\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n }\n } else if (columnItem?.subscribed) {\n const column = tableConfig.columns.find((col) => col.name === name);\n if (column) {\n const newConfig = updateTableConfig(tableConfig, {\n type: \"column-prop\",\n property,\n column,\n value,\n });\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n }\n }\n },\n [availableColumns, columnItems, onDataSourceConfigChange, tableConfig]\n );\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\n const columnFormatHeader =\n value === 0 ? undefined : value === 1 ? \"capitalize\" : \"uppercase\";\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnFormatHeader,\n },\n }));\n }\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const { ariaPressed, value } = button;\n console.log({ ariaPressed, value, button });\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaPressed !== \"true\",\n },\n }));\n }\n },\n []\n );\n\n const handleCommitColumnWidth = useCallback<Commithandler>((_, value) => {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnDefaultWidth,\n },\n }));\n }\n console.log({ value });\n }, []);\n\n useLayoutEffectSkipFirst(() => {\n onConfigChange?.(tableConfig);\n }, [onConfigChange, tableConfig]);\n\n const columnLabelsValue =\n tableConfig.columnFormatHeader === undefined\n ? 0\n : tableConfig.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onColumnChange: handleColumnChange,\n onCommitColumnWidth: handleCommitColumnWidth,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableSettings.js","sources":["../../src/table-settings/useTableSettings.ts"],"sourcesContent":["import { SchemaColumn } from \"@vuu-ui/vuu-data-types\";\nimport { updateTableConfig } from \"@vuu-ui/vuu-table\";\nimport {\n ColumnDescriptor,\n TableConfig,\n TableSettingsProps,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n addColumnToSubscribedColumns,\n queryClosest,\n isCalculatedColumn,\n moveItem,\n subscribedOnly,\n useLayoutEffectSkipFirst,\n CommitHandler,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useState,\n} from \"react\";\nimport { ColumnChangeHandler } from \"../column-list\";\n\nconst sortOrderFromAvailableColumns = (\n availableColumns: SchemaColumn[],\n columns: ColumnDescriptor[]\n) => {\n const sortedColumns: ColumnDescriptor[] = [];\n for (const { name } of availableColumns) {\n const column = columns.find((col) => col.name === name);\n if (column) {\n sortedColumns.push(column);\n }\n }\n return sortedColumns;\n};\n\nexport type ColumnItem = Pick<\n ColumnDescriptor,\n \"hidden\" | \"label\" | \"name\" | \"serverDataType\"\n> & {\n isCalculated: boolean;\n subscribed: boolean;\n};\n\nconst buildColumnItems = (\n availableColumns: SchemaColumn[],\n configuredColumns: ColumnDescriptor[]\n): ColumnItem[] => {\n return availableColumns.map<ColumnItem>(({ name, serverDataType }) => {\n const configuredColumn = configuredColumns.find((col) => col.name === name);\n return {\n hidden: configuredColumn?.hidden,\n isCalculated: isCalculatedColumn(name),\n label: configuredColumn?.label ?? name,\n name,\n serverDataType,\n subscribed: configuredColumn !== undefined,\n };\n });\n};\n\ntype ColumnState = {\n availableColumns: SchemaColumn[];\n tableConfig: TableConfig;\n};\n\nexport const useTableSettings = ({\n availableColumns: availableColumnsProp,\n onConfigChange,\n onDataSourceConfigChange,\n tableConfig: tableConfigProp,\n}: Omit<TableSettingsProps, \"onAddCalculatedColumn\">) => {\n const [{ availableColumns, tableConfig }, setColumnState] =\n useState<ColumnState>({\n availableColumns: availableColumnsProp,\n tableConfig: tableConfigProp,\n });\n\n const columnItems = useMemo(\n () => buildColumnItems(availableColumns, tableConfig.columns),\n [availableColumns, tableConfig.columns]\n );\n\n const handleMoveListItem = useCallback(\n (fromIndex: number, toIndex: number) => {\n setColumnState((state) => {\n const newAvailableColumns = moveItem(\n state.availableColumns,\n fromIndex,\n toIndex\n );\n const newColumns = sortOrderFromAvailableColumns(\n newAvailableColumns,\n tableConfig.columns\n );\n\n return {\n availableColumns: newAvailableColumns,\n tableConfig: {\n ...state.tableConfig,\n columns: newColumns,\n },\n };\n });\n },\n [tableConfig.columns]\n );\n\n const handleColumnChange = useCallback<ColumnChangeHandler>(\n (name, property, value) => {\n // to be applied immediately\n const columnItem = columnItems.find((col) => col.name === name);\n if (property === \"subscribed\") {\n if (columnItem?.subscribed) {\n const subscribedColumns = tableConfig.columns\n .filter((col) => col.name !== name)\n .map((col) => col.name);\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...tableConfig,\n columns: tableConfig.columns.filter(\n subscribedOnly(subscribedColumns)\n ),\n },\n }));\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n } else {\n const newConfig = {\n ...tableConfig,\n columns: addColumnToSubscribedColumns(\n tableConfig.columns,\n availableColumns,\n name\n ),\n };\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n\n const subscribedColumns = newConfig.columns.map((col) => col.name);\n\n onDataSourceConfigChange({\n columns: subscribedColumns,\n });\n }\n } else if (columnItem?.subscribed) {\n const column = tableConfig.columns.find((col) => col.name === name);\n if (column) {\n const newConfig = updateTableConfig(tableConfig, {\n type: \"column-prop\",\n property,\n column,\n value,\n });\n setColumnState((state) => ({\n ...state,\n tableConfig: newConfig,\n }));\n }\n }\n },\n [availableColumns, columnItems, onDataSourceConfigChange, tableConfig]\n );\n\n const handleChangeColumnLabels = useCallback((evt: SyntheticEvent) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const value = parseInt(button.value);\n const columnFormatHeader =\n value === 0 ? undefined : value === 1 ? \"capitalize\" : \"uppercase\";\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnFormatHeader,\n },\n }));\n }\n }, []);\n\n const handleChangeTableAttribute = useCallback(\n (evt: MouseEvent<HTMLButtonElement>) => {\n const button = queryClosest<HTMLButtonElement>(evt.target, \"button\");\n if (button) {\n const { ariaPressed, value } = button;\n console.log({ ariaPressed, value, button });\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n [value]: ariaPressed !== \"true\",\n },\n }));\n }\n },\n []\n );\n\n const handleCommitColumnWidth = useCallback<\n CommitHandler<HTMLInputElement, string | undefined>\n >((_, value) => {\n if (value === undefined) {\n console.log(`column width is undefined`);\n } else {\n const columnDefaultWidth = parseInt(value);\n if (!isNaN(columnDefaultWidth)) {\n setColumnState((state) => ({\n ...state,\n tableConfig: {\n ...state.tableConfig,\n columnDefaultWidth,\n },\n }));\n }\n }\n console.log({ value });\n }, []);\n\n useLayoutEffectSkipFirst(() => {\n onConfigChange?.(tableConfig);\n }, [onConfigChange, tableConfig]);\n\n const columnLabelsValue =\n tableConfig.columnFormatHeader === undefined\n ? 0\n : tableConfig.columnFormatHeader === \"capitalize\"\n ? 1\n : 2;\n\n return {\n columnItems,\n columnLabelsValue,\n onChangeColumnLabels: handleChangeColumnLabels,\n onChangeTableAttribute: handleChangeTableAttribute,\n onColumnChange: handleColumnChange,\n onCommitColumnWidth: handleCommitColumnWidth,\n onMoveListItem: handleMoveListItem,\n tableConfig,\n };\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.82",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@vuu-ui/vuu-filter-types": "0.8.
|
|
7
|
-
"@vuu-ui/vuu-protocol-types": "0.8.
|
|
6
|
+
"@vuu-ui/vuu-filter-types": "0.8.82",
|
|
7
|
+
"@vuu-ui/vuu-protocol-types": "0.8.82"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@vuu-ui/vuu-codemirror": "0.8.
|
|
11
|
-
"@vuu-ui/vuu-data-react": "0.8.
|
|
12
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
13
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
14
|
-
"@vuu-ui/vuu-layout": "0.8.
|
|
15
|
-
"@vuu-ui/vuu-popups": "0.8.
|
|
16
|
-
"@vuu-ui/vuu-table": "0.8.
|
|
17
|
-
"@vuu-ui/vuu-utils": "0.8.
|
|
18
|
-
"@vuu-ui/vuu-ui-controls": "0.8.
|
|
10
|
+
"@vuu-ui/vuu-codemirror": "0.8.82",
|
|
11
|
+
"@vuu-ui/vuu-data-react": "0.8.82",
|
|
12
|
+
"@vuu-ui/vuu-data-types": "0.8.82",
|
|
13
|
+
"@vuu-ui/vuu-table-types": "0.8.82",
|
|
14
|
+
"@vuu-ui/vuu-layout": "0.8.82",
|
|
15
|
+
"@vuu-ui/vuu-popups": "0.8.82",
|
|
16
|
+
"@vuu-ui/vuu-table": "0.8.82",
|
|
17
|
+
"@vuu-ui/vuu-utils": "0.8.82",
|
|
18
|
+
"@vuu-ui/vuu-ui-controls": "0.8.82",
|
|
19
19
|
"@lezer/lr": "1.3.4",
|
|
20
|
-
"@salt-ds/core": "1.
|
|
20
|
+
"@salt-ds/core": "1.34.0",
|
|
21
21
|
"@salt-ds/styles": "0.2.1",
|
|
22
22
|
"@salt-ds/window": "0.1.1"
|
|
23
23
|
},
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ColumnDescriptor, TableConfig, TableSettingsProps } from "@vuu-ui/vuu-table-types";
|
|
2
|
-
import {
|
|
2
|
+
import { CommitHandler } from "@vuu-ui/vuu-utils";
|
|
3
3
|
import { MouseEvent, SyntheticEvent } from "react";
|
|
4
4
|
import { ColumnChangeHandler } from "../column-list";
|
|
5
5
|
export type ColumnItem = Pick<ColumnDescriptor, "hidden" | "label" | "name" | "serverDataType"> & {
|
|
@@ -12,7 +12,7 @@ export declare const useTableSettings: ({ availableColumns: availableColumnsProp
|
|
|
12
12
|
onChangeColumnLabels: (evt: SyntheticEvent) => void;
|
|
13
13
|
onChangeTableAttribute: (evt: MouseEvent<HTMLButtonElement>) => void;
|
|
14
14
|
onColumnChange: ColumnChangeHandler;
|
|
15
|
-
onCommitColumnWidth:
|
|
15
|
+
onCommitColumnWidth: CommitHandler<HTMLInputElement, string | undefined>;
|
|
16
16
|
onMoveListItem: (fromIndex: number, toIndex: number) => void;
|
|
17
17
|
tableConfig: TableConfig;
|
|
18
18
|
};
|