@rkmodules/rules 0.0.23 → 0.0.25
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 +111 -123
- package/dist/index.js.map +1 -1
- package/dist/lib/Flow/Components/GenericNode.d.ts +2 -3
- package/dist/lib/Flow/Components/Input.d.ts +1 -2
- package/dist/lib/Flow/Components/Param.d.ts +1 -2
- package/dist/lib/Flow/Context.d.ts +1 -3
- package/dist/lib/Flow/index.d.ts +3 -3
- package/dist/lib/Flow/types.d.ts +5 -1
- package/dist/lib/hooks/useFlow.d.ts +5 -4
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/lib/DataTree/index.ts","../src/lib/DataTree/util.ts","../src/lib/Engine/util.ts","../src/lib/Primitives/Util/getValue.ts","../src/lib/Primitives/Util/log.ts","../src/lib/Primitives/Util/value.ts","../src/lib/Primitives/Util/index.ts","../src/lib/Primitives/Math/calc.ts","../src/lib/Primitives/Math/greaterThan.ts","../src/lib/Primitives/Math/lessThan.ts","../src/lib/Primitives/Math/index.ts","../src/lib/Primitives/List/filterList.ts","../src/lib/Primitives/List/graftTree.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/trimTree.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/Tree/mergeTree.ts","../src/lib/Primitives/Tree/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/Flow/Context.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Components/Control.tsx","../src/lib/Flow/Components/Input.tsx","../src/lib/Flow/Components/Param.tsx","../src/lib/Flow/Components/Output.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../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\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const mapResult = tree[path].flatMap((v, i) => fn(v, path, i));\n if (mapResult.length) {\n result[path] = mapResult;\n }\n }\n return result;\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const newBranch = fn(tree[path], path);\n if (newBranch) {\n result[path] = newBranch;\n }\n }\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTreeBranch<V>(\n trees: Tree<any>[],\n fn: (branches: any[][], paths: string[]) => V[] | void\n): Tree<V> {\n const result: Tree<V> = {};\n const allKeys = trees.map((tree) => Object.keys(tree));\n const maxBranches = Math.max(...allKeys.map((keys) => keys.length));\n\n for (let i = 0; i < maxBranches; i++) {\n const paths = allKeys.map((keys) => keys[Math.min(i, keys.length - 1)]);\n const branches = trees.map(\n (tree) => tree[paths[trees.indexOf(tree)]] || []\n );\n\n // get all the paths of which the trees are the longest, use the first\n const maxPaths = paths.filter(\n (_, i) => allKeys[i].length === maxBranches\n );\n const path = maxPaths[0];\n\n const newBranch = fn(branches, paths);\n if (newBranch?.length) {\n result[path] = newBranch;\n }\n }\n\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths, index)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<V>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n return Array.from({ length: maxLength }, (_, i) => {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n return fn(items, paths, i);\n });\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (itemA: T, itemB: U, pathA: string, pathB: string, index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: Number(value) };\n case \"boolean\":\n return { value: Boolean(value) };\n case \"string\":\n return { value: String(value) };\n default:\n // return as is\n return { value };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { create, all, MathNode, SymbolNode } from \"mathjs\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\nimport { broadCast, mapTree, sameShape } from \"../../DataTree\";\n\nlet math = create(all, {});\n\nfunction evaluate(expression: string, scope: Record<string, any>) {\n // console.log(\"evaluating\", expression, \"in\", scope);\n let result;\n try {\n result = math.evaluate(expression, scope);\n if (typeof result.toNumber === \"function\") {\n result = result.toNumber();\n }\n } catch (e) {\n console.log(\"Calc:\", e);\n console.log(\"Calc:\", { expression, scope });\n // todo: communicate errors\n }\n\n // console.log(\"result\", result);\n return result;\n}\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const calc: PrimitiveFunction = {\n name: \"calc\",\n label: \"Calc\",\n nodeType: \"Calc\",\n inputs: {},\n params: {\n expression: \"string\",\n },\n outputs: {\n result: \"number\",\n },\n impl: async (inputs, params): Promise<RecOfTrees> => {\n const expression = params.expression;\n if (!expression) return {};\n // check for same shape on all inputs\n let inputEntries = Object.entries(inputs);\n if (\n !inputEntries.every(([key, v], i, a) => {\n return sameShape(v, a[0][1]);\n })\n ) {\n throw new Error(\"All inputs must have the same shape\");\n }\n // if no inputs, just return the result of the expression\n if (inputEntries.length === 0) {\n return { result: broadCast(evaluate(expression, {})) };\n }\n // if inputs, evaluate the expression for each input\n const result = mapTree(inputEntries[0][1], (_, p, i) => {\n // create a scope for each input\n let vars: Record<string, any> = {};\n inputEntries.forEach(([key, value]) => {\n vars[key] = value[p][i];\n });\n return evaluate(expression, vars);\n });\n\n // await new Promise((resolve) => setTimeout(resolve, 5000)); // yield to event loop\n\n return { result };\n },\n};\n\nconst BUILT_INS = new Set([\n // constants\n \"pi\",\n \"e\",\n \"tau\",\n \"phi\",\n \"Infinity\",\n \"NaN\",\n \"i\",\n \"true\",\n \"false\",\n \"null\",\n // common built-in functions (skip as variables when used as callees)\n \"sin\",\n \"cos\",\n \"tan\",\n \"asin\",\n \"acos\",\n \"atan\",\n \"atan2\",\n \"sinh\",\n \"cosh\",\n \"tanh\",\n \"log\",\n \"log10\",\n \"ln\",\n \"exp\",\n \"sqrt\",\n \"abs\",\n \"min\",\n \"max\",\n \"round\",\n \"floor\",\n \"ceil\",\n \"sum\",\n \"mean\",\n \"median\",\n \"mode\",\n \"std\",\n \"var\",\n \"pow\",\n \"mod\",\n \"gcd\",\n \"lcm\",\n \"derivative\",\n \"integral\",\n \"simplify\",\n \"im\",\n \"re\",\n]);\n\n/**\n * Return a sorted list of unbound symbol names in a MathJS expression.\n * @param expr The expression string, e.g. \"x + y\"\n * @param scope Names already defined/known (e.g. from your evaluation scope)\n * @param extraBound Extra names to treat as bound (e.g. UI reserved words)\n */\nexport function getUnboundSymbols(\n expr: string,\n scope: Record<string, unknown> = {},\n extraBound: string[] = []\n): string[] {\n let ast;\n try {\n ast = math.parse(expr);\n } catch {\n return [];\n }\n const bound = new Set<string>([...Object.keys(scope), ...extraBound]);\n const free = new Set<string>();\n\n const isFunctionCallee = (node: MathNode, parent?: MathNode) =>\n parent?.type === \"FunctionNode\" && (parent as any).fn === node;\n\n ast.traverse((node: MathNode, _path: string, parent?: MathNode) => {\n if (node.type !== \"SymbolNode\") return;\n\n const name = (node as SymbolNode).name;\n\n // Skip if symbol is the function name in a call, e.g. sin in sin(x)\n if (isFunctionCallee(node, parent)) return;\n\n // Skip mathjs built-ins and anything caller said is already bound\n if (BUILT_INS.has(name) || bound.has(name)) return;\n\n free.add(name);\n });\n\n // If you want to also exclude left-hand sides of assignments within the expr:\n // (Uncommon in \"fill in variables\" UIs, but easy to guard against.)\n ast.traverse((node: MathNode) => {\n if (node.type === \"AssignmentNode\") {\n const target: MathNode = (node as any).object;\n if (target?.type === \"SymbolNode\") {\n free.delete((target as SymbolNode).name);\n }\n }\n });\n\n return Array.from(free).sort();\n}\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA > itemB;\n }),\n gte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA >= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA < itemB;\n }),\n lte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA <= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { calc } from \"./calc\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list,\n inputs.keep,\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const graftTree: PrimitiveFunction = {\n name: \"graftTree\",\n label: \"Graft Tree\",\n description:\n \"Creates a new branch for each item in the existing tree branches\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { 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 trimTree: PrimitiveFunction = {\n name: \"trimTree\",\n label: \"Trim Tree\",\n description:\n \"Reduce the complexity of a tree by merging the outermost branches.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: \"number\", // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { graftTree } from \"./graftTree\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { trimTree } from \"./trimTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [graftTree.name]: graftTree,\n [trimTree.name]: trimTree,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: \"number\",\n step: \"number\",\n count: \"number\",\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { Tree } from \"../../DataTree\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\n\nexport const mergeTree: PrimitiveFunction = {\n name: \"mergeTree\",\n label: \"Merge Tree\",\n description: \"Merge multiple trees into a single tree.\",\n nodeType: \"Merge\",\n inputs: {},\n outputs: {\n result: \"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 Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\nimport Tree from \"./Tree\";\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n 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\ninterface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n console.log(\"sorted\", ordered);\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n console.log(\n `Running function: ${node.name}`,\n node,\n inputs,\n params\n );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n console.log(\n \"Engine running with inputs\",\n inputs,\n interpolate(inputs, {})\n );\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n const result = await node.impl?.(mappedInputs, {});\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(fn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n }\n\n public applyEdgeDelete(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n }\n\n public applyNodeAdd(\n fn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.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 fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n\n return topSort(newFn);\n }\n}\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\nconst dummyEngine = new Engine();\nexport const EngineContext = React.createContext<Engine>(dummyEngine);\n\nexport const useEngine = () => {\n return React.useContext(EngineContext);\n};\n\nexport const ChangeContext = React.createContext<(fn: GraphedFunction) => void>(\n () => {}\n);\nexport const useChange = () => {\n return React.useContext(ChangeContext);\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { useEngine } from \"../Context\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface NodeContainerProps {\n id?: string;\n label: string;\n className?: string;\n selected?: boolean;\n children?: React.ReactNode;\n}\nexport function NodeContainer({\n id,\n label,\n className,\n selected,\n children,\n}: NodeContainerProps) {\n const engine = useEngine();\n const [active, setActive] = React.useState(false);\n React.useEffect(() => {\n if (!id) return;\n let removeOnCall = engine.subscribe(\"functionCall\", (event) => {\n if (event.name === id) {\n setActive(true);\n }\n });\n let removeOnResult = engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setTimeout(\n () => setActive(false),\n Math.max(0, 1000 - (event.duration || 0))\n );\n }\n });\n return () => {\n removeOnCall();\n removeOnResult();\n };\n }, [id]);\n return (\n <div\n className={classNames(className, styles.DefaultNode, {\n [styles.selected]: selected,\n [styles.active]: active,\n })}\n >\n <div className={styles.Label}>{label}</div>\n {children}\n </div>\n );\n}\n","import React from \"react\";\n\ninterface ControlProps {\n value: any;\n type: string;\n options?: string[];\n onChange?: (value: any) => void;\n}\nexport function Control({ value, type, options, onChange }: ControlProps) {\n if (options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (type) {\n case \"any\":\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <input\n type=\"number\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(Number(e.target.value))}\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Input = ({ name, varDef, id, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.inputs?.[name];\n const isRef = isReference(value);\n\n const handleInputChange = (param: string) => (value: any) => {\n // Update the function instance with the new input value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.inputs = {\n ...call.inputs,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>\n {varDef.label || name}\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n />\n </td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Param = ({ id, name, varDef, data, onChange }) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.params?.[name];\n const isRef = isReference(value);\n\n const handleParamChange = (param: string) => (value: any) => {\n // Update the function instance with the new param value\n const body = { ...data.caller.body };\n const call = { ...(body[id] || {}) };\n call.params = {\n ...call.params,\n [param]: value,\n };\n body[id] = call;\n const updatedFn = {\n ...data.caller,\n body,\n };\n onChange(updatedFn);\n };\n\n return (\n <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>{varDef.label || name}</td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n options={normalized.options}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Output = ({ name, varDef, id }) => {\n const normalized = normalizeVarDef(varDef);\n return (\n <tr\n key={name}\n className={classNames(\n styles.Output,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td colSpan={2}>\n {varDef.label || name}\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n />\n </td>\n </tr>\n );\n};\n","import React from \"react\";\n\nimport { FunctionNode } from \"../types\";\nimport { Input } from \"../Components/Input\";\nimport { Param } from \"../Components/Param\";\nimport { Output } from \"../Components/Output\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GraphedFunction, VarDef } from \"../../Engine\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n onChange: (fn: GraphedFunction) => void;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n onChange,\n}: GenericNodeProps) {\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n {children}\n <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n\n {Object.entries(params || {}).map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { GenericNode } from \"../Components/GenericNode\";\nimport { getUnboundSymbols } from \"../../Primitives/Math/calc\";\n\nimport \"../style/katex.min.css\";\n\nlet math = create(all, {});\n\ntype MathProps = { expr: string; displayMode?: boolean };\n\nexport function MathView({ expr, displayMode = false }: MathProps) {\n let latex = \"\";\n try {\n latex = math.parse(expr).toTex({ parenthesis: \"auto\" });\n } catch (e) {\n latex = String(expr); // fallback on parse error\n }\n const html = katex.renderToString(latex, {\n throwOnError: false,\n displayMode, // true = block, false = inline\n });\n return <span dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport const Calc = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(calledFn.inputs || {}) };\n const symbols = getUnboundSymbols(expression as string);\n symbols.forEach((symbol) => {\n if (!inputs[symbol]) {\n inputs[symbol] = {\n type: \"number\",\n };\n }\n });\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n >\n <MathView expr={expression} displayMode />\n </GenericNode>\n );\n }\n);\nCalc.displayName = \"CalcNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={calledFn.inputs}\n outputs={calledFn.outputs}\n params={calledFn.params}\n onChange={onChange}\n />\n );\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const calledFn = engine.getFunction(data.name);\n const [value, setValue] = React.useState<Tree<any> | null>(null);\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setValue(event.context.scope[id]?.data || null);\n }\n });\n }, []);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td\n title={JSON.stringify(\n item,\n null,\n 2\n )}\n >\n {item?.toString()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useChange, useEngine } from \"../Context\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nfunction uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport const Merge = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const onChange = useChange();\n const calledFn = engine.getFunction(data.name);\n\n if (!calledFn) {\n return (\n <NodeContainer label=\"Function not found\" selected={selected} />\n );\n }\n\n let inputs = Object.fromEntries(\n Object.keys(data.inputs || {}).map((name, i) => [\n name,\n { type: \"any\", label: `D${i + 1}` },\n ])\n );\n let inputCount = Object.keys(inputs).length;\n inputs[uid()] = { type: \"any\", label: `D${inputCount + 1}` };\n let outputs = { ...(calledFn.outputs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n onChange={onChange}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n }\n);\nMerge.displayName = \"MergeNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\nimport { Merge } from \"./Merge\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n Merge,\n};\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n if (persist) {\n let data = { ...pget().data, [`${scope}|${name}`]: value };\n pset({ data });\n } else {\n let data = { ...get().data, [`${scope}|${name}`]: value };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { 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 setPositions({ ...positions, [id]: position });\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport { Engine, getReferences, GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { usePositions } from \"./usePositions\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\ntype CreateGraphOptions = {\n dragHandle?: string;\n};\n\nexport function createGraph(\n fn: GraphedFunction,\n engine: Engine,\n positions?: PositionData,\n options?: CreateGraphOptions\n) {\n const nodes: FunctionNode[] = [];\n const edges: Edge[] = [];\n\n Object.entries(fn.body || {}).forEach(([id, fncall], index) => {\n const reffedFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n nodes.push({\n id,\n data: {\n name: fncall.name,\n caller: fn,\n inputs: fncall.inputs,\n params: fncall.params,\n },\n position: positions?.[id] || { x: 250 * index, y: 0 },\n dragHandle: options?.dragHandle,\n type: reffedFn?.nodeType || \"Default\",\n });\n\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n // create an edge for each reference\n edges.push({\n id: `${ref.path}-${id}.${ref.name}`,\n source: ref.refNode,\n target: id,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${id}-${ref.name}`,\n });\n });\n });\n\n return { nodes, edges };\n}\n\nexport function useFlow(fn, engine, options) {\n let [positions] = usePositions(fn);\n return React.useMemo(() => {\n return createGraph(fn, engine, positions, options);\n }, [fn, engine]);\n}\n","import {\n addEdge,\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n EdgeChange,\n Node,\n NodeChange,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useOnSelectionChange,\n useStore,\n XYPosition,\n} from \"@xyflow/react\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { useInner } from \"@rkmodules/use-inner\";\nimport React from \"react\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { ChangeContext, EngineContext } from \"./Context\";\nimport { useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\nimport { useDrop } from \"react-dnd\";\nimport { NodeDropItem } from \"./types\";\n\nexport * from \"./types\";\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (fn: GraphedFunction) => void;\n onClick?: (event: React.MouseEvent, position: XYPosition) => void;\n onSelect?: (nodes: Node[], edges: Edge[]) => 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 const updatePositions = useUpdatePositions(fn);\n\n const { nodes: initialNodes, edges: initialEdges } = useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n });\n const [nodes, setNodes] = useInner<Node[]>(initialNodes);\n const [edges, setEdges] = useInner<Edge[]>(initialEdges);\n\n // node selection handler\n const handleChange = React.useCallback(\n ({ nodes, edges }) => {\n onSelect?.(nodes, edges);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleChange,\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\n onChange?.(\n engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n console.log(\"node added\", id, position);\n updatePositions(id, position);\n })\n );\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // useLayoutNodes();\n\n let updatePosition = useUpdatePositions(fn);\n\n const onNodesChange = React.useCallback(\n (changes: NodeChange<Node>[]) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n [setNodes]\n );\n const onEdgesChange = React.useCallback(\n (changes: EdgeChange<Edge>[]) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n [setEdges]\n );\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.(\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot));\n },\n [setEdges, fn, onChange]\n );\n\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.(\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n setNodes((nodesSnapshot) =>\n nodesSnapshot.filter(\n (node) => !nodesToDelete.some((n) => n.id === node.id)\n )\n );\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) =>\n !nodesToDelete.some(\n (n) => n.id === edge.source || n.id === edge.target\n )\n )\n );\n },\n [setNodes, setEdges, onChange, fn]\n );\n\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n onChange?.(newFn);\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) => !edgesToDelete.some((e) => e.id === edge.id)\n )\n );\n },\n [setEdges, onChange, fn]\n );\n\n 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 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 deleteKeyCode={\"Delete\"}\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 <ChangeContext.Provider value={onChange}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n onClick={onClick}\n onSelect={onSelect}\n />\n </ReactFlowProvider>\n </ChangeContext.Provider>\n </EngineContext.Provider>\n );\n}\n","import { ConnectableElement, useDrag } from \"react-dnd\";\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":["graftTree","trimTree","uid","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","Tree","Handle","Position","persist","useInner","useOnSelectionChange","useDrop","applyNodeChanges","applyEdgeChanges","addEdge","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/graftTree.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/trimTree.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/Tree/mergeTree.ts","../src/lib/Primitives/Tree/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/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/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../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\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const mapResult = tree[path].flatMap((v, i) => fn(v, path, i));\n if (mapResult.length) {\n result[path] = mapResult;\n }\n }\n return result;\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n const result: Tree<U> = {};\n for (const path in tree) {\n const newBranch = fn(tree[path], path);\n if (newBranch) {\n result[path] = newBranch;\n }\n }\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTreeBranch<V>(\n trees: Tree<any>[],\n fn: (branches: any[][], paths: string[]) => V[] | void\n): Tree<V> {\n const result: Tree<V> = {};\n const allKeys = trees.map((tree) => Object.keys(tree));\n const maxBranches = Math.max(...allKeys.map((keys) => keys.length));\n\n for (let i = 0; i < maxBranches; i++) {\n const paths = allKeys.map((keys) => keys[Math.min(i, keys.length - 1)]);\n const branches = trees.map(\n (tree) => tree[paths[trees.indexOf(tree)]] || []\n );\n\n // get all the paths of which the trees are the longest, use the first\n const maxPaths = paths.filter(\n (_, i) => allKeys[i].length === maxBranches\n );\n const path = maxPaths[0];\n\n const newBranch = fn(branches, paths);\n if (newBranch?.length) {\n result[path] = newBranch;\n }\n }\n\n return result;\n}\n\n/**\n * n-ary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (items, paths, index)\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<V>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n return Array.from({ length: maxLength }, (_, i) => {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n return fn(items, paths, i);\n });\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (itemA: T, itemB: U, pathA: string, pathB: string, index: number) => V,\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: Number(value) };\n case \"boolean\":\n return { value: Boolean(value) };\n case \"string\":\n return { value: String(value) };\n default:\n // return as is\n return { value };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { create, all, MathNode, SymbolNode } from \"mathjs\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\nimport { broadCast, mapTree, sameShape } from \"../../DataTree\";\n\nlet math = create(all, {});\n\nfunction evaluate(expression: string, scope: Record<string, any>) {\n // console.log(\"evaluating\", expression, \"in\", scope);\n let result;\n try {\n result = math.evaluate(expression, scope);\n if (typeof result.toNumber === \"function\") {\n result = result.toNumber();\n }\n } catch (e) {\n console.log(\"Calc:\", e);\n console.log(\"Calc:\", { expression, scope });\n // todo: communicate errors\n }\n\n // console.log(\"result\", result);\n return result;\n}\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const calc: PrimitiveFunction = {\n name: \"calc\",\n label: \"Calc\",\n nodeType: \"Calc\",\n inputs: {},\n params: {\n expression: \"string\",\n },\n outputs: {\n result: \"number\",\n },\n impl: async (inputs, params): Promise<RecOfTrees> => {\n const expression = params.expression;\n if (!expression) return {};\n // check for same shape on all inputs\n let inputEntries = Object.entries(inputs);\n if (\n !inputEntries.every(([key, v], i, a) => {\n return sameShape(v, a[0][1]);\n })\n ) {\n throw new Error(\"All inputs must have the same shape\");\n }\n // if no inputs, just return the result of the expression\n if (inputEntries.length === 0) {\n return { result: broadCast(evaluate(expression, {})) };\n }\n // if inputs, evaluate the expression for each input\n const result = mapTree(inputEntries[0][1], (_, p, i) => {\n // create a scope for each input\n let vars: Record<string, any> = {};\n inputEntries.forEach(([key, value]) => {\n vars[key] = value[p][i];\n });\n return evaluate(expression, vars);\n });\n\n // await new Promise((resolve) => setTimeout(resolve, 5000)); // yield to event loop\n\n return { result };\n },\n};\n\nconst BUILT_INS = new Set([\n // constants\n \"pi\",\n \"e\",\n \"tau\",\n \"phi\",\n \"Infinity\",\n \"NaN\",\n \"i\",\n \"true\",\n \"false\",\n \"null\",\n // common built-in functions (skip as variables when used as callees)\n \"sin\",\n \"cos\",\n \"tan\",\n \"asin\",\n \"acos\",\n \"atan\",\n \"atan2\",\n \"sinh\",\n \"cosh\",\n \"tanh\",\n \"log\",\n \"log10\",\n \"ln\",\n \"exp\",\n \"sqrt\",\n \"abs\",\n \"min\",\n \"max\",\n \"round\",\n \"floor\",\n \"ceil\",\n \"sum\",\n \"mean\",\n \"median\",\n \"mode\",\n \"std\",\n \"var\",\n \"pow\",\n \"mod\",\n \"gcd\",\n \"lcm\",\n \"derivative\",\n \"integral\",\n \"simplify\",\n \"im\",\n \"re\",\n]);\n\n/**\n * Return a sorted list of unbound symbol names in a MathJS expression.\n * @param expr The expression string, e.g. \"x + y\"\n * @param scope Names already defined/known (e.g. from your evaluation scope)\n * @param extraBound Extra names to treat as bound (e.g. UI reserved words)\n */\nexport function getUnboundSymbols(\n expr: string,\n scope: Record<string, unknown> = {},\n extraBound: string[] = []\n): string[] {\n let ast;\n try {\n ast = math.parse(expr);\n } catch {\n return [];\n }\n const bound = new Set<string>([...Object.keys(scope), ...extraBound]);\n const free = new Set<string>();\n\n const isFunctionCallee = (node: MathNode, parent?: MathNode) =>\n parent?.type === \"FunctionNode\" && (parent as any).fn === node;\n\n ast.traverse((node: MathNode, _path: string, parent?: MathNode) => {\n if (node.type !== \"SymbolNode\") return;\n\n const name = (node as SymbolNode).name;\n\n // Skip if symbol is the function name in a call, e.g. sin in sin(x)\n if (isFunctionCallee(node, parent)) return;\n\n // Skip mathjs built-ins and anything caller said is already bound\n if (BUILT_INS.has(name) || bound.has(name)) return;\n\n free.add(name);\n });\n\n // If you want to also exclude left-hand sides of assignments within the expr:\n // (Uncommon in \"fill in variables\" UIs, but easy to guard against.)\n ast.traverse((node: MathNode) => {\n if (node.type === \"AssignmentNode\") {\n const target: MathNode = (node as any).object;\n if (target?.type === \"SymbolNode\") {\n free.delete((target as SymbolNode).name);\n }\n }\n });\n\n return Array.from(free).sort();\n}\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA > itemB;\n }),\n gte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA >= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA < itemB;\n }),\n lte: binaryOnTree(inputs.a, inputs.b, (itemA, itemB) => {\n return itemA <= itemB;\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { calc } from \"./calc\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list,\n inputs.keep,\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const graftTree: PrimitiveFunction = {\n name: \"graftTree\",\n label: \"Graft Tree\",\n description:\n \"Creates a new branch for each item in the existing tree branches\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { 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 trimTree: PrimitiveFunction = {\n name: \"trimTree\",\n label: \"Trim Tree\",\n description:\n \"Reduce the complexity of a tree by merging the outermost branches.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: \"number\", // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { graftTree } from \"./graftTree\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { trimTree } from \"./trimTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [graftTree.name]: graftTree,\n [trimTree.name]: trimTree,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: \"number\",\n step: \"number\",\n count: \"number\",\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { Tree } from \"../../DataTree\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\n\nexport const mergeTree: PrimitiveFunction = {\n name: \"mergeTree\",\n label: \"Merge Tree\",\n description: \"Merge multiple trees into a single tree.\",\n nodeType: \"Merge\",\n inputs: {},\n outputs: {\n result: \"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 Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\nimport Tree from \"./Tree\";\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n 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\ninterface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n console.log(\"sorted\", ordered);\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n console.log(\n `Running function: ${node.name}`,\n node,\n inputs,\n params\n );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n console.log(\n \"Engine running with inputs\",\n inputs,\n interpolate(inputs, {})\n );\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n const result = await node.impl?.(mappedInputs, {});\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(fn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n }\n\n public applyEdgeDelete(\n fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n }\n\n public applyNodeAdd(\n fn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.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 fn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...fn,\n body: { ...fn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n\n return topSort(newFn);\n }\n}\n","import React from \"react\";\n\ninterface ControlProps {\n value: any;\n type: string;\n options?: string[];\n onChange?: (value: any) => void;\n}\nexport function Control({ value, type, options, onChange }: ControlProps) {\n if (options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (type) {\n case \"any\":\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <input\n type=\"number\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(Number(e.target.value))}\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Input = ({ name, varDef, id, data }) => {\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 <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>\n {varDef.label || name}\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n />\n </td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Param = ({ id, name, varDef, data }) => {\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 <tr\n key={name}\n className={classNames(\n styles.Input,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td>{varDef.label || name}</td>\n <td>\n {!isRef && (\n <Control\n type={normalized.type}\n options={normalized.options}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </td>\n </tr>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef } from \"../../Engine\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Output = ({ name, varDef, id }) => {\n const normalized = normalizeVarDef(varDef);\n return (\n <tr\n key={name}\n className={classNames(\n styles.Output,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n >\n <td colSpan={2}>\n {varDef.label || name}\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n />\n </td>\n </tr>\n );\n};\n","import React from \"react\";\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\";\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 { VarDef } from \"../../Engine\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n}: GenericNodeProps) {\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n {children}\n <table>\n <tbody>\n {Object.entries(outputs || data.outputDefs || {}).map(\n ([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n )\n )}\n {Object.entries(inputs || data.inputDefs || {}).map(\n ([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n )\n )}\n\n {Object.entries(params || data.paramDefs || {}).map(\n ([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n )\n )}\n </tbody>\n </table>\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { 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 { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const [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 <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td\n title={JSON.stringify(\n item,\n null,\n 2\n )}\n >\n {item?.toString?.()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nfunction uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport const Merge = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n 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 <table>\n <tbody>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </tbody>\n </table>\n </NodeContainer>\n );\n }\n);\nMerge.displayName = \"MergeNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\nimport { Merge } from \"./Merge\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n Merge,\n};\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n if (persist) {\n let data = { ...pget().data, [`${scope}|${name}`]: value };\n pset({ data });\n } else {\n let data = { ...get().data, [`${scope}|${name}`]: value };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { 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 setPositions({ ...positions, [id]: position });\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport { Engine, getReferences, GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { usePositions } from \"./usePositions\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\ntype CreateGraphOptions = {\n dragHandle?: string;\n setNodes: React.Dispatch<React.SetStateAction<FunctionNode[]>>;\n setEdges: React.Dispatch<React.SetStateAction<Edge[]>>;\n onChange?: (fn: GraphedFunction) => void;\n};\n\nexport function createGraph(\n fn: GraphedFunction,\n engine: Engine,\n positions?: PositionData,\n options?: CreateGraphOptions\n) {\n const nodes: FunctionNode[] = [];\n const edges: Edge[] = [];\n\n const handleChange =\n (id: string) => (newData: Partial<FunctionNode[\"data\"]>) => {\n // console.log(\"handleChange\", id, newData);\n options?.setNodes((nds) =>\n nds.map((node) => {\n if (node.id === id) {\n // console.log(\"update node\", id, newData);\n return {\n ...node,\n data: {\n ...node.data,\n ...newData,\n },\n };\n }\n return node;\n })\n );\n // update the function definition\n const body = { ...fn.body };\n const fncall = { ...(body[id] || {}), ...newData };\n body[id] = fncall;\n const updatedFn = { ...fn, body };\n options?.onChange?.(updatedFn);\n // console.log(\"updated call\", fncall);\n };\n\n Object.entries(fn.body || {}).forEach(([id, fncall], index) => {\n const calledFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n nodes.push({\n id,\n data: {\n name: fncall.name,\n caller: fn,\n inputs: fncall.inputs,\n params: fncall.params,\n inputDefs: calledFn?.inputs || {},\n paramDefs: calledFn?.params || {},\n outputDefs: calledFn?.outputs || {},\n onChange: handleChange(id),\n },\n position: positions?.[id] || { x: 250 * index, y: 0 },\n dragHandle: options?.dragHandle,\n type: calledFn?.nodeType || \"Default\",\n });\n\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n // create an edge for each reference\n edges.push({\n id: `${ref.path}-${id}.${ref.name}`,\n source: ref.refNode,\n target: id,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${id}-${ref.name}`,\n });\n });\n });\n\n return { nodes, edges };\n}\n\nexport function useFlow(\n fn: GraphedFunction,\n engine: Engine,\n options: CreateGraphOptions\n) {\n let [positions] = usePositions(fn);\n React.useEffect(() => {\n let { nodes, edges } = createGraph(fn, engine, positions, options);\n options.setNodes(nodes);\n options.setEdges(edges);\n }, [engine]);\n}\n","import React from \"react\";\nimport {\n addEdge,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n Node,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useEdgesState,\n useNodesState,\n useOnSelectionChange,\n XYPosition,\n} from \"@xyflow/react\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { EngineContext } from \"./Context\";\nimport { useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\nimport { useDrop } from \"react-dnd\";\nimport { NodeDropItem } from \"./types\";\n\nexport * from \"./types\";\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (fn: 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 const updatePositions = useUpdatePositions(fn);\n const [nodes, setNodes, onNodesChange] = useNodesState<Node>([]);\n const [edges, setEdges, onEdgesChange] = useEdgesState<Edge>([]);\n\n useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n setNodes,\n setEdges,\n onChange,\n });\n\n // node selection handler\n const handleChange = React.useCallback(\n ({ nodes }) => {\n onSelect?.(nodes.map((n: Node) => n.id) || []);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleChange,\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\n onChange?.(\n engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n console.log(\"node added\", id, position);\n updatePositions(id, position);\n })\n );\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // useLayoutNodes();\n\n let updatePosition = useUpdatePositions(fn);\n\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.(\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n setEdges((edgesSnapshot) => addEdge(params, edgesSnapshot));\n },\n [setEdges, fn, onChange]\n );\n\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.(\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n setNodes((nodesSnapshot) =>\n nodesSnapshot.filter(\n (node) => !nodesToDelete.some((n) => n.id === node.id)\n )\n );\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) =>\n !nodesToDelete.some(\n (n) => n.id === edge.source || n.id === edge.target\n )\n )\n );\n },\n [setNodes, setEdges, onChange, fn]\n );\n\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n onChange?.(newFn);\n setEdges((edgesSnapshot) =>\n edgesSnapshot.filter(\n (edge) => !edgesToDelete.some((e) => e.id === edge.id)\n )\n );\n },\n [setEdges, onChange, fn]\n );\n\n 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 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 deleteKeyCode={\"Delete\"}\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\";\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":["graftTree","trimTree","uid","getValue","getVal","primitives","_a","math","create","all","graft","trim","Util","Math","List","Sequence","Tree","Handle","Position","persist","useNodesState","useEdgesState","useOnSelectionChange","useDrop","addEdge","ReactFlow","Background","BackgroundVariant","Controls","ReactFlowProvider","useDrag"],"mappings":"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","x_google_ignoreList":[0]}
|