@rkmodules/rules 0.0.13 → 0.0.15

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/dist/index.css CHANGED
@@ -50,28 +50,16 @@
50
50
  }
51
51
 
52
52
 
53
+ .Input_Yhvzf {
54
+ color: var(--type-color);
55
+ --xy-handle-background-color: var(--type-color);
56
+ }
53
57
  .Output_e4yF- {
54
58
  text-align: right;
59
+ color: var(--type-color);
60
+ --xy-handle-background-color: var(--type-color);
55
61
  }
56
62
 
57
- .type-string_XVlwo {
58
- color: var(--type-string, var(--color-orange));
59
- --xy-handle-background-color: var(--type-string, var(--color-orange));
60
- }
61
- .type-number_0cg49 {
62
- color: var(--type-string, var(--color-lightgreen));
63
- --xy-handle-background-color: var(--type-number, var(--color-lightgreen));
64
- }
65
- .type-boolean_t4ba5 {
66
- color: var(--type-string, var(--color-lightblue));
67
- --xy-handle-background-color: var(--type-boolean, var(--color-lightblue));
68
- }
69
- .type-any_FPwjQ {
70
- color: var(--type-string, var(--color-lightpink));
71
- --xy-handle-background-color: var(--type-any, var(--color-lightpink));
72
- }
73
-
74
-
75
63
  .Table_aZyRT {
76
64
  margin: 2px;
77
65
  max-height: 400px;
package/dist/index.js CHANGED
@@ -425,7 +425,7 @@ function isReference(value) {
425
425
  function parseReference(ref) {
426
426
  return ref.slice(1, -1);
427
427
  }
428
- function uid() {
428
+ function uid$1() {
429
429
  return Math.random().toString(36).substring(2, 15);
430
430
  }
431
431
  function getValue$1(obj, path) {
@@ -582,12 +582,12 @@ var value = {
582
582
  }); },
583
583
  };
584
584
 
585
- var _a$3;
586
- var primitives$4 = (_a$3 = {},
587
- _a$3[getValue.name] = getValue,
588
- _a$3[log.name] = log,
589
- _a$3[value.name] = value,
590
- _a$3);
585
+ var _a$4;
586
+ var primitives$5 = (_a$4 = {},
587
+ _a$4[getValue.name] = getValue,
588
+ _a$4[log.name] = log,
589
+ _a$4[value.name] = value,
590
+ _a$4);
591
591
 
592
592
  var math$1 = mathjs.create(mathjs.all, {});
593
593
  function evaluate(expression, scope) {
@@ -800,12 +800,12 @@ var lessThan = {
800
800
  }); },
801
801
  };
802
802
 
803
- var _a$2;
804
- var primitives$3 = (_a$2 = {},
805
- _a$2[calc.name] = calc,
806
- _a$2[lessThan.name] = lessThan,
807
- _a$2[greaterThan.name] = greaterThan,
808
- _a$2);
803
+ var _a$3;
804
+ var primitives$4 = (_a$3 = {},
805
+ _a$3[calc.name] = calc,
806
+ _a$3[lessThan.name] = lessThan,
807
+ _a$3[greaterThan.name] = greaterThan,
808
+ _a$3);
809
809
 
810
810
  var filterList = {
811
811
  name: "filterList",
@@ -922,14 +922,14 @@ var trimTree = {
922
922
  }); },
923
923
  };
924
924
 
925
- var _a$1;
926
- var primitives$2 = (_a$1 = {},
927
- _a$1[graftTree.name] = graftTree,
928
- _a$1[trimTree.name] = trimTree,
929
- _a$1[listItem.name] = listItem,
930
- _a$1[listLength.name] = listLength,
931
- _a$1[filterList.name] = filterList,
932
- _a$1);
925
+ var _a$2;
926
+ var primitives$3 = (_a$2 = {},
927
+ _a$2[graftTree.name] = graftTree,
928
+ _a$2[trimTree.name] = trimTree,
929
+ _a$2[listItem.name] = listItem,
930
+ _a$2[listLength.name] = listLength,
931
+ _a$2[filterList.name] = filterList,
932
+ _a$2);
933
933
 
934
934
  var series = {
935
935
  name: "series",
@@ -963,12 +963,46 @@ var series = {
963
963
  }); },
964
964
  };
965
965
 
966
+ var _a$1;
967
+ var primitives$2 = (_a$1 = {},
968
+ _a$1[series.name] = series,
969
+ _a$1);
970
+
971
+ var mergeTree = {
972
+ name: "mergeTree",
973
+ label: "Merge Tree",
974
+ description: "Merge multiple trees into a single tree.",
975
+ nodeType: "Merge",
976
+ inputs: {},
977
+ outputs: {
978
+ result: "number",
979
+ },
980
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
981
+ var result;
982
+ return __generator(this, function (_a) {
983
+ result = {};
984
+ Object.values(inputs).forEach(function (input) {
985
+ Object.entries(input).forEach(function (_a) {
986
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
987
+ if (!result[key]) {
988
+ result[key] = value;
989
+ }
990
+ else {
991
+ result[key] = __spreadArray(__spreadArray([], __read(result[key]), false), __read(value), false);
992
+ }
993
+ });
994
+ });
995
+ return [2 /*return*/, { result: result }];
996
+ });
997
+ }); },
998
+ };
999
+
966
1000
  var _a;
967
1001
  var primitives$1 = (_a = {},
968
- _a[series.name] = series,
1002
+ _a[mergeTree.name] = mergeTree,
969
1003
  _a);
970
1004
 
971
- var primitives = __assign(__assign(__assign(__assign({}, primitives$4), primitives$3), primitives$2), primitives$1);
1005
+ var primitives = __assign(__assign(__assign(__assign(__assign({}, primitives$5), primitives$4), primitives$3), primitives$2), primitives$1);
972
1006
 
973
1007
  function isPrimitive(node) {
974
1008
  return node.impl !== undefined;
@@ -1044,9 +1078,9 @@ function applyEdgeDelete(fn, fromNode, toNode, fromField, toField) {
1044
1078
  }
1045
1079
  function applyNodeAdd(fn, nodeName) {
1046
1080
  var newFn = __assign(__assign({}, fn), { body: __assign({}, fn.body) });
1047
- var id = uid();
1081
+ var id = uid$1();
1048
1082
  while (newFn.body[id]) {
1049
- id = uid();
1083
+ id = uid$1();
1050
1084
  }
1051
1085
  newFn.body[id] = {
1052
1086
  name: nodeName,
@@ -1133,7 +1167,7 @@ var Engine = /** @class */ (function () {
1133
1167
  switch (_e.label) {
1134
1168
  case 0:
1135
1169
  _a = node.body, body = _a === void 0 ? {} : _a;
1136
- executionId = uid();
1170
+ executionId = uid$1();
1137
1171
  context = {
1138
1172
  scope: { inputs: inputs },
1139
1173
  timings: {},
@@ -1399,7 +1433,7 @@ var useChange = function () {
1399
1433
  return React.useContext(ChangeContext);
1400
1434
  };
1401
1435
 
1402
- var styles = {"DefaultNode":"DefaultNode_R2P6c","selected":"selected_VmB-F","active":"active_zjUzx","Log":"Log_dsq5e","Label":"Label_wBwWA","Output":"Output_e4yF-","type-string":"type-string_XVlwo","type-number":"type-number_0cg49","type-boolean":"type-boolean_t4ba5","type-any":"type-any_FPwjQ","Table":"Table_aZyRT"};
1436
+ var styles = {"DefaultNode":"DefaultNode_R2P6c","selected":"selected_VmB-F","active":"active_zjUzx","Log":"Log_dsq5e","Label":"Label_wBwWA","Input":"Input_Yhvzf","Output":"Output_e4yF-","Table":"Table_aZyRT"};
1403
1437
 
1404
1438
  function NodeContainer(_a) {
1405
1439
  var _b;
@@ -1470,9 +1504,11 @@ var Input = function (_a) {
1470
1504
  var updatedFn = __assign(__assign({}, data.caller), { body: body });
1471
1505
  onChange(updatedFn);
1472
1506
  }; };
1473
- return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]) },
1507
+ return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]), style: {
1508
+ "--type-color": "var(--color-".concat(normalized.type, ")"),
1509
+ } },
1474
1510
  React.createElement("td", null,
1475
- name,
1511
+ varDef.label || name,
1476
1512
  React.createElement(react.Handle, { type: "target", position: react.Position.Left, id: "".concat(id, "-").concat(name) })),
1477
1513
  React.createElement("td", null, !isRef && (React.createElement(Control, { type: normalized.type, value: value, onChange: handleInputChange(name) })))));
