@rkmodules/rules 0.0.35 → 0.0.37

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.js CHANGED
@@ -6,6 +6,7 @@ var react = require('@xyflow/react');
6
6
  var reactDnd = require('react-dnd');
7
7
  var katex = require('katex');
8
8
  var classNames = require('classnames');
9
+ var useInner = require('@rkmodules/use-inner');
9
10
  var zustand = require('zustand');
10
11
  var middleware = require('zustand/middleware');
11
12
 
@@ -1466,24 +1467,54 @@ var Engine = /** @class */ (function () {
1466
1467
  return Engine;
1467
1468
  }());
1468
1469
 
1470
+ var dummyEngine = new Engine();
1471
+ var FlowContext = React.createContext({
1472
+ engine: dummyEngine,
1473
+ });
1474
+ var useEngine = function () {
1475
+ return React.useContext(FlowContext).engine;
1476
+ };
1477
+ var useControls = function () {
1478
+ return React.useContext(FlowContext).controls || {};
1479
+ };
1480
+
1481
+ function NumberInput(_a) {
1482
+ var value = _a.value, vardef = _a.vardef, onChange = _a.onChange;
1483
+ console.log(useInner.useInner);
1484
+ var _b = __read(useInner.useInner(value.toString()), 2), internalValue = _b[0], setInternalValue = _b[1];
1485
+ var setValue = React.useCallback(function (v) {
1486
+ setInternalValue(v);
1487
+ }, [onChange, setInternalValue]);
1488
+ var commitValue = React.useCallback(function () {
1489
+ var n = Number(internalValue);
1490
+ if (!isNaN(n)) {
1491
+ onChange === null || onChange === void 0 ? void 0 : onChange(n);
1492
+ }
1493
+ }, [internalValue, onChange]);
1494
+ return (React.createElement("input", { type: "number", value: internalValue, onChange: function (e) { return setValue(e.target.value); }, onBlur: commitValue, min: vardef.min, max: vardef.max, step: vardef.step }));
1495
+ }
1469
1496
  function Control(_a) {
1470
- var value = _a.value, type = _a.type, options = _a.options, onChange = _a.onChange;
1471
- if (options) {
1472
- return (React.createElement("select", { value: value || "", onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value); } }, options.map(function (option) { return (React.createElement("option", { key: option, value: option }, option)); })));
1497
+ var value = _a.value, vardef = _a.vardef, onChange = _a.onChange;
1498
+ var customControls = useControls();
1499
+ if (vardef.type in customControls) {
1500
+ var ControlComponent = customControls[vardef.type];
1501
+ return (React.createElement(ControlComponent, { value: value, vardef: vardef, onChange: onChange }));
1502
+ }
1503
+ if (vardef.options) {
1504
+ return (React.createElement("select", { value: value || "", onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value); } }, vardef.options.map(function (option) { return (React.createElement("option", { key: option, value: option }, option)); })));
1473
1505
  }
1474
- switch (type) {
1475
- case "any":
1506
+ switch (vardef.type) {
1476
1507
  case "string":
1477
1508
  return (React.createElement("input", { type: "text", value: value !== null && value !== void 0 ? value : "", onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value); } }));
1478
1509
  case "number":
1479
- return (React.createElement("input", { type: "number", value: value !== null && value !== void 0 ? value : "", onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(Number(e.target.value)); } }));
1510
+ return (React.createElement(NumberInput, { value: Number(value) || 0, vardef: vardef, onChange: onChange }));
1480
1511
  case "boolean":
1481
1512
  return (React.createElement("input", { type: "checkbox", checked: Boolean(value), onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked); } }));
1482
1513
  default:
1483
1514
  return (React.createElement("span", null,
1484
1515
  String(value),
1485
1516
  " (",
1486
- type,
1517
+ vardef.type,
1487
1518
  ")"));
1488
1519
  }
1489
1520
  }
@@ -1506,7 +1537,7 @@ var Input = function (_a) {
1506
1537
  "--type-color": "var(--color-".concat(normalized.type, ")"),
1507
1538
  }, onClick: onClick },
1508
1539
  normalized.label || name,
1509
- !isRef && (React.createElement(Control, { type: normalized.type, value: value, onChange: handleInputChange(name) }))));
1540
+ !isRef && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleInputChange(name) }))));
1510
1541
  };
1511
1542
 
1512
1543
  var Param = function (_a) {
@@ -1525,7 +1556,7 @@ var Param = function (_a) {
1525
1556
  "--type-color": "var(--color-".concat(normalized.type, ")"),
1526
1557
  }, onClick: onClick },
1527
1558
  React.createElement("span", null, normalized.label || name),
1528
- !isRef && (React.createElement(Control, { type: normalized.type, options: normalized.options, value: value, onChange: handleParamChange(name) }))));
1559
+ !isRef && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleParamChange(name) }))));
1529
1560
  };
1530
1561
 
1531
1562
  var Output = function (_a) {
@@ -1539,12 +1570,6 @@ var Output = function (_a) {
1539
1570
  normalized.label || name)));
1540
1571
  };
1541
1572
 
1542
- var dummyEngine = new Engine();
1543
- var EngineContext = React.createContext(dummyEngine);
1544
- var useEngine = function () {
1545
- return React.useContext(EngineContext);
1546
- };
1547
-
1548
1573
  var styles = {"DefaultNode":"DefaultNode_R2P6c","selected":"selected_VmB-F","active":"active_zjUzx","Log":"Log_dsq5e","Label":"Label_wBwWA","Description":"Description_f9s4l","PreviewHead":"PreviewHead_oFT4K","expanded":"expanded_3vnbi","Preview":"Preview_HbkZ6","Duration":"Duration_0jqWx","GroupHead":"GroupHead_QJhST","GroupChildren":"GroupChildren_NKx-B","GroupLeaf":"GroupLeaf_eliT8"};
1549
1574
 
1550
1575
  function NodeContainer(_a) {
@@ -2110,8 +2135,8 @@ function FlowInner(_a) {
2110
2135
  React.createElement(react.Controls, null)));
2111
2136
  }
2112
2137
  function Flow(_a) {
2113
- var fn = _a.function, engine = _a.engine, _b = _a.onChange, onChange = _b === void 0 ? function () { } : _b, onClick = _a.onClick, onSelect = _a.onSelect;
2114
- return (React.createElement(EngineContext.Provider, { value: engine },
2138
+ var fn = _a.function, engine = _a.engine, _b = _a.onChange, onChange = _b === void 0 ? function () { } : _b, onClick = _a.onClick, onSelect = _a.onSelect, customControls = _a.customControls;
2139
+ return (React.createElement(FlowContext.Provider, { value: { engine: engine, controls: customControls } },
2115
2140
  React.createElement(react.ReactFlowProvider, null,
2116
2141
  React.createElement(FlowInner, { function: fn, engine: engine, onChange: onChange, onClick: onClick, onSelect: onSelect }))));
2117
2142
  }
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/splitGroup.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/mergeGroup.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/Logic/groupAnd.ts","../src/lib/Primitives/Logic/groupOr.ts","../src/lib/Primitives/Logic/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../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/Context.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../src/lib/Flow/Components/ConnectionLine.tsx","../src/lib/Flow/index.tsx","../src/lib/hooks/useDraggableNode.ts","../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 | 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<R>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => R | R[],\n fill?: boolean\n): Tree<R> {\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 let results: R[] = [];\n for (let i = 0; i < 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 results = results.concat(fn(items, paths, i));\n }\n\n return results;\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: (\n itemA: T,\n itemB: U,\n pathA: string,\n pathB: string,\n index: number\n ) => V | 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 description: \"Get a value from an object at a specified path.\",\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 { broadCast } from \"../../DataTree\";\nimport { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n description: \"Outputs a constant value of a specified type\",\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: broadCast(Number(value)) };\n case \"boolean\":\n return { value: broadCast(Boolean(value)) };\n case \"string\":\n return { value: broadCast(String(value)) };\n default:\n // return as is\n return { value: broadCast(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(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA > itemB;\n },\n true\n ),\n gte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA >= itemB;\n },\n true\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(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA < itemB;\n },\n true\n ),\n lte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA <= itemB;\n },\n true\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 splitGroup: PrimitiveFunction = {\n name: \"splitGroup\",\n label: \"Split Group\",\n description: \"Splits every item of a group into its own group\",\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 { binaryOnTreeBranch } 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: {\n type: \"number\",\n default: 0,\n },\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 item: binaryOnTreeBranch(\n inputs.list || {},\n inputs.index || {},\n (branch, indices) => {\n if (indices) {\n return indices.map((i) => branch[i]);\n }\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 mergeGroup: PrimitiveFunction = {\n name: \"mergeGroup\",\n label: \"Merge Group\",\n description: \"Merge the deepest groups into their parent.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: { type: \"number\", default: 1 }, // 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 { splitGroup } from \"./splitGroup\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { mergeGroup } from \"./mergeGroup\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [splitGroup.name]: splitGroup,\n [mergeGroup.name]: mergeGroup,\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: { type: \"number\", default: 1 },\n step: { type: \"number\", default: 1 },\n count: { type: \"number\", default: 10 },\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: \"any\",\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 { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupAnd: PrimitiveFunction = {\n name: \"groupAnd\",\n label: \"Group and\",\n description: \"Returns true if all of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc && val, true)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupOr: PrimitiveFunction = {\n name: \"groupOr\",\n label: \"Group or\",\n description: \"Returns true if any of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc || val, false)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { groupAnd } from \"./groupAnd\";\nimport { groupOr } from \"./groupOr\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [groupAnd.name]: groupAnd,\n [groupOr.name]: groupOr,\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\";\nimport Logic from \"./Logic\";\n\nexport const Lib = { Util, Math, List, Sequence, Tree, Logic };\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n ...Logic,\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 FunctionCall,\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\nexport interface 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 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 result?: RecOfTrees;\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 result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"functionReult\", name, inputs, params, result);\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 result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n console.log(\"Engine run done\", result, context, endTime - startTime);\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 // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n console.log(\"Engine running with inputs\", inputs, mappedInputs);\n const result = await node.impl?.(mappedInputs, {});\n // console.log(\"Engine run complete\", result);\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(oldFn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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\n public applyEdgeDelete(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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\n public applyNodeAdd(\n oldFn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n let id = uid();\n // ensure unique id\n while (newFn.body[id]) {\n id = uid();\n }\n // get inputs defaults\n const inputs = {};\n Object.entries(this.fnIndex[nodeName].inputs || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n inputs[key] = normDef.default;\n }\n }\n );\n // get params defaults\n const params = {};\n Object.entries(this.fnIndex[nodeName].params || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n params[key] = normDef.default;\n }\n }\n );\n const newCall: FunctionCall = {\n name: nodeName,\n inputs: inputs,\n params: params,\n };\n newFn.body[id] = newCall;\n callback?.(newCall, id);\n return topSort(newFn);\n }\n\n public applyNodeConnect(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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 newFn.body[toNode] = to;\n\n return topSort(newFn);\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, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface InputProps {\n name: string;\n varDef: VarDef;\n id: string;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Input = ({ name, varDef, id, data, onClick }: InputProps) => {\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 data.onChange({\n inputs: {\n ...data.inputs,\n [param]: value,\n },\n });\n };\n\n return (\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n {normalized.label || name}\n\n {!isRef && (\n <Control\n type={normalized.type}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface ParamProps {\n id: string;\n name: string;\n varDef: VarDef;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Param = ({ id, name, varDef, data, onClick }: ParamProps) => {\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 data.onChange({\n params: {\n ...data.params,\n [param]: value,\n },\n });\n };\n\n return (\n <div\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>{normalized.label || name}</span>\n {!isRef && (\n <Control\n type={normalized.type}\n options={normalized.options}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface OutputProps {\n name: string;\n varDef: VarDef;\n id: string;\n onClick?: (e: React.MouseEvent) => void;\n focus?: boolean;\n}\nexport const Output = ({ name, varDef, id, onClick, focus }: OutputProps) => {\n const normalized = normalizeVarDef(varDef);\n\n return (\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n className={classNames(\n styles.Output,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>\n {focus && \"👁 \"}\n {normalized.label || name}\n </span>\n </Handle>\n );\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","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 timer;\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 clearTimeout(timer);\n timer = 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\";\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\ninterface TreeTableProps {\n value: Tree<any> | null;\n}\nfunction TreeTable({ value }: TreeTableProps) {\n return (\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 title={JSON.stringify(item, null, 2)}>\n {item?.toString?.()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n );\n}\n\ntype TreeNode<T> = { items: T[] };\ntype TreeBranch<T> = (TreeNode<T> | TreeBranch<T>)[];\n\nfunction createTreeStructure<T = any>(tree: Tree<T>) {\n const keys = Object.keys(tree);\n let structure: any = [];\n\n keys.forEach((key) => {\n let path = key.split(\";\");\n let parent = structure;\n\n for (let i = 0; i < path.length; i++) {\n let part = parseInt(path[i], 10);\n if (!parent[part]) {\n parent[part] = [];\n }\n parent = parent[part];\n }\n parent.push({ items: tree[key] });\n });\n\n return structure as TreeBranch<T>;\n}\n\nfunction TreeBranchView({ branch, name }) {\n return (\n <div>\n <div className={styles.GroupHead}>\n <span>group {name}</span>\n </div>\n <div className={styles.GroupChildren}>\n {branch.map((item, index) => {\n // sub branch\n if (Array.isArray(item)) {\n return (\n <TreeBranchView\n key={index}\n branch={item}\n name={`${name};${index}`}\n />\n );\n }\n // items\n return (\n <div key={index}>\n {item.items.map((it, i) => {\n let label = it?.toString?.();\n if (label === \"[object Object]\") {\n label = \"{...}\";\n }\n return (\n <div\n key={i}\n className={styles.GroupLeaf}\n title={JSON.stringify(it, null, 2)}\n >\n {label}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface TreeViewProps {\n value: Tree<any> | null;\n}\nexport function TreeView({ value }: TreeViewProps) {\n let structure = createTreeStructure(value || {});\n\n return (\n <div>\n {structure.map((branch, index) => (\n <TreeBranchView key={index} branch={branch} name={index} />\n ))}\n </div>\n );\n}\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\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 return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n {/* <TreeTable value={value} /> */}\n <TreeView value={value} />\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 classNames from \"classnames\";\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 { RecOfTrees, VarDef } from \"../../Engine\";\nimport { useEngine } from \"../Context\";\nimport { TreeView } from \"../Nodes/Log\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\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}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n}: GenericNodeProps) {\n const inputEntries = Object.entries(inputs || data.inputDefs || {});\n const outputEntries = Object.entries(outputs || data.outputDefs || {});\n const paramEntries = Object.entries(params || data.paramDefs || {});\n\n const engine = useEngine();\n const [result, setResult] = React.useState<RecOfTrees>({});\n const [duration, setDuration] = React.useState<number | null>(null);\n const [focus, setFocus] = React.useState<string | null>(\n outputEntries[0]?.[0] || null\n );\n const [showPreview, setShowPreview] = React.useState(false);\n\n const previewValue = focus ? result[focus] : Object.values(result)[0];\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setResult(event.result || {});\n setDuration(event.duration || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer label={data.label} selected={selected} id={id}>\n <div className={styles.Description}>{data.description}</div>\n {children}\n <div className={styles.Ports}>\n {outputEntries.map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n onClick={() => setFocus(name)}\n focus={showPreview && focus === name}\n />\n ))}\n {inputEntries.map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n\n {paramEntries.map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n <div\n className={classNames(styles.PreviewHead, {\n [styles.expanded]: showPreview,\n })}\n onClick={() => setShowPreview(!showPreview)}\n >\n Preview\n </div>\n {showPreview && (\n <div className={styles.Preview}>\n <TreeView value={previewValue} />\n {duration && (\n <div className={styles.Duration}>\n {duration.toFixed(2)} ms\n </div>\n )}\n </div>\n )}\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 { FunctionNode } from \"../types\";\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 let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(data.inputDefs || {}) };\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 >\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 { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n return <GenericNode id={id} data={data} selected={selected} />;\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\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 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 = { ...(data.outputDefs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <div className={styles.Ports}>\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 />\n ))}\n </div>\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 { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ntype Updater<T> = (oldValue: T) => T;\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 let key = `${scope}|${name}`;\n if (persist) {\n let oldData = pget().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n pset({ data });\n } else {\n let oldData = get().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\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 | Updater<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 { GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { useVariable } from \"./useVariable\";\n\ntype Point = { x: number; y: number };\n\nexport function usePositions(fn: GraphedFunction) {\n return useVariable<Record<string, Point>>(\n \"rules\",\n `${fn.name}.positions`,\n {}\n );\n}\n\nexport function useUpdatePositions(fn: GraphedFunction) {\n let [positions, setPositions] = usePositions(fn);\n return React.useCallback(\n (id: string, position: Point) => {\n positions[id] = position;\n setPositions(positions);\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport {\n Engine,\n FunctionCall,\n getReferences,\n GraphedFunction,\n Ref,\n VarRef,\n} from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { create } from \"zustand\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\n// helpers\nfunction updateNodeArguments(\n node: FunctionNode,\n inputs?: VarRef,\n params?: VarRef\n) {\n return {\n ...node,\n data: {\n ...node.data,\n inputs,\n params,\n },\n };\n}\n\n/**\n * TODO: replace this whole thing with a zustand state\n * - whenever the outer function changes, update the inner node graph\n * - but do so useing shallow comparison, so only update changed nodes\n * - also store the node positions in the zustand state, so they are not lost on rerender\n *\n * - state is not persisted in local storage, that is the job of the outer function variable in the page\n */\n\ninterface FlowOptions {\n dragHandle?: string;\n positions?: PositionData;\n onDataChange?: (\n id: string\n ) => (newData: Partial<FunctionNode[\"data\"]>) => void;\n}\n\ninterface FlowState {\n engine: Engine | null;\n fn: GraphedFunction | null;\n options: FlowOptions;\n nodes: FunctionNode[];\n edges: Edge[];\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => void;\n setEdges: (updater: (edges: Edge[]) => Edge[]) => void;\n setFn: (fn: GraphedFunction) => void;\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => void;\n}\n\n/**\n * flow state stores nodes and edges for the flow graph these can be updated when the function changes\n * using setFn\n */\nconst useFlowState = create<FlowState>((set, get) => ({\n engine: null,\n fn: null,\n options: {},\n nodes: [],\n edges: [],\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => {\n set((state) => ({ nodes: updater(state.nodes) }));\n },\n setEdges: (updater: (edges: Edge[]) => Edge[]) => {\n set((state) => ({ edges: updater(state.edges) }));\n },\n setFn: (fn: GraphedFunction) => {\n // console.log(\"setFn\", fn);\n let { fn: oldFn, nodes, edges, engine, options } = get();\n // update the graph by shallow comparison\n\n if (!engine) {\n throw new Error(\"Engine not set\");\n }\n\n let oldKeys = Object.keys(oldFn?.body || {});\n let newKeys = Object.keys(fn.body || {});\n\n // remove all the nodes that were removed\n nodes = nodes?.filter((node) => newKeys.includes(node.id));\n // remove all the edges that were removed\n edges = edges?.filter((edge) => {\n return (\n newKeys.includes(edge.source) && newKeys.includes(edge.target)\n );\n });\n\n // create the new nodes that were added\n let addedKeys = newKeys.filter((key) => !oldKeys.includes(key));\n addedKeys.forEach((key, index) => {\n let fncall = fn.body?.[key];\n\n // add the node\n nodes.push(createNode(engine, key, fncall, options));\n\n // add edges\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // update the changed nodes\n let changedKeys = newKeys.filter((key) => {\n // shallow comparison\n return fn.body?.[key] !== oldFn?.body?.[key];\n });\n // console.log(\"changed keys\", changedKeys);\n changedKeys.forEach((key) => {\n // update the nodes that were changed\n let fncall = fn.body?.[key];\n nodes = nodes?.map((n) => {\n if (n.id === key) {\n return updateNodeArguments(n, fncall.inputs, fncall.params);\n }\n return n;\n });\n\n // update incoming edges\n const refs = getReferences(fncall.inputs || {});\n // remove all incoming edges\n edges = edges?.filter((e) => e.target !== key);\n // add the edge\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // console.log(\"final graph\", nodes, edges);\n\n // update the function, nodes and edges\n set({ fn, nodes, edges });\n },\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => {\n // console.log(\"initing\");\n set({ engine, options });\n get().setFn(fn);\n },\n}));\n\n/**\n * creates a flow state and provides handlers to update nodes and edges\n */\nexport function useFlow(\n fn: GraphedFunction,\n engine: Engine,\n options: FlowOptions\n) {\n let state = useFlowState();\n\n React.useEffect(() => {\n state.init(fn, engine, options);\n }, [engine]);\n\n React.useEffect(() => {\n state.setFn(fn);\n }, [fn]);\n\n return React.useMemo(\n () => ({\n nodes: state.nodes,\n edges: state.edges,\n setNodes: state.setNodes,\n setEdges: state.setEdges,\n }),\n [state]\n );\n}\n\nfunction createNode(\n engine: Engine,\n id: string,\n fncall: FunctionCall,\n options: FlowOptions\n): FunctionNode {\n const calledFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n return {\n id,\n data: {\n name: fncall.name,\n label: fncall.label || calledFn?.label || fncall.name,\n description: calledFn?.description,\n inputs: fncall.inputs,\n params: fncall.params,\n inputDefs: calledFn?.inputs || {},\n paramDefs: calledFn?.params || {},\n outputDefs: calledFn?.outputs || {},\n onChange: options.onDataChange?.(id) || (() => {}),\n },\n position: options.positions?.[id] || { x: 0, y: 0 },\n dragHandle: options.dragHandle,\n type: calledFn?.nodeType || \"Default\",\n };\n}\n\nfunction createEdge(nodeId: string, ref: Ref): Edge {\n return {\n id: `${ref.path}-${nodeId}.${ref.name}`,\n source: ref.refNode,\n target: nodeId,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${nodeId}-${ref.name}`,\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n ConnectionLineComponentProps,\n getSimpleBezierPath,\n Position,\n useConnection,\n} from \"@xyflow/react\";\n\nimport styles from \"./NodeComponents.module.css\";\n\nexport default ({\n fromX,\n fromY,\n toX,\n toY,\n fromHandle,\n fromNode,\n connectionStatus,\n}: ConnectionLineComponentProps) => {\n const { toNode, toHandle } = useConnection();\n\n // correcting the start point as we moved the nodes in our custom ports\n if (fromNode && fromHandle) {\n fromX = fromNode?.position.x + fromHandle.x;\n if (fromHandle.position === \"right\") {\n fromX += fromHandle.width;\n }\n }\n\n if (toNode && toHandle) {\n toX = toHandle.x - toHandle.width / 2; // align to left side of the handle\n if (toHandle.position === \"right\") {\n toX += toHandle.width;\n }\n }\n\n let d = getSimpleBezierPath({\n sourceX: fromX,\n sourceY: fromY,\n targetX: toX,\n targetY: toY,\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n });\n\n return (\n <g\n className={classNames(\n styles.ConnectionPath,\n \"react-flow__connection-path\",\n { [styles.valid]: connectionStatus === \"valid\" }\n )}\n >\n <path d={d[0]} />\n </g>\n );\n};\n","import React from \"react\";\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n Node,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useOnSelectionChange,\n XYPosition,\n} from \"@xyflow/react\";\nimport { useDrop } from \"react-dnd\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { EngineContext } from \"./Context\";\nimport { usePositions, useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\nimport { FunctionNode, NodeDropItem, Updater } from \"./types\";\nimport ConnectionLine from \"./Components/ConnectionLine\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\n/**\n * goal: this component should only be responsible for updating the inner node graph, it should call the onChange handler\n * on any change, but not rerender when the given function changes, as it slows down the interface drastically\n */\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (updater: Updater<GraphedFunction>) => void;\n onClick?: (event: React.MouseEvent, position: XYPosition) => void;\n onSelect?: (ids: string[]) => void;\n}\nfunction FlowInner({\n function: fn,\n engine,\n onChange,\n onClick,\n onSelect,\n}: FlowProps) {\n const [instance, setInstance] = React.useState<ReactFlowInstance | null>(\n null\n );\n\n let updatePosition = useUpdatePositions(fn);\n let [positions] = usePositions(fn);\n\n const handleDataChange =\n (id: string) => (newData: Partial<FunctionNode[\"data\"]>) => {\n onChange?.((fn) => {\n // update the function definition\n // console.log(\"before fn call update\", Object.keys(fn.body));\n const body = { ...fn.body };\n const fncall = { ...(body[id] || {}), ...newData };\n body[id] = fncall;\n // console.log(\"after fn call update\", Object.keys(body));\n const updatedFn = { ...fn, body };\n return updatedFn;\n });\n };\n\n let { nodes, edges, setNodes, setEdges } = useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n positions,\n onDataChange: handleDataChange,\n });\n\n // node selection handler\n const handleSelect = React.useCallback(\n ({ nodes }) => {\n onSelect?.(nodes.map((n: Node) => n.id) || []);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleSelect,\n });\n\n // dropping nodes\n let [{ isOver }, drop] = useDrop({\n accept: \"flow-node\",\n drop: (item: NodeDropItem, monitor) => {\n let pos = monitor.getClientOffset();\n\n if (instance && pos) {\n const position = instance.screenToFlowPosition(pos);\n // console.log(\"handle drop\", position);\n\n onChange?.((fn) => {\n return engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n // console.log(\"node added\", id, position);\n updatePosition(id, position);\n });\n });\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // connecting nodes\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?.((fn) =>\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n },\n [fn, onChange]\n );\n\n // deleting nodes\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.((fn) =>\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n },\n [onChange, fn]\n );\n\n // deleting edges\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n onChange?.((fn) => {\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 = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n return newFn;\n });\n },\n [onChange, fn]\n );\n\n // handle canvas clicks to be able to place nodes\n const handleClick = (e: React.MouseEvent) => {\n if (instance) {\n const position = instance.screenToFlowPosition({\n x: e.clientX,\n y: e.clientY,\n });\n onClick?.(e, position);\n }\n };\n\n const onNodesChange = React.useCallback(\n (changes) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n []\n );\n const onEdgesChange = React.useCallback(\n (changes) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n []\n );\n\n return (\n <ReactFlow\n ref={drop as any}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={(e, n) => updatePosition(n.id, n.position)}\n onConnect={onConnect}\n onInit={setInstance}\n onPaneClick={handleClick}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n maxZoom={4}\n deleteKeyCode={\"Delete\"}\n connectionLineComponent={ConnectionLine}\n >\n <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({\n function: fn,\n engine,\n onChange = () => {},\n onClick,\n onSelect,\n}: FlowProps) {\n return (\n <EngineContext.Provider value={engine}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n onClick={onClick}\n onSelect={onSelect}\n />\n </ReactFlowProvider>\n </EngineContext.Provider>\n );\n}\n","import { ConnectableElement, useDrag } from \"react-dnd\";\n\nimport { PrimitiveFunction } from \"../Engine\";\nimport { NodeDropItem } from \"../Flow\";\n\nexport function useDraggableNode(name: string, fn: PrimitiveFunction) {\n let [, drag] = useDrag<NodeDropItem>({\n type: \"flow-node\",\n item: { name, fn },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n return (ref: ConnectableElement) => drag(ref);\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":["uid","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","Logic","Tree","Handle","Position","styles","persist","useConnection","getSimpleBezierPath","useOnSelectionChange","useDrop","applyNodeChanges","applyEdgeChanges","ReactFlow","Background","BackgroundVariant","Controls","ReactFlowProvider","useDrag"],"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/splitGroup.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/mergeGroup.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/Logic/groupAnd.ts","../src/lib/Primitives/Logic/groupOr.ts","../src/lib/Primitives/Logic/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/Flow/Context.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/NodeContainer.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../src/lib/Flow/Components/ConnectionLine.tsx","../src/lib/Flow/index.tsx","../src/lib/hooks/useDraggableNode.ts","../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 | 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<R>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => R | R[],\n fill?: boolean\n): Tree<R> {\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 let results: R[] = [];\n for (let i = 0; i < 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 results = results.concat(fn(items, paths, i));\n }\n\n return results;\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: (\n itemA: T,\n itemB: U,\n pathA: string,\n pathB: string,\n index: number\n ) => V | 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 description: \"Get a value from an object at a specified path.\",\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 { broadCast } from \"../../DataTree\";\nimport { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n description: \"Outputs a constant value of a specified type\",\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: broadCast(Number(value)) };\n case \"boolean\":\n return { value: broadCast(Boolean(value)) };\n case \"string\":\n return { value: broadCast(String(value)) };\n default:\n // return as is\n return { value: broadCast(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(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA > itemB;\n },\n true\n ),\n gte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA >= itemB;\n },\n true\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(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA < itemB;\n },\n true\n ),\n lte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA <= itemB;\n },\n true\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 splitGroup: PrimitiveFunction = {\n name: \"splitGroup\",\n label: \"Split Group\",\n description: \"Splits every item of a group into its own group\",\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 { binaryOnTreeBranch } 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: {\n type: \"number\",\n default: 0,\n },\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 item: binaryOnTreeBranch(\n inputs.list || {},\n inputs.index || {},\n (branch, indices) => {\n if (indices) {\n return indices.map((i) => branch[i]);\n }\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 mergeGroup: PrimitiveFunction = {\n name: \"mergeGroup\",\n label: \"Merge Group\",\n description: \"Merge the deepest groups into their parent.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: { type: \"number\", default: 1 }, // 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 { splitGroup } from \"./splitGroup\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { mergeGroup } from \"./mergeGroup\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [splitGroup.name]: splitGroup,\n [mergeGroup.name]: mergeGroup,\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: { type: \"number\", default: 1 },\n step: { type: \"number\", default: 1 },\n count: { type: \"number\", default: 10 },\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: \"any\",\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 { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupAnd: PrimitiveFunction = {\n name: \"groupAnd\",\n label: \"Group and\",\n description: \"Returns true if all of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc && val, true)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupOr: PrimitiveFunction = {\n name: \"groupOr\",\n label: \"Group or\",\n description: \"Returns true if any of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc || val, false)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { groupAnd } from \"./groupAnd\";\nimport { groupOr } from \"./groupOr\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [groupAnd.name]: groupAnd,\n [groupOr.name]: groupOr,\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\";\nimport Logic from \"./Logic\";\n\nexport const Lib = { Util, Math, List, Sequence, Tree, Logic };\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n ...Logic,\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 FunctionCall,\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\nexport interface 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 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 result?: RecOfTrees;\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 result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"functionReult\", name, inputs, params, result);\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 result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n console.log(\"Engine run done\", result, context, endTime - startTime);\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 // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n console.log(\"Engine running with inputs\", inputs, mappedInputs);\n const result = await node.impl?.(mappedInputs, {});\n // console.log(\"Engine run complete\", result);\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(oldFn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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\n public applyEdgeDelete(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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\n public applyNodeAdd(\n oldFn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n let id = uid();\n // ensure unique id\n while (newFn.body[id]) {\n id = uid();\n }\n // get inputs defaults\n const inputs = {};\n Object.entries(this.fnIndex[nodeName].inputs || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n inputs[key] = normDef.default;\n }\n }\n );\n // get params defaults\n const params = {};\n Object.entries(this.fnIndex[nodeName].params || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n params[key] = normDef.default;\n }\n }\n );\n const newCall: FunctionCall = {\n name: nodeName,\n inputs: inputs,\n params: params,\n };\n newFn.body[id] = newCall;\n callback?.(newCall, id);\n return topSort(newFn);\n }\n\n public applyNodeConnect(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.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 newFn.body[toNode] = to;\n\n return topSort(newFn);\n }\n}\n","import React from \"react\";\nimport { Engine } from \"../Engine\";\nimport { WidgetProps } from \"./Components/Control\";\n\nconst dummyEngine = new Engine();\n\ntype FlowContextState = {\n engine: Engine;\n controls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n};\n\nexport const FlowContext = React.createContext<FlowContextState>({\n engine: dummyEngine,\n});\n\nexport const useEngine = () => {\n return React.useContext(FlowContext).engine;\n};\n\nexport const useControls = () => {\n return React.useContext(FlowContext).controls || {};\n};\n","import React from \"react\";\nimport { useInner } from \"@rkmodules/use-inner\";\nimport { NormalizedVarDef } from \"../../Engine\";\nimport { useControls } from \"../Context\";\n\nexport interface WidgetProps<T> {\n value: T;\n vardef: NormalizedVarDef;\n onChange?: (value: T) => void;\n}\n\nfunction NumberInput({ value, vardef, onChange }: WidgetProps<number>) {\n console.log(useInner);\n let [internalValue, setInternalValue] = useInner(value.toString());\n let setValue = React.useCallback(\n (v: string) => {\n setInternalValue(v);\n },\n [onChange, setInternalValue]\n );\n let commitValue = React.useCallback(() => {\n let n = Number(internalValue);\n if (!isNaN(n)) {\n onChange?.(n);\n }\n }, [internalValue, onChange]);\n return (\n <input\n type=\"number\"\n value={internalValue}\n onChange={(e) => setValue(e.target.value)}\n onBlur={commitValue}\n min={vardef.min}\n max={vardef.max}\n step={vardef.step}\n />\n );\n}\n\ninterface ControlProps {\n value: any;\n vardef: NormalizedVarDef;\n onChange?: (value: any) => void;\n}\nexport function Control({ value, vardef, onChange }: ControlProps) {\n const customControls = useControls();\n if (vardef.type in customControls) {\n const ControlComponent = customControls[\n vardef.type\n ] as React.ComponentType<WidgetProps<any>>;\n return (\n <ControlComponent\n value={value}\n vardef={vardef}\n onChange={onChange}\n />\n );\n }\n if (vardef.options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {vardef.options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (vardef.type) {\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 <NumberInput\n value={Number(value) || 0}\n vardef={vardef}\n onChange={onChange}\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)} ({vardef.type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface InputProps {\n name: string;\n varDef: VarDef;\n id: string;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Input = ({ name, varDef, id, data, onClick }: InputProps) => {\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 data.onChange({\n inputs: {\n ...data.inputs,\n [param]: value,\n },\n });\n };\n\n return (\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n {normalized.label || name}\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface ParamProps {\n id: string;\n name: string;\n varDef: VarDef;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Param = ({ id, name, varDef, data, onClick }: ParamProps) => {\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 data.onChange({\n params: {\n ...data.params,\n [param]: value,\n },\n });\n };\n\n return (\n <div\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>{normalized.label || name}</span>\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface OutputProps {\n name: string;\n varDef: VarDef;\n id: string;\n onClick?: (e: React.MouseEvent) => void;\n focus?: boolean;\n}\nexport const Output = ({ name, varDef, id, onClick, focus }: OutputProps) => {\n const normalized = normalizeVarDef(varDef);\n\n return (\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n className={classNames(\n styles.Output,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>\n {focus && \"👁 \"}\n {normalized.label || name}\n </span>\n </Handle>\n );\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 timer;\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 clearTimeout(timer);\n timer = 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\";\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\ninterface TreeTableProps {\n value: Tree<any> | null;\n}\nfunction TreeTable({ value }: TreeTableProps) {\n return (\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 title={JSON.stringify(item, null, 2)}>\n {item?.toString?.()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n );\n}\n\ntype TreeNode<T> = { items: T[] };\ntype TreeBranch<T> = (TreeNode<T> | TreeBranch<T>)[];\n\nfunction createTreeStructure<T = any>(tree: Tree<T>) {\n const keys = Object.keys(tree);\n let structure: any = [];\n\n keys.forEach((key) => {\n let path = key.split(\";\");\n let parent = structure;\n\n for (let i = 0; i < path.length; i++) {\n let part = parseInt(path[i], 10);\n if (!parent[part]) {\n parent[part] = [];\n }\n parent = parent[part];\n }\n parent.push({ items: tree[key] });\n });\n\n return structure as TreeBranch<T>;\n}\n\nfunction TreeBranchView({ branch, name }) {\n return (\n <div>\n <div className={styles.GroupHead}>\n <span>group {name}</span>\n </div>\n <div className={styles.GroupChildren}>\n {branch.map((item, index) => {\n // sub branch\n if (Array.isArray(item)) {\n return (\n <TreeBranchView\n key={index}\n branch={item}\n name={`${name};${index}`}\n />\n );\n }\n // items\n return (\n <div key={index}>\n {item.items.map((it, i) => {\n let label = it?.toString?.();\n if (label === \"[object Object]\") {\n label = \"{...}\";\n }\n return (\n <div\n key={i}\n className={styles.GroupLeaf}\n title={JSON.stringify(it, null, 2)}\n >\n {label}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface TreeViewProps {\n value: Tree<any> | null;\n}\nexport function TreeView({ value }: TreeViewProps) {\n let structure = createTreeStructure(value || {});\n\n return (\n <div>\n {structure.map((branch, index) => (\n <TreeBranchView key={index} branch={branch} name={index} />\n ))}\n </div>\n );\n}\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\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 return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n {/* <TreeTable value={value} /> */}\n <TreeView value={value} />\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 classNames from \"classnames\";\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 { RecOfTrees, VarDef } from \"../../Engine\";\nimport { useEngine } from \"../Context\";\nimport { TreeView } from \"../Nodes/Log\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\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}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n}: GenericNodeProps) {\n const inputEntries = Object.entries(inputs || data.inputDefs || {});\n const outputEntries = Object.entries(outputs || data.outputDefs || {});\n const paramEntries = Object.entries(params || data.paramDefs || {});\n\n const engine = useEngine();\n const [result, setResult] = React.useState<RecOfTrees>({});\n const [duration, setDuration] = React.useState<number | null>(null);\n const [focus, setFocus] = React.useState<string | null>(\n outputEntries[0]?.[0] || null\n );\n const [showPreview, setShowPreview] = React.useState(false);\n\n const previewValue = focus ? result[focus] : Object.values(result)[0];\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setResult(event.result || {});\n setDuration(event.duration || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer label={data.label} selected={selected} id={id}>\n <div className={styles.Description}>{data.description}</div>\n {children}\n <div className={styles.Ports}>\n {outputEntries.map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n onClick={() => setFocus(name)}\n focus={showPreview && focus === name}\n />\n ))}\n {inputEntries.map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n\n {paramEntries.map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n <div\n className={classNames(styles.PreviewHead, {\n [styles.expanded]: showPreview,\n })}\n onClick={() => setShowPreview(!showPreview)}\n >\n Preview\n </div>\n {showPreview && (\n <div className={styles.Preview}>\n <TreeView value={previewValue} />\n {duration && (\n <div className={styles.Duration}>\n {duration.toFixed(2)} ms\n </div>\n )}\n </div>\n )}\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 { FunctionNode } from \"../types\";\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 let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(data.inputDefs || {}) };\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 >\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 { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n return <GenericNode id={id} data={data} selected={selected} />;\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\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 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 = { ...(data.outputDefs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <div className={styles.Ports}>\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 />\n ))}\n </div>\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 { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ntype Updater<T> = (oldValue: T) => T;\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 let key = `${scope}|${name}`;\n if (persist) {\n let oldData = pget().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n pset({ data });\n } else {\n let oldData = get().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\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 | Updater<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 { GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { useVariable } from \"./useVariable\";\n\ntype Point = { x: number; y: number };\n\nexport function usePositions(fn: GraphedFunction) {\n return useVariable<Record<string, Point>>(\n \"rules\",\n `${fn.name}.positions`,\n {}\n );\n}\n\nexport function useUpdatePositions(fn: GraphedFunction) {\n let [positions, setPositions] = usePositions(fn);\n return React.useCallback(\n (id: string, position: Point) => {\n positions[id] = position;\n setPositions(positions);\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport {\n Engine,\n FunctionCall,\n getReferences,\n GraphedFunction,\n Ref,\n VarRef,\n} from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { create } from \"zustand\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\n// helpers\nfunction updateNodeArguments(\n node: FunctionNode,\n inputs?: VarRef,\n params?: VarRef\n) {\n return {\n ...node,\n data: {\n ...node.data,\n inputs,\n params,\n },\n };\n}\n\n/**\n * TODO: replace this whole thing with a zustand state\n * - whenever the outer function changes, update the inner node graph\n * - but do so useing shallow comparison, so only update changed nodes\n * - also store the node positions in the zustand state, so they are not lost on rerender\n *\n * - state is not persisted in local storage, that is the job of the outer function variable in the page\n */\n\ninterface FlowOptions {\n dragHandle?: string;\n positions?: PositionData;\n onDataChange?: (\n id: string\n ) => (newData: Partial<FunctionNode[\"data\"]>) => void;\n}\n\ninterface FlowState {\n engine: Engine | null;\n fn: GraphedFunction | null;\n options: FlowOptions;\n nodes: FunctionNode[];\n edges: Edge[];\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => void;\n setEdges: (updater: (edges: Edge[]) => Edge[]) => void;\n setFn: (fn: GraphedFunction) => void;\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => void;\n}\n\n/**\n * flow state stores nodes and edges for the flow graph these can be updated when the function changes\n * using setFn\n */\nconst useFlowState = create<FlowState>((set, get) => ({\n engine: null,\n fn: null,\n options: {},\n nodes: [],\n edges: [],\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => {\n set((state) => ({ nodes: updater(state.nodes) }));\n },\n setEdges: (updater: (edges: Edge[]) => Edge[]) => {\n set((state) => ({ edges: updater(state.edges) }));\n },\n setFn: (fn: GraphedFunction) => {\n // console.log(\"setFn\", fn);\n let { fn: oldFn, nodes, edges, engine, options } = get();\n // update the graph by shallow comparison\n\n if (!engine) {\n throw new Error(\"Engine not set\");\n }\n\n let oldKeys = Object.keys(oldFn?.body || {});\n let newKeys = Object.keys(fn.body || {});\n\n // remove all the nodes that were removed\n nodes = nodes?.filter((node) => newKeys.includes(node.id));\n // remove all the edges that were removed\n edges = edges?.filter((edge) => {\n return (\n newKeys.includes(edge.source) && newKeys.includes(edge.target)\n );\n });\n\n // create the new nodes that were added\n let addedKeys = newKeys.filter((key) => !oldKeys.includes(key));\n addedKeys.forEach((key, index) => {\n let fncall = fn.body?.[key];\n\n // add the node\n nodes.push(createNode(engine, key, fncall, options));\n\n // add edges\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // update the changed nodes\n let changedKeys = newKeys.filter((key) => {\n // shallow comparison\n return fn.body?.[key] !== oldFn?.body?.[key];\n });\n // console.log(\"changed keys\", changedKeys);\n changedKeys.forEach((key) => {\n // update the nodes that were changed\n let fncall = fn.body?.[key];\n nodes = nodes?.map((n) => {\n if (n.id === key) {\n return updateNodeArguments(n, fncall.inputs, fncall.params);\n }\n return n;\n });\n\n // update incoming edges\n const refs = getReferences(fncall.inputs || {});\n // remove all incoming edges\n edges = edges?.filter((e) => e.target !== key);\n // add the edge\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // console.log(\"final graph\", nodes, edges);\n\n // update the function, nodes and edges\n set({ fn, nodes, edges });\n },\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => {\n // console.log(\"initing\");\n set({ engine, options });\n get().setFn(fn);\n },\n}));\n\n/**\n * creates a flow state and provides handlers to update nodes and edges\n */\nexport function useFlow(\n fn: GraphedFunction,\n engine: Engine,\n options: FlowOptions\n) {\n let state = useFlowState();\n\n React.useEffect(() => {\n state.init(fn, engine, options);\n }, [engine]);\n\n React.useEffect(() => {\n state.setFn(fn);\n }, [fn]);\n\n return React.useMemo(\n () => ({\n nodes: state.nodes,\n edges: state.edges,\n setNodes: state.setNodes,\n setEdges: state.setEdges,\n }),\n [state]\n );\n}\n\nfunction createNode(\n engine: Engine,\n id: string,\n fncall: FunctionCall,\n options: FlowOptions\n): FunctionNode {\n const calledFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n return {\n id,\n data: {\n name: fncall.name,\n label: fncall.label || calledFn?.label || fncall.name,\n description: calledFn?.description,\n inputs: fncall.inputs,\n params: fncall.params,\n inputDefs: calledFn?.inputs || {},\n paramDefs: calledFn?.params || {},\n outputDefs: calledFn?.outputs || {},\n onChange: options.onDataChange?.(id) || (() => {}),\n },\n position: options.positions?.[id] || { x: 0, y: 0 },\n dragHandle: options.dragHandle,\n type: calledFn?.nodeType || \"Default\",\n };\n}\n\nfunction createEdge(nodeId: string, ref: Ref): Edge {\n return {\n id: `${ref.path}-${nodeId}.${ref.name}`,\n source: ref.refNode,\n target: nodeId,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${nodeId}-${ref.name}`,\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n ConnectionLineComponentProps,\n getSimpleBezierPath,\n Position,\n useConnection,\n} from \"@xyflow/react\";\n\nimport styles from \"./NodeComponents.module.css\";\n\nexport default ({\n fromX,\n fromY,\n toX,\n toY,\n fromHandle,\n fromNode,\n connectionStatus,\n}: ConnectionLineComponentProps) => {\n const { toNode, toHandle } = useConnection();\n\n // correcting the start point as we moved the nodes in our custom ports\n if (fromNode && fromHandle) {\n fromX = fromNode?.position.x + fromHandle.x;\n if (fromHandle.position === \"right\") {\n fromX += fromHandle.width;\n }\n }\n\n if (toNode && toHandle) {\n toX = toHandle.x - toHandle.width / 2; // align to left side of the handle\n if (toHandle.position === \"right\") {\n toX += toHandle.width;\n }\n }\n\n let d = getSimpleBezierPath({\n sourceX: fromX,\n sourceY: fromY,\n targetX: toX,\n targetY: toY,\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n });\n\n return (\n <g\n className={classNames(\n styles.ConnectionPath,\n \"react-flow__connection-path\",\n { [styles.valid]: connectionStatus === \"valid\" }\n )}\n >\n <path d={d[0]} />\n </g>\n );\n};\n","import React from \"react\";\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n Node,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useOnSelectionChange,\n XYPosition,\n} from \"@xyflow/react\";\nimport { useDrop } from \"react-dnd\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { FlowContext } from \"./Context\";\nimport { WidgetProps } from \"./Components/Control\";\nimport { usePositions, useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\nimport { FunctionNode, NodeDropItem, Updater } from \"./types\";\nimport ConnectionLine from \"./Components/ConnectionLine\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\n/**\n * goal: this component should only be responsible for updating the inner node graph, it should call the onChange handler\n * on any change, but not rerender when the given function changes, as it slows down the interface drastically\n */\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (updater: Updater<GraphedFunction>) => void;\n onClick?: (event: React.MouseEvent, position: XYPosition) => void;\n onSelect?: (ids: string[]) => void;\n customControls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n}\nfunction FlowInner({\n function: fn,\n engine,\n onChange,\n onClick,\n onSelect,\n}: FlowProps) {\n const [instance, setInstance] = React.useState<ReactFlowInstance | null>(\n null\n );\n\n let updatePosition = useUpdatePositions(fn);\n let [positions] = usePositions(fn);\n\n const handleDataChange =\n (id: string) => (newData: Partial<FunctionNode[\"data\"]>) => {\n onChange?.((fn) => {\n // update the function definition\n // console.log(\"before fn call update\", Object.keys(fn.body));\n const body = { ...fn.body };\n const fncall = { ...(body[id] || {}), ...newData };\n body[id] = fncall;\n // console.log(\"after fn call update\", Object.keys(body));\n const updatedFn = { ...fn, body };\n return updatedFn;\n });\n };\n\n let { nodes, edges, setNodes, setEdges } = useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n positions,\n onDataChange: handleDataChange,\n });\n\n // node selection handler\n const handleSelect = React.useCallback(\n ({ nodes }) => {\n onSelect?.(nodes.map((n: Node) => n.id) || []);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleSelect,\n });\n\n // dropping nodes\n let [{ isOver }, drop] = useDrop({\n accept: \"flow-node\",\n drop: (item: NodeDropItem, monitor) => {\n let pos = monitor.getClientOffset();\n\n if (instance && pos) {\n const position = instance.screenToFlowPosition(pos);\n // console.log(\"handle drop\", position);\n\n onChange?.((fn) => {\n return engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n // console.log(\"node added\", id, position);\n updatePosition(id, position);\n });\n });\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // connecting nodes\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?.((fn) =>\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n },\n [fn, onChange]\n );\n\n // deleting nodes\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.((fn) =>\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n },\n [onChange, fn]\n );\n\n // deleting edges\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n onChange?.((fn) => {\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 = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n return newFn;\n });\n },\n [onChange, fn]\n );\n\n // handle canvas clicks to be able to place nodes\n const handleClick = (e: React.MouseEvent) => {\n if (instance) {\n const position = instance.screenToFlowPosition({\n x: e.clientX,\n y: e.clientY,\n });\n onClick?.(e, position);\n }\n };\n\n const onNodesChange = React.useCallback(\n (changes) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n []\n );\n const onEdgesChange = React.useCallback(\n (changes) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n []\n );\n\n return (\n <ReactFlow\n ref={drop as any}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={(e, n) => updatePosition(n.id, n.position)}\n onConnect={onConnect}\n onInit={setInstance}\n onPaneClick={handleClick}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n maxZoom={4}\n deleteKeyCode={\"Delete\"}\n connectionLineComponent={ConnectionLine}\n >\n <Background color=\"#ccc\" variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({\n function: fn,\n engine,\n onChange = () => {},\n onClick,\n onSelect,\n customControls,\n}: FlowProps) {\n return (\n <FlowContext.Provider value={{ engine, controls: customControls }}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n onClick={onClick}\n onSelect={onSelect}\n />\n </ReactFlowProvider>\n </FlowContext.Provider>\n );\n}\n","import { ConnectableElement, useDrag } from \"react-dnd\";\n\nimport { PrimitiveFunction } from \"../Engine\";\nimport { NodeDropItem } from \"../Flow\";\n\nexport function useDraggableNode(name: string, fn: PrimitiveFunction) {\n let [, drag] = useDrag<NodeDropItem>({\n type: \"flow-node\",\n item: { name, fn },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n return (ref: ConnectableElement) => drag(ref);\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":["uid","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","Logic","Tree","useInner","Handle","Position","styles","persist","useConnection","getSimpleBezierPath","useOnSelectionChange","useDrop","applyNodeChanges","applyEdgeChanges","ReactFlow","Background","BackgroundVariant","Controls","ReactFlowProvider","useDrag"],"mappings":"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","x_google_ignoreList":[0]}
@@ -9,6 +9,9 @@ export type NormalizedVarDef = {
9
9
  description?: string;
10
10
  required?: boolean;
11
11
  options?: string[];
12
+ min?: number;
13
+ max?: number;
14
+ step?: number;
12
15
  };
13
16
  export type VarDef = string | NormalizedVarDef;
14
17
  /**
@@ -1,9 +1,14 @@
1
1
  import React from "react";
2
+ import { NormalizedVarDef } from "../../Engine";
3
+ export interface WidgetProps<T> {
4
+ value: T;
5
+ vardef: NormalizedVarDef;
6
+ onChange?: (value: T) => void;
7
+ }
2
8
  interface ControlProps {
3
9
  value: any;
4
- type: string;
5
- options?: string[];
10
+ vardef: NormalizedVarDef;
6
11
  onChange?: (value: any) => void;
7
12
  }
8
- export declare function Control({ value, type, options, onChange }: ControlProps): React.JSX.Element;
13
+ export declare function Control({ value, vardef, onChange }: ControlProps): React.JSX.Element;
9
14
  export {};
@@ -1,4 +1,11 @@
1
1
  import React from "react";
2
2
  import { Engine } from "../Engine";
3
- export declare const EngineContext: React.Context<Engine>;
3
+ import { WidgetProps } from "./Components/Control";
4
+ type FlowContextState = {
5
+ engine: Engine;
6
+ controls?: Record<string, React.ComponentType<WidgetProps<any>>>;
7
+ };
8
+ export declare const FlowContext: React.Context<FlowContextState>;
4
9
  export declare const useEngine: () => Engine;
10
+ export declare const useControls: () => Record<string, React.ComponentType<WidgetProps<any>>>;
11
+ export {};
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import { XYPosition } from "@xyflow/react";
3
3
  import { GraphedFunction } from "../Engine/types";
4
4
  import { Engine } from "../Engine";
5
+ import { WidgetProps } from "./Components/Control";
5
6
  import { Updater } from "./types";
6
7
  import "./style/xyflow.css";
7
8
  export * from "./types";
@@ -15,5 +16,6 @@ interface FlowProps {
15
16
  onChange?: (updater: Updater<GraphedFunction>) => void;
16
17
  onClick?: (event: React.MouseEvent, position: XYPosition) => void;
17
18
  onSelect?: (ids: string[]) => void;
19
+ customControls?: Record<string, React.ComponentType<WidgetProps<any>>>;
18
20
  }
19
- export declare function Flow({ function: fn, engine, onChange, onClick, onSelect, }: FlowProps): React.JSX.Element;
21
+ export declare function Flow({ function: fn, engine, onChange, onClick, onSelect, customControls, }: FlowProps): React.JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rkmodules/rules",
3
- "version": "0.0.35",
3
+ "version": "0.0.37",
4
4
  "main": "dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "files": [