1478
1514
  };
@@ -1493,17 +1529,21 @@ var Param = function (_a) {
1493
1529
  var updatedFn = __assign(__assign({}, data.caller), { body: body });
1494
1530
  onChange(updatedFn);
1495
1531
  }; };
1496
- return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]) },
1497
- React.createElement("td", null, name),
1532
+ return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]), style: {
1533
+ "--type-color": "var(--color-".concat(normalized.type, ")"),
1534
+ } },
1535
+ React.createElement("td", null, varDef.label || name),
1498
1536
  React.createElement("td", null, !isRef && (React.createElement(Control, { type: normalized.type, options: normalized.options, value: value, onChange: handleParamChange(name) })))));
1499
1537
  };
1500
1538
 
1501
1539
  var Output = function (_a) {
1502
1540
  var name = _a.name, varDef = _a.varDef, id = _a.id;
1503
1541
  var normalized = normalizeVarDef(varDef);
1504
- return (React.createElement("tr", { key: name, className: classNames(styles.Output, styles["type-".concat(normalized.type)]) },
1542
+ return (React.createElement("tr", { key: name, className: classNames(styles.Output, styles["type-".concat(normalized.type)]), style: {
1543
+ "--type-color": "var(--color-".concat(normalized.type, ")"),
1544
+ } },
1505
1545
  React.createElement("td", { colSpan: 2 },
1506
- name,
1546
+ varDef.label || name,
1507
1547
  React.createElement(react.Handle, { type: "source", position: react.Position.Right, id: "".concat(id, "-").concat(name) }))));
1508
1548
  };
1509
1549
 
@@ -1613,10 +1653,43 @@ var Log = React.memo(function (_a) {
1613
1653
  });
1614
1654
  Log.displayName = "LogNode";
1615
1655
 
1656
+ function uid() {
1657
+ return Math.random().toString(36).substring(2, 15);
1658
+ }
1659
+ var Merge = React.memo(function (_a) {
1660
+ var id = _a.id, data = _a.data, selected = _a.selected;
1661
+ var engine = useEngine();
1662
+ var onChange = useChange();
1663
+ var calledFn = engine.getFunction(data.name);
1664
+ if (!calledFn) {
1665
+ return (React.createElement(NodeContainer, { label: "Function not found", selected: selected }));
1666
+ }
1667
+ var inputs = Object.fromEntries(Object.keys(data.inputs || {}).map(function (name, i) { return [
1668
+ name,
1669
+ { type: "any", label: "D".concat(i + 1) },
1670
+ ]; }));
1671
+ var inputCount = Object.keys(inputs).length;
1672
+ inputs[uid()] = { type: "any", label: "D".concat(inputCount + 1) };
1673
+ var outputs = __assign({}, (calledFn.outputs || {}));
1674
+ return (React.createElement(NodeContainer, { label: data.name, selected: selected, id: id },
1675
+ React.createElement("table", null,
1676
+ React.createElement("tbody", null,
1677
+ Object.entries(outputs || {}).map(function (_a) {
1678
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
1679
+ return (React.createElement(Output, { key: name, name: name, varDef: varDef, id: id }));
1680
+ }),
1681
+ Object.entries(inputs || {}).map(function (_a) {
1682
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
1683
+ return (React.createElement(Input, { key: name, name: name, varDef: varDef, id: id, data: data, onChange: onChange }));
1684
+ })))));
1685
+ });
1686
+ Merge.displayName = "MergeNode";
1687
+
1616
1688
  var nodeTypes = {
1617
1689
  Default: Default,
1618
1690
  Calc: Calc,
1619
1691
  Log: Log,
1692
+ Merge: Merge,
1620
1693
  };
1621
1694
 
1622
1695
  function createGraph(fn, engine, positions) {
@@ -1800,6 +1873,6 @@ exports.toArray = toArray;
1800
1873
  exports.topSort = topSort;
1801
1874
  exports.treeSize = treeSize;
1802
1875
  exports.trimTree = trimTree$1;
1803
- exports.uid = uid;
1876
+ exports.uid = uid$1;
1804
1877
  exports.useFunction = useFunction;
1805
1878
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/DataTree/index.ts","../src/lib/DataTree/util.ts","../src/lib/Engine/util.ts","../src/lib/Primitives/Util/getValue.ts","../src/lib/Primitives/Util/log.ts","../src/lib/Primitives/Util/value.ts","../src/lib/Primitives/Util/index.ts","../src/lib/Primitives/Math/calc.ts","../src/lib/Primitives/Math/greaterThan.ts","../src/lib/Primitives/Math/lessThan.ts","../src/lib/Primitives/Math/index.ts","../src/lib/Primitives/List/filterList.ts","../src/lib/Primitives/List/graftTree.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/trimTree.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/Flow/Context.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Components/Control.tsx","../src/lib/Flow/Components/Input.tsx","../src/lib/Flow/Components/Param.tsx","../src/lib/Flow/Components/Output.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/Flow/index.tsx","../src/lib/hooks/useFunction.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Tree } from \"./types\";\n\nexport * from \"./types\";\n\n/**\n * removes the common prefix from the paths in the tree\n * @param tree\n * @returns\n */\nexport function simplifyTree<T>(tree: Tree<T>): Tree<T> {\n const keys = Object.keys(tree);\n if (keys.length <= 1) return tree; // ✅ Don't simplify if only one path\n\n // Parse all paths into number arrays\n const parsedPaths = keys.map((path) => path.split(\";\").map(Number));\n\n // Find common prefix\n let prefixLength = parsedPaths[0].length;\n for (let i = 1; i < parsedPaths.length; i++) {\n const path = parsedPaths[i];\n for (let j = 0; j < prefixLength; j++) {\n if (path[j] !== parsedPaths[0][j]) {\n prefixLength = j;\n break;\n }\n }\n }\n\n const simplified: Tree<T> = {};\n\n for (let i = 0; i < parsedPaths.length; i++) {\n const oldPath = keys[i];\n const newPath = parsedPaths[i].slice(prefixLength).join(\";\");\n\n simplified[newPath] = tree[oldPath];\n }\n\n return simplified;\n}\n\n/**\n * Expands a tree by applying a function to each item in the tree.\n * @param tree\n * @param fn\n * @returns\n */\nexport function expandTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U[]\n): Tree<U> {\n const result: Tree<U> = {};\n\n for (const path in tree) {\n const items = tree[path];\n\n items.forEach((item, i) => {\n const subpath = `${path};${i}`; // Create new sub-branch per item\n const expandedItems = fn(item, path, i); // Apply function\n\n // if (expandedItems.length > 0) {\n result[subpath] = expandedItems;\n // }\n });\n }\n\n return result;\n}\n\n/**\n * Creates a new branch for each item in the existing tree branches\n * @param tree\n * @returns\n */\nexport function graftTree<T>(tree: Tree<T>): Tree<T> {\n return Object.fromEntries(\n Object.entries(tree as Tree<any>).reduce((entries, [path, values]) => {\n entries.push(\n ...values.map(\n (value, index) =>\n [path + \";\" + index, [value]] as [string, any[]]\n )\n );\n return entries;\n }, [] as [string, any[]][])\n );\n}\n\n/**\n * Reduce the complexity of a tree by merging the outermost branches.\n * @param tree\n */\nexport function trimTree<T>(tree: Tree<T>, depth = 1): Tree<T> {\n if (depth <= 0) return tree;\n\n const result: Tree<T> = {};\n for (const path in tree) {\n const parts = path.split(\";\");\n // leave at least a path length of 1\n const end = depth >= parts.length ? 1 : -depth;\n const newPath = parts.slice(0, end).join(\";\");\n if (!result[newPath]) {\n result[newPath] = [];\n }\n // flatten onto new branch\n result[newPath].push(...tree[path]);\n }\n return result;\n}\n\n/**\n * checks if the given structure is a data tree\n */\nexport function isTree(value: any): value is Tree<any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every((v) => Array.isArray(v))\n );\n}\n\nexport function isSingleTon(value: Tree<any>): boolean {\n return (\n Object.keys(value).length === 1 && Object.values(value)[0].length === 1\n );\n}\n\n/**\n * turns a value or array of values into a tree\n */\nexport function broadCast<T>(value: T | T[] | Tree<T>): Tree<T> {\n if (Array.isArray(value)) {\n return { \"0\": value };\n }\n if (isTree(value)) {\n return value;\n }\n return { \"0\": [value] };\n}\n\nexport function getBranch<T>(tree: Tree<T>, path: string): T[] | void {\n return tree[path];\n}\n\n/**\n * maps a tree, the tree branches are flatmapped, so if an array is returned for each item in the list, a flat list is returned\n * @param tree\n * @param fn\n * @returns\n */\nexport function mapTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const mapResult = tree[path].flatMap((v, i) => fn(v, path, i));\n if (mapResult.length) {\n result[path] = mapResult;\n }\n }\n return result;\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const newBranch = fn(tree[path], path);\n if (newBranch) {\n result[path] = newBranch;\n }\n }\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTreeBranch<V>(\n trees: Tree<any>[],\n fn: (branches: any[], paths: string[]) => V[] | void\n): Tree<V> {\n const result: Tree<V> = {};\n const allKeys = trees.map((tree) => Object.keys(tree));\n const maxBranches = Math.max(...allKeys.map((keys) => keys.length));\n\n for (let i = 0; i < maxBranches; i++) {\n const paths = allKeys.map((keys) => keys[Math.min(i, keys.length - 1)]);\n const branches = trees.map(\n (tree) => tree[paths[trees.indexOf(tree)]] || []\n );\n\n // get all the paths of which the trees are the longest, use the first\n const maxPaths = paths.filter(\n (_, i) => allKeys[i].length === maxBranches\n );\n const path = maxPaths[0];\n\n const newBranch = fn(branches, paths);\n if (newBranch?.length) {\n result[path] = newBranch;\n }\n }\n\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths, index)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<V>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n return Array.from({ length: maxLength }, (_, i) => {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n return fn(items, paths, i);\n });\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (itemA: T, itemB: U, pathA: string, pathB: string, index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: Number(value) };\n case \"boolean\":\n return { value: Boolean(value) };\n case \"string\":\n return { value: String(value) };\n default:\n // return as is\n return { value };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { create, all, MathNode, SymbolNode } from \"mathjs\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\nimport { broadCast, mapTree, sameShape } from \"../../DataTree\";\n\nlet math = create(all, {});\n\nfunction evaluate(expression: string, scope: Record<string, any>) {\n // console.log(\"evaluating\", expression, \"in\", scope);\n let result;\n try {\n result = math.evaluate(expression, scope);\n if (typeof result.toNumber === \"function\") {\n result = result.toNumber();\n }\n } catch (e) {\n console.log(\"Calc:\", e);\n console.log(\"Calc:\", { expression, scope });\n // todo: communicate errors\n }\n\n // console.log(\"result\", result);\n return result;\n}\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const calc: PrimitiveFunction = {\n name: \"calc\",\n label: \"Calc\",\n nodeType: \"Calc\",\n inputs: {},\n params: {\n expression: \"string\",\n },\n outputs: {\n result: \"number\",\n },\n impl: async (inputs, params): Promise<RecOfTrees> => {\n const expression = params.expression;\n if (!expression) return {};\n // check for same shape on all inputs\n let inputEntries = Object.entries(inputs);\n if (\n !inputEntries.every(([key, v], i, a) => {\n return sameShape(v, a[0][1]);\n })\n ) {\n throw new Error(\"All inputs must have the same shape\");\n }\n // if no inputs, just return the result of the expression\n if (inputEntries.length === 0) {\n return { result: broadCast(evaluate(expression, {})) };\n }\n // if inputs, evaluate the expression for each input\n const result = mapTree(inputEntries[0][1], (_, p, i) => {\n // create a scope for each input\n let vars: Record<string, any> = {};\n inputEntries.forEach(([key, value]) => {\n vars[key] = value[p][i];\n });\n return evaluate(expression, vars);\n });\n\n // await new Promise((resolve) => setTimeout(resolve, 5000)); // yield to event loop\n\n return { result };\n },\n};\n\nconst BUILT_INS = new Set([\n // constants\n \"pi\",\n \"e\",\n \"tau\",\n \"phi\",\n \"Infinity\",\n \"NaN\",\n \"i\",\n \"true\",\n \"false\",\n \"null\",\n // common built-in functions (skip as variables when used as callees)\n \"sin\",\n \"cos\",\n \"tan\",\n \"asin\",\n \"acos\",\n \"atan\",\n \"atan2\",\n \"sinh\",\n \"cosh\",\n \"tanh\",\n \"log\",\n \"log10\",\n \"ln\",\n \"exp\",\n \"sqrt\",\n \"abs\",\n \"min\",\n \"max\",\n \"round\",\n \"floor\",\n \"ceil\",\n \"sum\",\n \"mean\",\n \"median\",\n \"mode\",\n \"std\",\n \"var\",\n \"pow\",\n \"mod\",\n \"gcd\",\n \"lcm\",\n \"derivative\",\n \"integral\",\n \"simplify\",\n \"im\",\n \"re\",\n]);\n\n/**\n * Return a sorted list of unbound symbol names in a MathJS expression.\n * @param expr The expression string, e.g. \"x + y\"\n * @param scope Names already defined/known (e.g. from your evaluation scope)\n * @param extraBound Extra names to treat as bound (e.g. UI reserved words)\n */\nexport function getUnboundSymbols(\n expr: string,\n scope: Record<string, unknown> = {},\n extraBound: string[] = []\n): string[] {\n let ast;\n try {\n ast = math.parse(expr);\n } catch {\n return [];\n }\n const bound = new Set<string>([...Object.keys(scope), ...extraBound]);\n const free = new Set<string>();\n\n const isFunctionCallee = (node: MathNode, parent?: MathNode) =>\n parent?.type === \"FunctionNode\" && (parent as any).fn === node;\n\n ast.traverse((node: MathNode, _path: string, parent?: MathNode) => {\n if (node.type !== \"SymbolNode\") return;\n\n const name = (node as SymbolNode).name;\n\n // Skip if symbol is the function name in a call, e.g. sin in sin(x)\n if (isFunctionCallee(node, parent)) return;\n\n // Skip mathjs built-ins and anything caller said is already bound\n if (BUILT_INS.has(name) || bound.has(name)) return;\n\n free.add(name);\n });\n\n // If you want to also exclude left-hand sides of assignments within the expr:\n // (Uncommon in \"fill in variables\" UIs, but easy to guard against.)\n ast.traverse((node: MathNode) => {\n if (node.type === \"AssignmentNode\") {\n const target: MathNode = (node as any).object;\n if (target?.type === \"SymbolNode\") {\n free.delete((target as SymbolNode).name);\n }\n }\n });\n\n return Array.from(free).sort();\n}\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA > itemB;\n }),\n gte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA >= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA < itemB;\n }),\n lte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA <= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { calc } from \"./calc\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list,\n inputs.keep,\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const graftTree: PrimitiveFunction = {\n name: \"graftTree\",\n label: \"Graft Tree\",\n description:\n \"Creates a new branch for each item in the existing tree branches\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { getBranch, mapTreeBranch } from \"../../DataTree\";\n\nexport const listItem: PrimitiveFunction = {\n name: \"listItem\",\n label: \"List Item\",\n description: \"Retrieve the items from the list at the specified indices\",\n inputs: {\n list: \"any\",\n index: \"number\",\n },\n outputs: {\n item: \"any\",\n },\n impl: async (inputs) => {\n return {\n item: mapTreeBranch(inputs.list, (branch, path) => {\n let indices = getBranch(inputs.index, path);\n if (indices) {\n return indices.map((i) => branch[i]);\n }\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const listLength: PrimitiveFunction = {\n name: \"listLength\",\n label: \"List Length\",\n description: \"Get the length of a list\",\n inputs: {\n list: \"any\",\n },\n outputs: {\n length: \"number\",\n },\n impl: async (inputs) => {\n return {\n length: mapTreeBranch(inputs.list, (branch) => {\n return [branch.length];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { trimTree as trim } from \"../../DataTree\";\n\nexport const trimTree: PrimitiveFunction = {\n name: \"trimTree\",\n label: \"Trim Tree\",\n description:\n \"Reduce the complexity of a tree by merging the outermost branches.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: \"number\", // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { graftTree } from \"./graftTree\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { trimTree } from \"./trimTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [graftTree.name]: graftTree,\n [trimTree.name]: trimTree,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: \"number\",\n step: \"number\",\n count: \"number\",\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../Engine/types\";\nimport Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n} from \"./types\";\nimport {\n getValue,\n interpolate,\n isReference,\n parseReference,\n uid,\n} from \"./util\";\n\nexport * from \"./types\";\nexport * from \"./util\";\n\ninterface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function applyNodeDelete(fn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n}\n\nexport function applyEdgeDelete(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n}\n\nexport function applyNodeAdd(fn: GraphedFunction, nodeName: string) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n let id = uid();\n while (newFn.body[id]) {\n id = uid();\n }\n newFn.body[id] = {\n name: nodeName,\n inputs: {},\n params: {},\n };\n return topSort(newFn);\n}\n\nexport function applyNodeConnect(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n\n return topSort(newFn);\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n console.log(\"sorted\", ordered);\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n console.log(\n `Running function: ${node.name}`,\n node,\n inputs,\n params\n );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n console.log(\n \"Engine running with inputs\",\n inputs,\n interpolate(inputs, {})\n );\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n const result = await node.impl?.(mappedInputs, {});\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n}\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n if (persist) {\n let data = { ...pget().data, [`${scope}|${name}`]: value };\n pset({ data });\n } else {\n let data = { ...get().data, [`${scope}|${name}`]: value };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\nconst dummyEngine = new Engine();\nexport const EngineContext = React.createContext<Engine>(dummyEngine);\n\nexport const useEngine = () => {\n return React.useContext(EngineContext);\n};\n\nexport const ChangeContext = React.createContext<(fn: GraphedFunction) => void>(\n () => {}\n);\nexport const useChange = () => {\n return React.useContext(ChangeContext);\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { useEngine } from \"../Context\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface NodeContainerProps {\n id?: string;\n label: string;\n className?: string;\n selected?: boolean;\n children?: React.ReactNode;\n}\nexport function NodeContainer({\n id,\n label,\n className,\n selected,\n children,\n}: NodeContainerProps) {\n const engine = useEngine();\n const [active, setActive] = React.useState(false);\n React.useEffect(() => {\n if (!id) return;\n let removeOnCall = engine.subscribe(\"functionCall\", (event) => {\n if (event.name === id) {\n setActive(true);\n }\n });\n let removeOnResult = engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setTimeout(\n () => setActive(false),\n Math.max(0, 1000 - (event.duration || 0))\n );\n }\n });\n return () => {\n removeOnCall();\n removeOnResult();\n };\n }, [id]);\n return (\n <div\n className={classNames(className, styles.DefaultNode, {\n [styles.selected]: selected,\n [styles.active]: active,\n })}\n >\n <div className={styles.Label}>{label}</div>\n {children}\n </div>\n );\n}\n","import React from \"react\";\n\ninterface ControlProps {\n value: any;\n type: string;\n options?: string[];\n onChange?: (value: any) => void;\n}\nexport function Control({ value, type, options, onChange }: ControlProps) {\n if (options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (type) {\n case \"any\":\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <input\n type=\"number\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(Number(e.target.value))}\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Input = ({ name, varDef, id, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.inputs?.[name];\n const isRef = isReference(value);\n\n const handleInputChange = (param: string) => (value: any) => {\n // Update the function instance with the new input value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.inputs = {\n ...call.inputs,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n >\n <td>\n {name}\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n />\n </td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Param = ({ id, name, varDef, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.params?.[name];\n const isRef = isReference(value);\n\n const handleParamChange = (param: string) => (value: any) => {\n // Update the function instance with the new param value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.params = {\n ...call.params,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n >\n <td>{name}</td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n options={normalized.options}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Output = ({ name, varDef, id }) => {\n const normalized = normalizeVarDef(varDef);\n return (\n <tr\n key={name}\n className={classNames(\n styles.Output,\n styles[`type-${normalized.type}`]\n )}\n >\n <td colSpan={2}>\n {name}\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n />\n </td>\n </tr>\n );\n};\n","import React from \"react\";\n\nimport { FunctionNode } from \"../types\";\nimport { Input } from \"../Components/Input\";\nimport { Param } from \"../Components/Param\";\nimport { Output } from \"../Components/Output\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GraphedFunction, VarDef } from \"../../Engine\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n onChange: (fn: GraphedFunction) => void;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n onChange,\n}: GenericNodeProps) {\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n {children}\n <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n\n {Object.entries(params || {}).map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { GenericNode } from \"../Components/GenericNode\";\nimport { getUnboundSymbols } from \"../../Primitives/Math/calc\";\n\nimport \"../style/katex.min.css\";\n\nlet math = create(all, {});\n\ntype MathProps = { expr: string; displayMode?: boolean };\n\nexport function MathView({ expr, displayMode = false }: MathProps) {\n let latex = \"\";\n try {\n latex = math.parse(expr).toTex({ parenthesis: \"auto\" });\n } catch (e) {\n latex = String(expr); // fallback on parse error\n }\n const html = katex.renderToString(latex, {\n throwOnError: false,\n displayMode, // true = block, false = inline\n });\n return <span dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport const Calc = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(calledFn.inputs || {}) };\n const symbols = getUnboundSymbols(expression as string);\n symbols.forEach((symbol) => {\n if (!inputs[symbol]) {\n inputs[symbol] = {\n type: \"number\",\n };\n }\n });\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n >\n <MathView expr={expression} displayMode />\n </GenericNode>\n );\n }\n);\nCalc.displayName = \"CalcNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={calledFn.inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n />\n );\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const calledFn = engine.getFunction(data.name);\n const [value, setValue] = React.useState<Tree<any> | null>(null);\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setValue(event.context.scope[id]?.data || null);\n }\n });\n }, []);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td\n title={JSON.stringify(\n item,\n null,\n 2\n )}\n >\n {item?.toString()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n};\n","import {\n addEdge,\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n EdgeChange,\n Node,\n NodeChange,\n ReactFlow,\n ReactFlowProvider,\n} from \"@xyflow/react\";\n\nimport { useVariable } from \"../hooks/useVariable\";\nimport { GraphedFunction } from \"../Engine/types\";\nimport { useInner } from \"@rkmodules/use-inner\";\nimport React from \"react\";\nimport {\n applyEdgeDelete,\n applyNodeConnect,\n applyNodeDelete,\n Engine,\n getReferences,\n} from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { FunctionNode } from \"./types\";\nimport { ChangeContext, EngineContext } from \"./Context\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\nexport function createGraph(\n fn: GraphedFunction,\n engine: Engine,\n positions?: PositionData\n) {\n const nodes: FunctionNode[] = [];\n const edges: Edge[] = [];\n\n Object.entries(fn.body || {}).forEach(([id, fncall], index) => {\n const reffedFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n nodes.push({\n id,\n data: {\n name: fncall.name,\n caller: fn,\n inputs: fncall.inputs,\n params: fncall.params,\n },\n position: positions?.[id] || { x: 250 * index, y: 0 },\n dragHandle: `.${styles.Label}`,\n type: reffedFn?.nodeType || \"Default\",\n });\n\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n // create an edge for each reference\n edges.push({\n id: `${ref.path}-${id}.${ref.name}`,\n source: ref.refNode,\n target: id,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${id}-${ref.name}`,\n });\n });\n });\n\n return { nodes, edges };\n}\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (fn: GraphedFunction) => void;\n}\nfunction FlowInner({ function: fn, engine, onChange }: FlowProps) {\n let [positions, setPositions] = useVariable<\n Record<string, { x: number; y: number }>\n >(\"rules\", `${fn.name}.positions`, {});\n const { nodes: initialNodes, edges: initialEdges } = React.useMemo(() => {\n return createGraph(fn, engine, positions);\n }, [fn, engine]);\n const [nodes, setNodes] = useInner<Node[]>(initialNodes);\n const [edges, setEdges] = useInner<Edge[]>(initialEdges);\n\n // useLayoutNodes();\n\n let updatePosition = (event: React.MouseEvent, node: FunctionNode) => {\n setPositions({ ...positions, [node.id]: node.position });\n };\n\n const onNodesChange = React.useCallback(\n (changes: NodeChange<Node>[]) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n [setNodes]\n );\n const onEdgesChange = React.useCallback(\n (changes: EdgeChange<Edge>[]) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n [setEdges]\n );\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.(\n applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot));\n },\n [setEdges, fn, onChange]\n );\n\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.(\n applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n setNodes((nodesSnapshot) =>\n nodesSnapshot.filter(\n (node) => !nodesToDelete.some((n) => n.id === node.id)\n )\n );\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) =>\n !nodesToDelete.some(\n (n) => n.id === edge.source || n.id === edge.target\n )\n )\n );\n },\n [setNodes, setEdges, onChange, fn]\n );\n\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n onChange?.(newFn);\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) => !edgesToDelete.some((e) => e.id === edge.id)\n )\n );\n },\n [setEdges, onChange, fn]\n );\n\n return (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={updatePosition}\n onConnect={onConnect}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n deleteKeyCode={\"Delete\"}\n >\n <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({ function: fn, engine, onChange = () => {} }: FlowProps) {\n return (\n <EngineContext.Provider value={engine}>\n <ChangeContext.Provider value={onChange}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n />\n </ReactFlowProvider>\n </ChangeContext.Provider>\n </EngineContext.Provider>\n );\n}\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\n/**\n * using functions\n *\n * in React context\n * - use useFunction. This will build the function, mount it if needed and provides a run function.\n *\n *\n * in Vanilla context\n * - use engine.build(fn) to build the function\n * - use engine.mount(fn) to mount the function (if it has a mount function)\n * - use await engine.run(fn, inputs) to run the function and get the result\n */\n\nexport function useFunction(\n engine: Engine,\n fn: GraphedFunction,\n mount?: boolean\n) {\n const [result, setResult] = React.useState<any>(null);\n const builtFn = React.useMemo(() => engine.build(fn), [fn]);\n React.useEffect(() => {\n if (mount) {\n return engine.mount(builtFn);\n }\n }, [builtFn, mount]);\n\n const run = React.useCallback(\n async (inputs?: Record<string, any>) => {\n const result = await engine.run(builtFn, inputs);\n setResult(result);\n return result;\n },\n [builtFn]\n );\n\n return React.useMemo(\n () => ({\n fn: builtFn,\n run,\n result,\n }),\n [builtFn, run, result]\n );\n}\n"],"names":["graftTree","trimTree","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","persist","Handle","Position","useInner","applyNodeChanges","applyEdgeChanges","addEdge","ReactFlow","Background","BackgroundVariant","Controls","ReactFlowProvider"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/DataTree/index.ts","../src/lib/DataTree/util.ts","../src/lib/Engine/util.ts","../src/lib/Primitives/Util/getValue.ts","../src/lib/Primitives/Util/log.ts","../src/lib/Primitives/Util/value.ts","../src/lib/Primitives/Util/index.ts","../src/lib/Primitives/Math/calc.ts","../src/lib/Primitives/Math/greaterThan.ts","../src/lib/Primitives/Math/lessThan.ts","../src/lib/Primitives/Math/index.ts","../src/lib/Primitives/List/filterList.ts","../src/lib/Primitives/List/graftTree.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/trimTree.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/Tree/mergeTree.ts","../src/lib/Primitives/Tree/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/Flow/Context.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Components/Control.tsx","../src/lib/Flow/Components/Input.tsx","../src/lib/Flow/Components/Param.tsx","../src/lib/Flow/Components/Output.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/Flow/index.tsx","../src/lib/hooks/useFunction.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Tree } from \"./types\";\n\nexport * from \"./types\";\n\n/**\n * removes the common prefix from the paths in the tree\n * @param tree\n * @returns\n */\nexport function simplifyTree<T>(tree: Tree<T>): Tree<T> {\n const keys = Object.keys(tree);\n if (keys.length <= 1) return tree; // ✅ Don't simplify if only one path\n\n // Parse all paths into number arrays\n const parsedPaths = keys.map((path) => path.split(\";\").map(Number));\n\n // Find common prefix\n let prefixLength = parsedPaths[0].length;\n for (let i = 1; i < parsedPaths.length; i++) {\n const path = parsedPaths[i];\n for (let j = 0; j < prefixLength; j++) {\n if (path[j] !== parsedPaths[0][j]) {\n prefixLength = j;\n break;\n }\n }\n }\n\n const simplified: Tree<T> = {};\n\n for (let i = 0; i < parsedPaths.length; i++) {\n const oldPath = keys[i];\n const newPath = parsedPaths[i].slice(prefixLength).join(\";\");\n\n simplified[newPath] = tree[oldPath];\n }\n\n return simplified;\n}\n\n/**\n * Expands a tree by applying a function to each item in the tree.\n * @param tree\n * @param fn\n * @returns\n */\nexport function expandTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U[]\n): Tree<U> {\n const result: Tree<U> = {};\n\n for (const path in tree) {\n const items = tree[path];\n\n items.forEach((item, i) => {\n const subpath = `${path};${i}`; // Create new sub-branch per item\n const expandedItems = fn(item, path, i); // Apply function\n\n // if (expandedItems.length > 0) {\n result[subpath] = expandedItems;\n // }\n });\n }\n\n return result;\n}\n\n/**\n * Creates a new branch for each item in the existing tree branches\n * @param tree\n * @returns\n */\nexport function graftTree<T>(tree: Tree<T>): Tree<T> {\n return Object.fromEntries(\n Object.entries(tree as Tree<any>).reduce((entries, [path, values]) => {\n entries.push(\n ...values.map(\n (value, index) =>\n [path + \";\" + index, [value]] as [string, any[]]\n )\n );\n return entries;\n }, [] as [string, any[]][])\n );\n}\n\n/**\n * Reduce the complexity of a tree by merging the outermost branches.\n * @param tree\n */\nexport function trimTree<T>(tree: Tree<T>, depth = 1): Tree<T> {\n if (depth <= 0) return tree;\n\n const result: Tree<T> = {};\n for (const path in tree) {\n const parts = path.split(\";\");\n // leave at least a path length of 1\n const end = depth >= parts.length ? 1 : -depth;\n const newPath = parts.slice(0, end).join(\";\");\n if (!result[newPath]) {\n result[newPath] = [];\n }\n // flatten onto new branch\n result[newPath].push(...tree[path]);\n }\n return result;\n}\n\n/**\n * checks if the given structure is a data tree\n */\nexport function isTree(value: any): value is Tree<any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every((v) => Array.isArray(v))\n );\n}\n\nexport function isSingleTon(value: Tree<any>): boolean {\n return (\n Object.keys(value).length === 1 && Object.values(value)[0].length === 1\n );\n}\n\n/**\n * turns a value or array of values into a tree\n */\nexport function broadCast<T>(value: T | T[] | Tree<T>): Tree<T> {\n if (Array.isArray(value)) {\n return { \"0\": value };\n }\n if (isTree(value)) {\n return value;\n }\n return { \"0\": [value] };\n}\n\nexport function getBranch<T>(tree: Tree<T>, path: string): T[] | void {\n return tree[path];\n}\n\n/**\n * maps a tree, the tree branches are flatmapped, so if an array is returned for each item in the list, a flat list is returned\n * @param tree\n * @param fn\n * @returns\n */\nexport function mapTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const mapResult = tree[path].flatMap((v, i) => fn(v, path, i));\n if (mapResult.length) {\n result[path] = mapResult;\n }\n }\n return result;\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const newBranch = fn(tree[path], path);\n if (newBranch) {\n result[path] = newBranch;\n }\n }\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTreeBranch<V>(\n trees: Tree<any>[],\n fn: (branches: any[], paths: string[]) => V[] | void\n): Tree<V> {\n const result: Tree<V> = {};\n const allKeys = trees.map((tree) => Object.keys(tree));\n const maxBranches = Math.max(...allKeys.map((keys) => keys.length));\n\n for (let i = 0; i < maxBranches; i++) {\n const paths = allKeys.map((keys) => keys[Math.min(i, keys.length - 1)]);\n const branches = trees.map(\n (tree) => tree[paths[trees.indexOf(tree)]] || []\n );\n\n // get all the paths of which the trees are the longest, use the first\n const maxPaths = paths.filter(\n (_, i) => allKeys[i].length === maxBranches\n );\n const path = maxPaths[0];\n\n const newBranch = fn(branches, paths);\n if (newBranch?.length) {\n result[path] = newBranch;\n }\n }\n\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths, index)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<V>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n return Array.from({ length: maxLength }, (_, i) => {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n return fn(items, paths, i);\n });\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (itemA: T, itemB: U, pathA: string, pathB: string, index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: Number(value) };\n case \"boolean\":\n return { value: Boolean(value) };\n case \"string\":\n return { value: String(value) };\n default:\n // return as is\n return { value };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { create, all, MathNode, SymbolNode } from \"mathjs\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\nimport { broadCast, mapTree, sameShape } from \"../../DataTree\";\n\nlet math = create(all, {});\n\nfunction evaluate(expression: string, scope: Record<string, any>) {\n // console.log(\"evaluating\", expression, \"in\", scope);\n let result;\n try {\n result = math.evaluate(expression, scope);\n if (typeof result.toNumber === \"function\") {\n result = result.toNumber();\n }\n } catch (e) {\n console.log(\"Calc:\", e);\n console.log(\"Calc:\", { expression, scope });\n // todo: communicate errors\n }\n\n // console.log(\"result\", result);\n return result;\n}\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const calc: PrimitiveFunction = {\n name: \"calc\",\n label: \"Calc\",\n nodeType: \"Calc\",\n inputs: {},\n params: {\n expression: \"string\",\n },\n outputs: {\n result: \"number\",\n },\n impl: async (inputs, params): Promise<RecOfTrees> => {\n const expression = params.expression;\n if (!expression) return {};\n // check for same shape on all inputs\n let inputEntries = Object.entries(inputs);\n if (\n !inputEntries.every(([key, v], i, a) => {\n return sameShape(v, a[0][1]);\n })\n ) {\n throw new Error(\"All inputs must have the same shape\");\n }\n // if no inputs, just return the result of the expression\n if (inputEntries.length === 0) {\n return { result: broadCast(evaluate(expression, {})) };\n }\n // if inputs, evaluate the expression for each input\n const result = mapTree(inputEntries[0][1], (_, p, i) => {\n // create a scope for each input\n let vars: Record<string, any> = {};\n inputEntries.forEach(([key, value]) => {\n vars[key] = value[p][i];\n });\n return evaluate(expression, vars);\n });\n\n // await new Promise((resolve) => setTimeout(resolve, 5000)); // yield to event loop\n\n return { result };\n },\n};\n\nconst BUILT_INS = new Set([\n // constants\n \"pi\",\n \"e\",\n \"tau\",\n \"phi\",\n \"Infinity\",\n \"NaN\",\n \"i\",\n \"true\",\n \"false\",\n \"null\",\n // common built-in functions (skip as variables when used as callees)\n \"sin\",\n \"cos\",\n \"tan\",\n \"asin\",\n \"acos\",\n \"atan\",\n \"atan2\",\n \"sinh\",\n \"cosh\",\n \"tanh\",\n \"log\",\n \"log10\",\n \"ln\",\n \"exp\",\n \"sqrt\",\n \"abs\",\n \"min\",\n \"max\",\n \"round\",\n \"floor\",\n \"ceil\",\n \"sum\",\n \"mean\",\n \"median\",\n \"mode\",\n \"std\",\n \"var\",\n \"pow\",\n \"mod\",\n \"gcd\",\n \"lcm\",\n \"derivative\",\n \"integral\",\n \"simplify\",\n \"im\",\n \"re\",\n]);\n\n/**\n * Return a sorted list of unbound symbol names in a MathJS expression.\n * @param expr The expression string, e.g. \"x + y\"\n * @param scope Names already defined/known (e.g. from your evaluation scope)\n * @param extraBound Extra names to treat as bound (e.g. UI reserved words)\n */\nexport function getUnboundSymbols(\n expr: string,\n scope: Record<string, unknown> = {},\n extraBound: string[] = []\n): string[] {\n let ast;\n try {\n ast = math.parse(expr);\n } catch {\n return [];\n }\n const bound = new Set<string>([...Object.keys(scope), ...extraBound]);\n const free = new Set<string>();\n\n const isFunctionCallee = (node: MathNode, parent?: MathNode) =>\n parent?.type === \"FunctionNode\" && (parent as any).fn === node;\n\n ast.traverse((node: MathNode, _path: string, parent?: MathNode) => {\n if (node.type !== \"SymbolNode\") return;\n\n const name = (node as SymbolNode).name;\n\n // Skip if symbol is the function name in a call, e.g. sin in sin(x)\n if (isFunctionCallee(node, parent)) return;\n\n // Skip mathjs built-ins and anything caller said is already bound\n if (BUILT_INS.has(name) || bound.has(name)) return;\n\n free.add(name);\n });\n\n // If you want to also exclude left-hand sides of assignments within the expr:\n // (Uncommon in \"fill in variables\" UIs, but easy to guard against.)\n ast.traverse((node: MathNode) => {\n if (node.type === \"AssignmentNode\") {\n const target: MathNode = (node as any).object;\n if (target?.type === \"SymbolNode\") {\n free.delete((target as SymbolNode).name);\n }\n }\n });\n\n return Array.from(free).sort();\n}\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA > itemB;\n }),\n gte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA >= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA < itemB;\n }),\n lte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA <= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { calc } from \"./calc\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list,\n inputs.keep,\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const graftTree: PrimitiveFunction = {\n name: \"graftTree\",\n label: \"Graft Tree\",\n description:\n \"Creates a new branch for each item in the existing tree branches\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { getBranch, mapTreeBranch } from \"../../DataTree\";\n\nexport const listItem: PrimitiveFunction = {\n name: \"listItem\",\n label: \"List Item\",\n description: \"Retrieve the items from the list at the specified indices\",\n inputs: {\n list: \"any\",\n index: \"number\",\n },\n outputs: {\n item: \"any\",\n },\n impl: async (inputs) => {\n return {\n item: mapTreeBranch(inputs.list, (branch, path) => {\n let indices = getBranch(inputs.index, path);\n if (indices) {\n return indices.map((i) => branch[i]);\n }\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const listLength: PrimitiveFunction = {\n name: \"listLength\",\n label: \"List Length\",\n description: \"Get the length of a list\",\n inputs: {\n list: \"any\",\n },\n outputs: {\n length: \"number\",\n },\n impl: async (inputs) => {\n return {\n length: mapTreeBranch(inputs.list, (branch) => {\n return [branch.length];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { trimTree as trim } from \"../../DataTree\";\n\nexport const trimTree: PrimitiveFunction = {\n name: \"trimTree\",\n label: \"Trim Tree\",\n description:\n \"Reduce the complexity of a tree by merging the outermost branches.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: \"number\", // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { graftTree } from \"./graftTree\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { trimTree } from \"./trimTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [graftTree.name]: graftTree,\n [trimTree.name]: trimTree,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: \"number\",\n step: \"number\",\n count: \"number\",\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { Tree } from \"../../DataTree\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\n\nexport const mergeTree: PrimitiveFunction = {\n name: \"mergeTree\",\n label: \"Merge Tree\",\n description: \"Merge multiple trees into a single tree.\",\n nodeType: \"Merge\",\n inputs: {},\n outputs: {\n result: \"number\",\n },\n impl: async (inputs): Promise<RecOfTrees> => {\n const result: Tree<any> = {};\n\n Object.values(inputs).forEach((input) => {\n Object.entries(input).forEach(([key, value]) => {\n if (!result[key]) {\n result[key] = value;\n } else {\n result[key] = [...result[key], ...value];\n }\n });\n });\n return { result };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mergeTree } from \"./mergeTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [mergeTree.name]: mergeTree,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../Engine/types\";\nimport Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\nimport Tree from \"./Tree\";\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n} from \"./types\";\nimport {\n getValue,\n interpolate,\n isReference,\n parseReference,\n uid,\n} from \"./util\";\n\nexport * from \"./types\";\nexport * from \"./util\";\n\ninterface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function applyNodeDelete(fn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n}\n\nexport function applyEdgeDelete(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n}\n\nexport function applyNodeAdd(fn: GraphedFunction, nodeName: string) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n let id = uid();\n while (newFn.body[id]) {\n id = uid();\n }\n newFn.body[id] = {\n name: nodeName,\n inputs: {},\n params: {},\n };\n return topSort(newFn);\n}\n\nexport function applyNodeConnect(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n\n return topSort(newFn);\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n console.log(\"sorted\", ordered);\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n console.log(\n `Running function: ${node.name}`,\n node,\n inputs,\n params\n );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n console.log(\n \"Engine running with inputs\",\n inputs,\n interpolate(inputs, {})\n );\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n const result = await node.impl?.(mappedInputs, {});\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n}\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n if (persist) {\n let data = { ...pget().data, [`${scope}|${name}`]: value };\n pset({ data });\n } else {\n let data = { ...get().data, [`${scope}|${name}`]: value };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\nconst dummyEngine = new Engine();\nexport const EngineContext = React.createContext<Engine>(dummyEngine);\n\nexport const useEngine = () => {\n return React.useContext(EngineContext);\n};\n\nexport const ChangeContext = React.createContext<(fn: GraphedFunction) => void>(\n () => {}\n);\nexport const useChange = () => {\n return React.useContext(ChangeContext);\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { useEngine } from \"../Context\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface NodeContainerProps {\n id?: string;\n label: string;\n className?: string;\n selected?: boolean;\n children?: React.ReactNode;\n}\nexport function NodeContainer({\n id,\n label,\n className,\n selected,\n children,\n}: NodeContainerProps) {\n const engine = useEngine();\n const [active, setActive] = React.useState(false);\n React.useEffect(() => {\n if (!id) return;\n let removeOnCall = engine.subscribe(\"functionCall\", (event) => {\n if (event.name === id) {\n setActive(true);\n }\n });\n let removeOnResult = engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setTimeout(\n () => setActive(false),\n Math.max(0, 1000 - (event.duration || 0))\n );\n }\n });\n return () => {\n removeOnCall();\n removeOnResult();\n };\n }, [id]);\n return (\n <div\n className={classNames(className, styles.DefaultNode, {\n [styles.selected]: selected,\n [styles.active]: active,\n })}\n >\n <div className={styles.Label}>{label}</div>\n {children}\n </div>\n );\n}\n","import React from \"react\";\n\ninterface ControlProps {\n value: any;\n type: string;\n options?: string[];\n onChange?: (value: any) => void;\n}\nexport function Control({ value, type, options, onChange }: ControlProps) {\n if (options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (type) {\n case \"any\":\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <input\n type=\"number\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(Number(e.target.value))}\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Input = ({ name, varDef, id, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.inputs?.[name];\n const isRef = isReference(value);\n\n const handleInputChange = (param: string) => (value: any) => {\n // Update the function instance with the new input value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.inputs = {\n ...call.inputs,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>\n {varDef.label || name}\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n />\n </td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Param = ({ id, name, varDef, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.params?.[name];\n const isRef = isReference(value);\n\n const handleParamChange = (param: string) => (value: any) => {\n // Update the function instance with the new param value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.params = {\n ...call.params,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>{varDef.label || name}</td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n options={normalized.options}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Output = ({ name, varDef, id }) => {\n const normalized = normalizeVarDef(varDef);\n return (\n <tr\n key={name}\n className={classNames(\n styles.Output,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td colSpan={2}>\n {varDef.label || name}\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n />\n </td>\n </tr>\n );\n};\n","import React from \"react\";\n\nimport { FunctionNode } from \"../types\";\nimport { Input } from \"../Components/Input\";\nimport { Param } from \"../Components/Param\";\nimport { Output } from \"../Components/Output\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GraphedFunction, VarDef } from \"../../Engine\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n onChange: (fn: GraphedFunction) => void;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n onChange,\n}: GenericNodeProps) {\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n {children}\n <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n\n {Object.entries(params || {}).map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { GenericNode } from \"../Components/GenericNode\";\nimport { getUnboundSymbols } from \"../../Primitives/Math/calc\";\n\nimport \"../style/katex.min.css\";\n\nlet math = create(all, {});\n\ntype MathProps = { expr: string; displayMode?: boolean };\n\nexport function MathView({ expr, displayMode = false }: MathProps) {\n let latex = \"\";\n try {\n latex = math.parse(expr).toTex({ parenthesis: \"auto\" });\n } catch (e) {\n latex = String(expr); // fallback on parse error\n }\n const html = katex.renderToString(latex, {\n throwOnError: false,\n displayMode, // true = block, false = inline\n });\n return <span dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport const Calc = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(calledFn.inputs || {}) };\n const symbols = getUnboundSymbols(expression as string);\n symbols.forEach((symbol) => {\n if (!inputs[symbol]) {\n inputs[symbol] = {\n type: \"number\",\n };\n }\n });\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n >\n <MathView expr={expression} displayMode />\n </GenericNode>\n );\n }\n);\nCalc.displayName = \"CalcNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={calledFn.inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n />\n );\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const calledFn = engine.getFunction(data.name);\n const [value, setValue] = React.useState<Tree<any> | null>(null);\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setValue(event.context.scope[id]?.data || null);\n }\n });\n }, []);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td\n title={JSON.stringify(\n item,\n null,\n 2\n )}\n >\n {item?.toString()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nfunction uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport const Merge = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n let inputs = Object.fromEntries(\n Object.keys(data.inputs || {}).map((name, i) => [\n name,\n { type: \"any\", label: `D${i + 1}` },\n ])\n );\n let inputCount = Object.keys(inputs).length;\n inputs[uid()] = { type: \"any\", label: `D${inputCount + 1}` };\n let outputs = { ...(calledFn.outputs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n }\n);\nMerge.displayName = \"MergeNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\nimport { Merge } from \"./Merge\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n Merge,\n};\n","import {\n addEdge,\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n EdgeChange,\n Node,\n NodeChange,\n ReactFlow,\n ReactFlowProvider,\n} from \"@xyflow/react\";\n\nimport { useVariable } from \"../hooks/useVariable\";\nimport { GraphedFunction } from \"../Engine/types\";\nimport { useInner } from \"@rkmodules/use-inner\";\nimport React from \"react\";\nimport {\n applyEdgeDelete,\n applyNodeConnect,\n applyNodeDelete,\n Engine,\n getReferences,\n} from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { FunctionNode } from \"./types\";\nimport { ChangeContext, EngineContext } from \"./Context\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\nexport function createGraph(\n fn: GraphedFunction,\n engine: Engine,\n positions?: PositionData\n) {\n const nodes: FunctionNode[] = [];\n const edges: Edge[] = [];\n\n Object.entries(fn.body || {}).forEach(([id, fncall], index) => {\n const reffedFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n nodes.push({\n id,\n data: {\n name: fncall.name,\n caller: fn,\n inputs: fncall.inputs,\n params: fncall.params,\n },\n position: positions?.[id] || { x: 250 * index, y: 0 },\n dragHandle: `.${styles.Label}`,\n type: reffedFn?.nodeType || \"Default\",\n });\n\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n // create an edge for each reference\n edges.push({\n id: `${ref.path}-${id}.${ref.name}`,\n source: ref.refNode,\n target: id,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${id}-${ref.name}`,\n });\n });\n });\n\n return { nodes, edges };\n}\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (fn: GraphedFunction) => void;\n}\nfunction FlowInner({ function: fn, engine, onChange }: FlowProps) {\n let [positions, setPositions] = useVariable<\n Record<string, { x: number; y: number }>\n >(\"rules\", `${fn.name}.positions`, {});\n const { nodes: initialNodes, edges: initialEdges } = React.useMemo(() => {\n return createGraph(fn, engine, positions);\n }, [fn, engine]);\n const [nodes, setNodes] = useInner<Node[]>(initialNodes);\n const [edges, setEdges] = useInner<Edge[]>(initialEdges);\n\n // useLayoutNodes();\n\n let updatePosition = (event: React.MouseEvent, node: FunctionNode) => {\n setPositions({ ...positions, [node.id]: node.position });\n };\n\n const onNodesChange = React.useCallback(\n (changes: NodeChange<Node>[]) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n [setNodes]\n );\n const onEdgesChange = React.useCallback(\n (changes: EdgeChange<Edge>[]) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n [setEdges]\n );\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.(\n applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot));\n },\n [setEdges, fn, onChange]\n );\n\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.(\n applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n setNodes((nodesSnapshot) =>\n nodesSnapshot.filter(\n (node) => !nodesToDelete.some((n) => n.id === node.id)\n )\n );\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) =>\n !nodesToDelete.some(\n (n) => n.id === edge.source || n.id === edge.target\n )\n )\n );\n },\n [setNodes, setEdges, onChange, fn]\n );\n\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n onChange?.(newFn);\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) => !edgesToDelete.some((e) => e.id === edge.id)\n )\n );\n },\n [setEdges, onChange, fn]\n );\n\n return (\n <ReactFlow\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={updatePosition}\n onConnect={onConnect}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n deleteKeyCode={\"Delete\"}\n >\n <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({ function: fn, engine, onChange = () => {} }: FlowProps) {\n return (\n <EngineContext.Provider value={engine}>\n <ChangeContext.Provider value={onChange}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n />\n </ReactFlowProvider>\n </ChangeContext.Provider>\n </EngineContext.Provider>\n );\n}\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\n/**\n * using functions\n *\n * in React context\n * - use useFunction. This will build the function, mount it if needed and provides a run function.\n *\n *\n * in Vanilla context\n * - use engine.build(fn) to build the function\n * - use engine.mount(fn) to mount the function (if it has a mount function)\n * - use await engine.run(fn, inputs) to run the function and get the result\n */\n\nexport function useFunction(\n engine: Engine,\n fn: GraphedFunction,\n mount?: boolean\n) {\n const [result, setResult] = React.useState<any>(null);\n const builtFn = React.useMemo(() => engine.build(fn), [fn]);\n React.useEffect(() => {\n if (mount) {\n return engine.mount(builtFn);\n }\n }, [builtFn, mount]);\n\n const run = React.useCallback(\n async (inputs?: Record<string, any>) => {\n const result = await engine.run(builtFn, inputs);\n setResult(result);\n return result;\n },\n [builtFn]\n );\n\n return React.useMemo(\n () => ({\n fn: builtFn,\n run,\n result,\n }),\n [builtFn, run, result]\n );\n}\n"],"names":["graftTree","trimTree","uid","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","Tree","persist","Handle","Position","useInner","applyNodeChanges","applyEdgeChanges","addEdge","ReactFlow","Background","BackgroundVariant","Controls","ReactFlowProvider"],"mappings":"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","x_google_ignoreList":[0]}
@@ -5,6 +5,7 @@ import { Tree } from "../DataTree";
5
5
  export type NormalizedVarDef = {
6
6
  type: string;
7
7
  default?: any;
8
+ label?: string;
8
9
  description?: string;
9
10
  required?: boolean;
10
11
  options?: string[];
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { NodeProps } from "@xyflow/react";
3
+ import { FunctionNode } from "../types";
4
+ export declare const Merge: React.MemoExoticComponent<({ id, data, selected }: NodeProps<FunctionNode>) => React.JSX.Element>;
@@ -2,4 +2,5 @@ export declare const nodeTypes: {
2
2
  Default: import("react").MemoExoticComponent<({ id, data, selected }: import("@xyflow/react").NodeProps<import("..").FunctionNode>) => import("react").JSX.Element>;
3
3
  Calc: import("react").MemoExoticComponent<({ id, data, selected }: import("@xyflow/react").NodeProps<import("..").FunctionNode>) => import("react").JSX.Element>;
4
4
  Log: import("react").MemoExoticComponent<({ id, data, selected }: import("@xyflow/react").NodeProps<import("..").FunctionNode>) => import("react").JSX.Element>;
5
+ Merge: import("react").MemoExoticComponent<({ id, data, selected }: import("@xyflow/react").NodeProps<import("..").FunctionNode>) => import("react").JSX.Element>;
5
6
  };
@@ -0,0 +1,3 @@
1
+ import { PrimitiveFunction } from "../../Engine";
2
+ declare const primitives: Record<string, PrimitiveFunction>;
3
+ export default primitives;
@@ -0,0 +1,2 @@
1
+ import { PrimitiveFunction } from "../../Engine";
2
+ export declare const mergeTree: PrimitiveFunction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rkmodules/rules",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "main": "dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [