@rkmodules/rules 0.0.51 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.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/add.ts","../src/lib/Primitives/Math/calc.ts","../src/lib/Primitives/Math/divide.ts","../src/lib/Primitives/Math/greaterThan.ts","../src/lib/Primitives/Math/lessThan.ts","../src/lib/Primitives/Math/multiply.ts","../src/lib/Primitives/Math/subtract.ts","../src/lib/Primitives/Math/index.ts","../src/lib/Primitives/List/filterList.ts","../src/lib/Primitives/List/splitGroup.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/mergeGroup.ts","../src/lib/Primitives/List/shiftList.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/Tree/mergeTree.ts","../src/lib/Primitives/Tree/index.ts","../src/lib/Primitives/Logic/groupAnd.ts","../src/lib/Primitives/Logic/groupOr.ts","../src/lib/Primitives/Logic/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../src/lib/Flow/Context.tsx","../src/lib/Flow/Components/Control.tsx","../src/lib/Flow/Components/Input.tsx","../src/lib/Flow/Components/Param.tsx","../src/lib/Flow/Components/Output.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../src/lib/Flow/Components/ConnectionLine.tsx","../src/lib/Flow/index.tsx","../src/lib/hooks/useDraggableNode.ts","../src/lib/hooks/useFunction.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Tree } from \"./types\";\n\nexport * from \"./types\";\n\nexport const DISCARD = Symbol(\"DISCARD\");\n\n/**\n * removes the common prefix from the paths in the tree\n * @param tree\n * @returns\n */\nexport function simplifyTree<T>(tree: Tree<T>): Tree<T> {\n const keys = Object.keys(tree);\n if (keys.length <= 1) return tree; // ✅ Don't simplify if only one path\n\n // Parse all paths into number arrays\n const parsedPaths = keys.map((path) => path.split(\";\").map(Number));\n\n // Find common prefix\n let prefixLength = parsedPaths[0].length;\n for (let i = 1; i < parsedPaths.length; i++) {\n const path = parsedPaths[i];\n for (let j = 0; j < prefixLength; j++) {\n if (path[j] !== parsedPaths[0][j]) {\n prefixLength = j;\n break;\n }\n }\n }\n\n const simplified: Tree<T> = {};\n\n for (let i = 0; i < parsedPaths.length; i++) {\n const oldPath = keys[i];\n const newPath = parsedPaths[i].slice(prefixLength).join(\";\");\n\n simplified[newPath] = tree[oldPath];\n }\n\n return simplified;\n}\n\n/**\n * Expands a tree by applying a function to each item in the tree.\n * @param tree\n * @param fn\n * @returns\n */\nexport function expandTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U[]\n): Tree<U> {\n const result: Tree<U> = {};\n\n for (const path in tree) {\n const items = tree[path];\n\n items.forEach((item, i) => {\n const subpath = `${path};${i}`; // Create new sub-branch per item\n const expandedItems = fn(item, path, i); // Apply function\n\n // if (expandedItems.length > 0) {\n result[subpath] = expandedItems;\n // }\n });\n }\n\n return result;\n}\n\n/**\n * Creates a new branch for each item in the existing tree branches\n * @param tree\n * @returns\n */\nexport function graftTree<T>(tree: Tree<T>): Tree<T> {\n return Object.fromEntries(\n Object.entries(tree as Tree<any>).reduce((entries, [path, values]) => {\n entries.push(\n ...values.map(\n (value, index) =>\n [path + \";\" + index, [value]] as [string, any[]]\n )\n );\n return entries;\n }, [] as [string, any[]][])\n );\n}\n\n/**\n * Reduce the complexity of a tree by merging the outermost branches.\n * @param tree\n */\nexport function trimTree<T>(tree: Tree<T>, depth = 1): Tree<T> {\n if (depth <= 0) return tree;\n\n const result: Tree<T> = {};\n for (const path in tree) {\n const parts = path.split(\";\");\n // leave at least a path length of 1\n const end = depth >= parts.length ? 1 : -depth;\n const newPath = parts.slice(0, end).join(\";\");\n if (!result[newPath]) {\n result[newPath] = [];\n }\n // flatten onto new branch\n result[newPath].push(...tree[path]);\n }\n return result;\n}\n\n/**\n * checks if the given structure is a data tree\n */\nexport function isTree(value: any): value is Tree<any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every((v) => Array.isArray(v))\n );\n}\n\nexport function isSingleTon(value: Tree<any>): boolean {\n return (\n Object.keys(value).length === 1 && Object.values(value)[0].length === 1\n );\n}\n\n/**\n * turns a value or array of values into a tree\n */\nexport function broadCast<T>(value: T | T[] | Tree<T>): Tree<T> {\n if (Array.isArray(value)) {\n return { \"0\": value };\n }\n if (isTree(value)) {\n return value;\n }\n return { \"0\": [value] };\n}\n\nexport function getBranch<T>(tree: Tree<T>, path: string): T[] | void {\n return tree[path];\n}\n\n/**\n * maps a tree, the tree branches are flatmapped, so if an array is returned for each item in the list, a flat list is returned\n * @param tree\n * @param fn\n * @returns\n */\nexport function mapTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U | U[]\n): Tree<U> {\n return nAryOnTree([tree], ([item], [path], index) => {\n return fn(item, path, index);\n });\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n return nAryOnTreeBranch([tree], ([branch], [path]) => {\n return fn(branch, path);\n });\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 // if (!trees.every((t) => Object.keys(t).length > 0)) {\n // return result;\n // }\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 * - return DISCARD to not add the item to the branch\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<R>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => R | R[],\n fill?: boolean\n): Tree<R> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n let results: R[] = [];\n for (let i = 0; i < maxLength; i++) {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n const result = fn(items, paths, i);\n if (result !== DISCARD) {\n results = results.concat(result);\n }\n }\n\n return results;\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (\n itemA: T,\n itemB: U,\n pathA: string,\n pathB: string,\n index: number\n ) => V | V[],\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n description: \"Get a value from an object at a specified path.\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { broadCast } from \"../../DataTree\";\nimport { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n description: \"Outputs a constant value of a specified type\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n default: \"number\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: broadCast(Number(value)) };\n case \"boolean\":\n return { value: broadCast(Boolean(value)) };\n case \"string\":\n return { value: broadCast(String(value)) };\n default:\n // return as is\n return { value: broadCast(value) };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const add: PrimitiveFunction = {\n name: \"add\",\n label: \"Add\",\n description: \"Add two numbers\",\n inputs: {\n a: { type: \"number\", default: 0 },\n b: { type: \"number\", default: 0 },\n },\n outputs: {\n sum: \"number\",\n },\n impl: async (inputs) => {\n return {\n sum: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA + itemB;\n },\n true\n ),\n };\n },\n};\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 divide: PrimitiveFunction = {\n name: \"divide\",\n label: \"Divide\",\n description: \"Divide two numbers\",\n inputs: {\n a: { type: \"number\", default: 1 },\n b: { type: \"number\", default: 1 },\n },\n outputs: {\n quotient: \"number\",\n },\n impl: async (inputs) => {\n return {\n quotient: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA / itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA > itemB;\n },\n true\n ),\n gte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA >= itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA < itemB;\n },\n true\n ),\n lte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA <= itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const multiply: PrimitiveFunction = {\n name: \"multiply\",\n label: \"Multiply\",\n description: \"Multiply two numbers\",\n inputs: {\n a: { type: \"number\", default: 1 },\n b: { type: \"number\", default: 1 },\n },\n outputs: {\n product: \"number\",\n },\n impl: async (inputs) => {\n return {\n product: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA * itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const subtract: PrimitiveFunction = {\n name: \"subtract\",\n label: \"Subtract\",\n description: \"Subtract two numbers\",\n inputs: {\n a: { type: \"number\", default: 0 },\n b: { type: \"number\", default: 0 },\n },\n outputs: {\n difference: \"number\",\n },\n impl: async (inputs) => {\n return {\n difference: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA - itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { add } from \"./add\";\nimport { calc } from \"./calc\";\nimport { divide } from \"./divide\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\nimport { multiply } from \"./multiply\";\nimport { subtract } from \"./subtract\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n [add.name]: add,\n [subtract.name]: subtract,\n [multiply.name]: multiply,\n [divide.name]: divide,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"Filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list || {},\n inputs.keep || {},\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const splitGroup: PrimitiveFunction = {\n name: \"splitGroup\",\n label: \"Split Group\",\n description: \"Splits every item of a group into its own group\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree || {}),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const listItem: PrimitiveFunction = {\n name: \"listItem\",\n label: \"List Item\",\n description: \"Retrieve the items from the list at the specified indices\",\n inputs: {\n list: \"any\",\n index: {\n type: \"number\",\n default: 0,\n },\n },\n outputs: {\n item: \"any\",\n },\n impl: async (inputs) => {\n return {\n // item: mapTreeBranch(inputs.list, (branch, path) => {\n // let indices = getBranch(inputs.index, path);\n // if (indices) {\n // return indices.map((i) => branch[i]);\n // }\n // }),\n\n item: binaryOnTreeBranch(\n inputs.list || {},\n inputs.index || {},\n (branch, indices) => {\n if (indices) {\n return indices.map((i) => branch[i]);\n }\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const listLength: PrimitiveFunction = {\n name: \"listLength\",\n label: \"List Length\",\n description: \"Get the length of a list\",\n inputs: {\n list: \"any\",\n },\n outputs: {\n length: \"number\",\n },\n impl: async (inputs) => {\n return {\n length: mapTreeBranch(inputs.list || {}, (branch) => {\n return [branch.length];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { trimTree as trim } from \"../../DataTree\";\n\nexport const mergeGroup: PrimitiveFunction = {\n name: \"mergeGroup\",\n label: \"Merge Group\",\n description: \"Merge the deepest groups into their parent.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: { type: \"number\", default: 1 }, // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const shiftList: PrimitiveFunction = {\n name: \"shiftList\",\n label: \"Shift List\",\n description:\n \"Shifts the list to the left, removing the first element and adding it at the end if wrap is enabled\",\n inputs: {\n list: \"any\",\n step: { type: \"number\", default: 1, step: 1 },\n wrap: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs, params) => {\n return {\n list: nAryOnTreeBranch(\n [inputs.list || {}, inputs.step || {}, inputs.wrap || {}],\n ([list, step, wrap]) => {\n let n = step[0] ?? 1;\n if (wrap[0]) {\n n = n % (list.length || 1);\n }\n const shifted = list.slice(n);\n if (wrap[0]) {\n shifted.push(...list.slice(0, n));\n }\n return shifted;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { splitGroup } from \"./splitGroup\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { mergeGroup } from \"./mergeGroup\";\nimport { shiftList } from \"./shiftList\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [splitGroup.name]: splitGroup,\n [mergeGroup.name]: mergeGroup,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n [shiftList.name]: shiftList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: { type: \"number\", default: 0 },\n step: { type: \"number\", default: 1 },\n count: { type: \"number\", default: 10 },\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { Tree } from \"../../DataTree\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\n\nexport const mergeTree: PrimitiveFunction = {\n name: \"mergeTree\",\n label: \"Merge Tree\",\n description: \"Merge multiple trees into a single tree.\",\n nodeType: \"Merge\",\n inputs: {},\n outputs: {\n result: \"any\",\n },\n impl: async (inputs): Promise<RecOfTrees> => {\n const result: Tree<any> = {};\n\n Object.values(inputs).forEach((input) => {\n Object.entries(input).forEach(([key, value]) => {\n if (!result[key]) {\n result[key] = value;\n } else {\n result[key] = [...result[key], ...value];\n }\n });\n });\n return { result };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mergeTree } from \"./mergeTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [mergeTree.name]: mergeTree,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupAnd: PrimitiveFunction = {\n name: \"groupAnd\",\n label: \"Group and\",\n description: \"Returns true if all of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc && val, true)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupOr: PrimitiveFunction = {\n name: \"groupOr\",\n label: \"Group or\",\n description: \"Returns true if any of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc || val, false)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { groupAnd } from \"./groupAnd\";\nimport { groupOr } from \"./groupOr\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [groupAnd.name]: groupAnd,\n [groupOr.name]: groupOr,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../Engine/types\";\nimport Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\nimport Tree from \"./Tree\";\nimport Logic from \"./Logic\";\n\nexport const Lib = { Util, Math, List, Sequence, Tree, Logic };\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n ...Logic,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n FunctionCall,\n} from \"./types\";\nimport {\n getValue,\n interpolate,\n isReference,\n parseReference,\n uid,\n} from \"./util\";\n\nexport * from \"./types\";\nexport * from \"./util\";\n\nexport interface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n result?: RecOfTrees;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"functionReult\", name, inputs, params, result);\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"Engine run done\", result, context, endTime - startTime);\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n // console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n // console.log(\n // `Running function: ${node.name}`,\n // node,\n // inputs,\n // params\n // );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n // console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n // console.log(\"Engine running with inputs\", inputs, mappedInputs);\n const result = await node.impl?.(mappedInputs, {});\n // console.log(\"Engine run complete\", result);\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(oldFn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n }\n\n public applyEdgeDelete(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n }\n\n public applyNodeAdd(\n oldFn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n let id = uid();\n // ensure unique id\n while (newFn.body[id]) {\n id = uid();\n }\n // get inputs defaults\n const inputs = {};\n Object.entries(this.fnIndex[nodeName].inputs || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n inputs[key] = normDef.default;\n }\n }\n );\n // get params defaults\n const params = {};\n Object.entries(this.fnIndex[nodeName].params || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n params[key] = normDef.default;\n }\n }\n );\n const newCall: FunctionCall = {\n name: nodeName,\n inputs: inputs,\n params: params,\n };\n newFn.body[id] = newCall;\n callback?.(newCall, id);\n return topSort(newFn);\n }\n\n public applyNodeConnect(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n const from = newFn.body[fromNode];\n const to = { ...newFn.body[toNode] };\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n newFn.body[toNode] = to;\n\n return topSort(newFn);\n }\n}\n","import React from \"react\";\nimport { Engine } from \"../Engine\";\nimport { WidgetProps } from \"./Components/Control\";\n\nconst dummyEngine = new Engine();\n\ntype FlowContextState = {\n engine: Engine;\n controls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n};\n\nexport const FlowContext = React.createContext<FlowContextState>({\n engine: dummyEngine,\n});\n\nexport const useEngine = () => {\n return React.useContext(FlowContext).engine;\n};\n\nexport const useControls = () => {\n return React.useContext(FlowContext).controls || {};\n};\n","import React from \"react\";\nimport { NormalizedVarDef } from \"../../Engine\";\nimport { useControls } from \"../Context\";\nimport rcin from \"rc-input-number\";\n\n// normalizing import\nconst InputNumber = (rcin as any).default ?? rcin;\n\nexport interface WidgetProps<T> {\n value: T;\n vardef: NormalizedVarDef;\n onChange?: (value: T) => void;\n}\n\ninterface ControlProps {\n value: any;\n vardef: NormalizedVarDef;\n onChange?: (value: any) => void;\n}\nexport function Control({ value, vardef, onChange }: ControlProps) {\n const customControls = useControls();\n if (vardef.type in customControls) {\n const ControlComponent = customControls[\n vardef.type\n ] as React.ComponentType<WidgetProps<any>>;\n return (\n <ControlComponent\n value={value}\n vardef={vardef}\n onChange={onChange}\n />\n );\n }\n if (vardef.options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {vardef.options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (vardef.type) {\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <InputNumber\n value={Number(value) || 0}\n onChange={onChange}\n step={vardef.step}\n min={vardef.min}\n max={vardef.max}\n inputMode=\"numeric\"\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({vardef.type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface InputProps {\n name: string;\n varDef: VarDef;\n id: string;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Input = ({ name, varDef, id, data, onClick }: InputProps) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.inputs?.[name];\n const isRef = isReference(value);\n\n const handleInputChange = (param: string) => (value: any) => {\n data.onChange({\n inputs: {\n ...data.inputs,\n [param]: value,\n },\n });\n };\n\n return (\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n {normalized.label || name}\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface ParamProps {\n id: string;\n name: string;\n varDef: VarDef;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Param = ({ id, name, varDef, data, onClick }: ParamProps) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.params?.[name];\n const isRef = isReference(value);\n\n const handleParamChange = (param: string) => (value: any) => {\n data.onChange({\n params: {\n ...data.params,\n [param]: value,\n },\n });\n };\n\n return (\n <div\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>{normalized.label || name}</span>\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface OutputProps {\n name: string;\n varDef: VarDef;\n id: string;\n onClick?: (e: React.MouseEvent) => void;\n focus?: boolean;\n}\nexport const Output = ({ name, varDef, id, onClick, focus }: OutputProps) => {\n const normalized = normalizeVarDef(varDef);\n\n return (\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n className={classNames(\n styles.Output,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>\n {focus && \"👁 \"}\n {normalized.label || name}\n </span>\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { useEngine } from \"../Context\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface NodeContainerProps {\n id?: string;\n label: string;\n className?: string;\n selected?: boolean;\n children?: React.ReactNode;\n}\nexport function NodeContainer({\n id,\n label,\n className,\n selected,\n children,\n}: NodeContainerProps) {\n const engine = useEngine();\n const [active, setActive] = React.useState(false);\n React.useEffect(() => {\n if (!id) return;\n let timer;\n let removeOnCall = engine.subscribe(\"functionCall\", (event) => {\n if (event.name === id) {\n setActive(true);\n }\n });\n let removeOnResult = engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n clearTimeout(timer);\n timer = setTimeout(\n () => setActive(false),\n Math.max(0, 1000 - (event.duration || 0))\n );\n }\n });\n return () => {\n removeOnCall();\n removeOnResult();\n };\n }, [id]);\n return (\n <div\n className={classNames(className, styles.DefaultNode, {\n [styles.selected]: selected,\n [styles.active]: active,\n })}\n >\n <div className={styles.Label}>{label}</div>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface TreeTableProps {\n value: Tree<any> | null;\n}\nfunction TreeTable({ value }: TreeTableProps) {\n return (\n <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td title={JSON.stringify(item, null, 2)}>\n {item?.toString?.()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n );\n}\n\ntype TreeNode<T> = { items: T[] };\ntype TreeBranch<T> = (TreeNode<T> | TreeBranch<T>)[];\n\nfunction createTreeStructure<T = any>(tree: Tree<T>) {\n const keys = Object.keys(tree);\n let structure: any = [];\n\n keys.forEach((key) => {\n let path = key.split(\";\");\n let parent = structure;\n\n for (let i = 0; i < path.length; i++) {\n let part = parseInt(path[i], 10);\n if (!parent[part]) {\n parent[part] = [];\n }\n parent = parent[part];\n }\n parent.push({ items: tree[key] });\n });\n\n return structure as TreeBranch<T>;\n}\n\nfunction TreeBranchView({ branch, name }) {\n return (\n <div>\n <div className={styles.GroupHead}>\n <span>group {name}</span>\n </div>\n <div className={styles.GroupChildren}>\n {branch.map((item, index) => {\n // sub branch\n if (Array.isArray(item)) {\n return (\n <TreeBranchView\n key={index}\n branch={item}\n name={`${name};${index}`}\n />\n );\n }\n // items\n return (\n <div key={index}>\n {item.items.map((it, i) => {\n let label = it?.toString?.();\n if (label === \"[object Object]\") {\n label = \"{...}\";\n }\n return (\n <div\n key={i}\n className={styles.GroupLeaf}\n title={JSON.stringify(it, null, 2)}\n >\n {label}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface TreeViewProps {\n value: Tree<any> | null;\n}\nexport function TreeView({ value }: TreeViewProps) {\n let structure = createTreeStructure(value || {});\n\n return (\n <div>\n {structure.map((branch, index) => (\n <TreeBranchView key={index} branch={branch} name={index} />\n ))}\n </div>\n );\n}\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const [value, setValue] = React.useState<Tree<any> | null>(null);\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setValue(event.context.scope[id]?.data || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n {/* <TreeTable value={value} /> */}\n <TreeView value={value} />\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { FunctionNode } from \"../types\";\nimport { Input } from \"../Components/Input\";\nimport { Param } from \"../Components/Param\";\nimport { Output } from \"../Components/Output\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { RecOfTrees, VarDef } from \"../../Engine\";\nimport { useEngine } from \"../Context\";\nimport { TreeView } from \"../Nodes/Log\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n}: GenericNodeProps) {\n const inputEntries = Object.entries(inputs || data.inputDefs || {});\n const outputEntries = Object.entries(outputs || data.outputDefs || {});\n const paramEntries = Object.entries(params || data.paramDefs || {});\n\n const engine = useEngine();\n const [result, setResult] = React.useState<RecOfTrees>({});\n const [duration, setDuration] = React.useState<number | null>(null);\n const [focus, setFocus] = React.useState<string | null>(\n outputEntries[0]?.[0] || null\n );\n const [showPreview, setShowPreview] = React.useState(false);\n\n const previewValue = focus ? result[focus] : Object.values(result)[0];\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setResult(event.result || {});\n setDuration(event.duration || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer label={data.label} selected={selected} id={id}>\n <div className={styles.Description}>{data.description}</div>\n {children}\n <div className={styles.Ports}>\n {outputEntries.map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n onClick={() => setFocus(name)}\n focus={showPreview && focus === name}\n />\n ))}\n {inputEntries.map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n\n {paramEntries.map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n <div\n className={classNames(styles.PreviewHead, {\n [styles.expanded]: showPreview,\n })}\n onClick={() => setShowPreview(!showPreview)}\n >\n Preview\n </div>\n {showPreview && (\n <div className={styles.Preview}>\n <TreeView value={previewValue} />\n {duration && (\n <div className={styles.Duration}>\n {duration.toFixed(2)} ms\n </div>\n )}\n </div>\n )}\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { FunctionNode } from \"../types\";\nimport { GenericNode } from \"../Components/GenericNode\";\nimport { getUnboundSymbols } from \"../../Primitives/Math/calc\";\n\nimport \"../style/katex.min.css\";\n\nlet math = create(all, {});\n\ntype MathProps = { expr: string; displayMode?: boolean };\n\nexport function MathView({ expr, displayMode = false }: MathProps) {\n let latex = \"\";\n try {\n latex = math.parse(expr).toTex({ parenthesis: \"auto\" });\n } catch (e) {\n latex = String(expr); // fallback on parse error\n }\n const html = katex.renderToString(latex, {\n throwOnError: false,\n displayMode, // true = block, false = inline\n });\n return <span dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport const Calc = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(data.inputDefs || {}) };\n const symbols = getUnboundSymbols(expression as string);\n symbols.forEach((symbol) => {\n if (!inputs[symbol]) {\n inputs[symbol] = {\n type: \"number\",\n };\n }\n });\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={inputs}\n >\n <MathView expr={expression} displayMode />\n </GenericNode>\n );\n }\n);\nCalc.displayName = \"CalcNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { FunctionNode } from \"../types\";\nimport { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n return <GenericNode id={id} data={data} selected={selected} />;\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nfunction uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport const Merge = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n let inputs = Object.fromEntries(\n Object.keys(data.inputs || {}).map((name, i) => [\n name,\n { type: \"any\", label: `D${i + 1}` },\n ])\n );\n let inputCount = Object.keys(inputs).length;\n inputs[uid()] = { type: \"any\", label: `D${inputCount + 1}` };\n let outputs = { ...(data.outputDefs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <div className={styles.Ports}>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n </NodeContainer>\n );\n }\n);\nMerge.displayName = \"MergeNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\nimport { Merge } from \"./Merge\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n Merge,\n};\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ntype Updater<T> = (oldValue: T) => T;\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n let key = `${scope}|${name}`;\n if (persist) {\n let oldData = pget().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n pset({ data });\n } else {\n let oldData = get().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T | Updater<T>) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { useVariable } from \"./useVariable\";\n\ntype Point = { x: number; y: number };\n\nexport function usePositions(fn: GraphedFunction) {\n return useVariable<Record<string, Point>>(\n \"rules\",\n `${fn.name}.positions`,\n {}\n );\n}\n\nexport function useUpdatePositions(fn: GraphedFunction) {\n let [positions, setPositions] = usePositions(fn);\n return React.useCallback(\n (id: string, position: Point) => {\n positions[id] = position;\n setPositions(positions);\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport {\n Engine,\n FunctionCall,\n getReferences,\n GraphedFunction,\n Ref,\n VarRef,\n} from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { create } from \"zustand\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\n// helpers\nfunction updateNodeArguments(\n node: FunctionNode,\n inputs?: VarRef,\n params?: VarRef\n) {\n return {\n ...node,\n data: {\n ...node.data,\n inputs,\n params,\n },\n };\n}\n\n/**\n * TODO: replace this whole thing with a zustand state\n * - whenever the outer function changes, update the inner node graph\n * - but do so useing shallow comparison, so only update changed nodes\n * - also store the node positions in the zustand state, so they are not lost on rerender\n *\n * - state is not persisted in local storage, that is the job of the outer function variable in the page\n */\n\ninterface FlowOptions {\n dragHandle?: string;\n positions?: PositionData;\n onDataChange?: (\n id: string\n ) => (newData: Partial<FunctionNode[\"data\"]>) => void;\n}\n\ninterface FlowState {\n engine: Engine | null;\n fn: GraphedFunction | null;\n options: FlowOptions;\n nodes: FunctionNode[];\n edges: Edge[];\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => void;\n setEdges: (updater: (edges: Edge[]) => Edge[]) => void;\n setFn: (fn: GraphedFunction) => void;\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => void;\n}\n\n/**\n * flow state stores nodes and edges for the flow graph these can be updated when the function changes\n * using setFn\n */\nconst useFlowState = create<FlowState>((set, get) => ({\n engine: null,\n fn: null,\n options: {},\n nodes: [],\n edges: [],\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => {\n set((state) => ({ nodes: updater(state.nodes) }));\n },\n setEdges: (updater: (edges: Edge[]) => Edge[]) => {\n set((state) => ({ edges: updater(state.edges) }));\n },\n setFn: (fn: GraphedFunction) => {\n // console.log(\"setFn\", fn);\n let { fn: oldFn, nodes, edges, engine, options } = get();\n // update the graph by shallow comparison\n\n if (!engine) {\n throw new Error(\"Engine not set\");\n }\n\n let oldKeys = Object.keys(oldFn?.body || {});\n let newKeys = Object.keys(fn.body || {});\n\n // remove all the nodes that were removed\n nodes = nodes?.filter((node) => newKeys.includes(node.id));\n // remove all the edges that were removed\n edges = edges?.filter((edge) => {\n return (\n newKeys.includes(edge.source) && newKeys.includes(edge.target)\n );\n });\n\n // create the new nodes that were added\n let addedKeys = newKeys.filter((key) => !oldKeys.includes(key));\n addedKeys.forEach((key, index) => {\n let fncall = fn.body?.[key];\n\n // add the node\n nodes.push(createNode(engine, key, fncall, options));\n\n // add edges\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // update the changed nodes\n let changedKeys = newKeys.filter((key) => {\n // shallow comparison\n return fn.body?.[key] !== oldFn?.body?.[key];\n });\n // console.log(\"changed keys\", changedKeys);\n changedKeys.forEach((key) => {\n // update the nodes that were changed\n let fncall = fn.body?.[key];\n nodes = nodes?.map((n) => {\n if (n.id === key) {\n return updateNodeArguments(n, fncall.inputs, fncall.params);\n }\n return n;\n });\n\n // update incoming edges\n const refs = getReferences(fncall.inputs || {});\n // remove all incoming edges\n edges = edges?.filter((e) => e.target !== key);\n // add the edge\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // console.log(\"final graph\", nodes, edges);\n\n // update the function, nodes and edges\n set({ fn, nodes, edges });\n },\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => {\n // console.log(\"initing\");\n set({ engine, options });\n get().setFn(fn);\n },\n}));\n\n/**\n * creates a flow state and provides handlers to update nodes and edges\n */\nexport function useFlow(\n fn: GraphedFunction,\n engine: Engine,\n options: FlowOptions\n) {\n let state = useFlowState();\n\n React.useEffect(() => {\n state.init(fn, engine, options);\n }, [engine]);\n\n React.useEffect(() => {\n state.setFn(fn);\n }, [fn]);\n\n return React.useMemo(\n () => ({\n nodes: state.nodes,\n edges: state.edges,\n setNodes: state.setNodes,\n setEdges: state.setEdges,\n }),\n [state]\n );\n}\n\nfunction createNode(\n engine: Engine,\n id: string,\n fncall: FunctionCall,\n options: FlowOptions\n): FunctionNode {\n const calledFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n return {\n id,\n data: {\n name: fncall.name,\n label: fncall.label || calledFn?.label || fncall.name,\n description: calledFn?.description,\n inputs: fncall.inputs,\n params: fncall.params,\n inputDefs: calledFn?.inputs || {},\n paramDefs: calledFn?.params || {},\n outputDefs: calledFn?.outputs || {},\n onChange: options.onDataChange?.(id) || (() => {}),\n },\n position: options.positions?.[id] || { x: 0, y: 0 },\n dragHandle: options.dragHandle,\n type: calledFn?.nodeType || \"Default\",\n };\n}\n\nfunction createEdge(nodeId: string, ref: Ref): Edge {\n return {\n id: `${ref.path}-${nodeId}.${ref.name}`,\n source: ref.refNode,\n target: nodeId,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${nodeId}-${ref.name}`,\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n ConnectionLineComponentProps,\n getSimpleBezierPath,\n Position,\n useConnection,\n} from \"@xyflow/react\";\n\nimport styles from \"./NodeComponents.module.css\";\n\nexport default ({\n fromX,\n fromY,\n toX,\n toY,\n fromHandle,\n fromNode,\n connectionStatus,\n}: ConnectionLineComponentProps) => {\n const { toNode, toHandle } = useConnection();\n\n // correcting the start point as we moved the nodes in our custom ports\n if (fromNode && fromHandle) {\n fromX = fromNode?.position.x + fromHandle.x;\n if (fromHandle.position === \"right\") {\n fromX += fromHandle.width;\n }\n }\n\n if (toNode && toHandle) {\n toX = toHandle.x - toHandle.width / 2; // align to left side of the handle\n if (toHandle.position === \"right\") {\n toX += toHandle.width;\n }\n }\n\n let d = getSimpleBezierPath({\n sourceX: fromX,\n sourceY: fromY,\n targetX: toX,\n targetY: toY,\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n });\n\n return (\n <g\n className={classNames(\n styles.ConnectionPath,\n \"react-flow__connection-path\",\n { [styles.valid]: connectionStatus === \"valid\" }\n )}\n >\n <path d={d[0]} />\n </g>\n );\n};\n","import React from \"react\";\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n Node,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useOnSelectionChange,\n XYPosition,\n} from \"@xyflow/react\";\nimport { useDrop } from \"react-dnd\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { FlowContext } from \"./Context\";\nimport { WidgetProps } from \"./Components/Control\";\nimport { usePositions, useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\nimport { FunctionNode, NodeDropItem, Updater } from \"./types\";\nimport ConnectionLine from \"./Components/ConnectionLine\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\n/**\n * goal: this component should only be responsible for updating the inner node graph, it should call the onChange handler\n * on any change, but not rerender when the given function changes, as it slows down the interface drastically\n */\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (updater: Updater<GraphedFunction>) => void;\n onClick?: (event: React.MouseEvent, position: XYPosition) => void;\n onSelect?: (ids: string[]) => void;\n customControls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n}\nfunction FlowInner({\n function: fn,\n engine,\n onChange,\n onClick,\n onSelect,\n}: FlowProps) {\n const [instance, setInstance] = React.useState<ReactFlowInstance | null>(\n null\n );\n\n let updatePosition = useUpdatePositions(fn);\n let [positions] = usePositions(fn);\n\n const handleDataChange =\n (id: string) => (newData: Partial<FunctionNode[\"data\"]>) => {\n onChange?.((fn) => {\n // update the function definition\n // console.log(\"before fn call update\", Object.keys(fn.body));\n const body = { ...fn.body };\n const fncall = { ...(body[id] || {}), ...newData };\n body[id] = fncall;\n // console.log(\"after fn call update\", Object.keys(body));\n const updatedFn = { ...fn, body };\n return updatedFn;\n });\n };\n\n let { nodes, edges, setNodes, setEdges } = useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n positions,\n onDataChange: handleDataChange,\n });\n\n // node selection handler\n const handleSelect = React.useCallback(\n ({ nodes }) => {\n onSelect?.(nodes.map((n: Node) => n.id) || []);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleSelect,\n });\n\n // dropping nodes\n let [{ isOver }, drop] = useDrop({\n accept: \"flow-node\",\n drop: (item: NodeDropItem, monitor) => {\n let pos = monitor.getClientOffset();\n\n if (instance && pos) {\n const position = instance.screenToFlowPosition(pos);\n // console.log(\"handle drop\", position);\n\n onChange?.((fn) => {\n return engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n // console.log(\"node added\", id, position);\n updatePosition(id, position);\n });\n });\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // connecting nodes\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.((fn) =>\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n },\n [fn, onChange]\n );\n\n // deleting nodes\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.((fn) =>\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n },\n [onChange, fn]\n );\n\n // deleting edges\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n onChange?.((fn) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n return newFn;\n });\n },\n [onChange, fn]\n );\n\n // handle canvas clicks to be able to place nodes\n const handleClick = (e: React.MouseEvent) => {\n if (instance) {\n const position = instance.screenToFlowPosition({\n x: e.clientX,\n y: e.clientY,\n });\n onClick?.(e, position);\n }\n };\n\n const onNodesChange = React.useCallback(\n (changes) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n []\n );\n const onEdgesChange = React.useCallback(\n (changes) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n []\n );\n\n return (\n <ReactFlow\n ref={drop as any}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={(e, n) => updatePosition(n.id, n.position)}\n onConnect={onConnect}\n onInit={setInstance}\n onPaneClick={handleClick}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n maxZoom={4}\n deleteKeyCode={\"Delete\"}\n connectionLineComponent={ConnectionLine}\n >\n <Background variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({\n function: fn,\n engine,\n onChange = () => {},\n onClick,\n onSelect,\n customControls,\n}: FlowProps) {\n return (\n <FlowContext.Provider value={{ engine, controls: customControls }}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n onClick={onClick}\n onSelect={onSelect}\n />\n </ReactFlowProvider>\n </FlowContext.Provider>\n );\n}\n","import { ConnectableElement, useDrag } from \"react-dnd\";\n\nimport { PrimitiveFunction } from \"../Engine\";\nimport { NodeDropItem } from \"../Flow\";\n\nexport function useDraggableNode(name: string, fn: PrimitiveFunction) {\n let [, drag] = useDrag<NodeDropItem>({\n type: \"flow-node\",\n item: { name, fn },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n return (ref: ConnectableElement) => drag(ref);\n}\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\n/**\n * using functions\n *\n * in React context\n * - use useFunction. This will build the function, mount it if needed and provides a run function.\n *\n *\n * in Vanilla context\n * - use engine.build(fn) to build the function\n * - use engine.mount(fn) to mount the function (if it has a mount function)\n * - use await engine.run(fn, inputs) to run the function and get the result\n */\n\nexport function useFunction(\n engine: Engine,\n fn: GraphedFunction,\n mount?: boolean\n) {\n const [result, setResult] = React.useState<any>(null);\n const builtFn = React.useMemo(() => engine.build(fn), [fn]);\n React.useEffect(() => {\n if (mount) {\n return engine.mount(builtFn);\n }\n }, [builtFn, mount]);\n\n const run = React.useCallback(\n async (inputs?: Record<string, any>) => {\n const result = await engine.run(builtFn, inputs);\n setResult(result);\n return result;\n },\n [builtFn]\n );\n\n return React.useMemo(\n () => ({\n fn: builtFn,\n run,\n result,\n }),\n [builtFn, run, result]\n );\n}\n"],"names":["uid","getValue","getVal","primitives","_a","math","graft","trim","Util","Math","List","Sequence","Logic","Tree","styles","create"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.esm.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/add.ts","../src/lib/Primitives/Math/calc.ts","../src/lib/Primitives/Math/divide.ts","../src/lib/Primitives/Math/greaterThan.ts","../src/lib/Primitives/Math/lessThan.ts","../src/lib/Primitives/Math/multiply.ts","../src/lib/Primitives/Math/subtract.ts","../src/lib/Primitives/Math/index.ts","../src/lib/Primitives/List/filterList.ts","../src/lib/Primitives/List/splitGroup.ts","../src/lib/Primitives/List/listItem.ts","../src/lib/Primitives/List/listLength.ts","../src/lib/Primitives/List/mergeGroup.ts","../src/lib/Primitives/List/shiftList.ts","../src/lib/Primitives/List/index.ts","../src/lib/Primitives/Sequence/series.ts","../src/lib/Primitives/Sequence/index.ts","../src/lib/Primitives/Tree/mergeTree.ts","../src/lib/Primitives/Tree/index.ts","../src/lib/Primitives/Logic/groupAnd.ts","../src/lib/Primitives/Logic/groupOr.ts","../src/lib/Primitives/Logic/index.ts","../src/lib/Primitives/index.ts","../src/lib/Engine/Rule.ts","../src/lib/Engine/index.ts","../node_modules/react-dnd/dist/core/DndContext.js","../node_modules/@react-dnd/invariant/dist/index.js","../node_modules/fast-deep-equal/index.js","../node_modules/react-dnd/dist/hooks/useIsomorphicLayoutEffect.js","../node_modules/react-dnd/dist/hooks/useCollector.js","../node_modules/react-dnd/dist/hooks/useMonitorOutput.js","../node_modules/react-dnd/dist/hooks/useCollectedProps.js","../node_modules/react-dnd/dist/hooks/useOptionalFactory.js","../node_modules/react-dnd/dist/hooks/useDrag/connectors.js","../node_modules/react-dnd/dist/internals/DragSourceMonitorImpl.js","../node_modules/react-dnd/dist/internals/DropTargetMonitorImpl.js","../node_modules/react-dnd/dist/internals/registration.js","../node_modules/@react-dnd/shallowequal/dist/index.js","../node_modules/react-dnd/dist/internals/isRef.js","../node_modules/react-dnd/dist/internals/wrapConnectorHooks.js","../node_modules/react-dnd/dist/internals/SourceConnector.js","../node_modules/react-dnd/dist/internals/TargetConnector.js","../node_modules/react-dnd/dist/hooks/useDragDropManager.js","../node_modules/react-dnd/dist/hooks/useDrag/useDragSourceConnector.js","../node_modules/react-dnd/dist/hooks/useDrag/useDragSourceMonitor.js","../node_modules/react-dnd/dist/hooks/useDrag/DragSourceImpl.js","../node_modules/react-dnd/dist/hooks/useDrag/useDragSource.js","../node_modules/react-dnd/dist/hooks/useDrag/useDragType.js","../node_modules/react-dnd/dist/hooks/useDrag/useRegisteredDragSource.js","../node_modules/react-dnd/dist/hooks/useDrag/useDrag.js","../node_modules/react-dnd/dist/hooks/useDrop/connectors.js","../node_modules/react-dnd/dist/hooks/useDrop/useDropTargetConnector.js","../node_modules/react-dnd/dist/hooks/useDrop/useDropTargetMonitor.js","../node_modules/react-dnd/dist/hooks/useDrop/useAccept.js","../node_modules/react-dnd/dist/hooks/useDrop/DropTargetImpl.js","../node_modules/react-dnd/dist/hooks/useDrop/useDropTarget.js","../node_modules/react-dnd/dist/hooks/useDrop/useRegisteredDropTarget.js","../node_modules/react-dnd/dist/hooks/useDrop/useDrop.js","../src/lib/Flow/Context.tsx","../src/lib/Flow/Components/Control.tsx","../src/lib/Flow/Components/Input.tsx","../src/lib/Flow/Components/Param.tsx","../src/lib/Flow/Components/Output.tsx","../src/lib/Flow/Components/NodeContainer.tsx","../src/lib/Flow/Nodes/Log.tsx","../src/lib/Flow/Components/GenericNode.tsx","../src/lib/Flow/Nodes/Calc.tsx","../src/lib/Flow/Nodes/Default.tsx","../src/lib/Flow/Nodes/Merge.tsx","../src/lib/Flow/Nodes/index.ts","../src/lib/hooks/useVariable.ts","../src/lib/hooks/usePositions.ts","../src/lib/hooks/useFlow.ts","../src/lib/Flow/Components/ConnectionLine.tsx","../src/lib/Flow/index.tsx","../src/lib/hooks/useDraggableNode.ts","../src/lib/hooks/useFunction.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Tree } from \"./types\";\n\nexport * from \"./types\";\n\nexport const DISCARD = Symbol(\"DISCARD\");\n\n/**\n * removes the common prefix from the paths in the tree\n * @param tree\n * @returns\n */\nexport function simplifyTree<T>(tree: Tree<T>): Tree<T> {\n const keys = Object.keys(tree);\n if (keys.length <= 1) return tree; // ✅ Don't simplify if only one path\n\n // Parse all paths into number arrays\n const parsedPaths = keys.map((path) => path.split(\";\").map(Number));\n\n // Find common prefix\n let prefixLength = parsedPaths[0].length;\n for (let i = 1; i < parsedPaths.length; i++) {\n const path = parsedPaths[i];\n for (let j = 0; j < prefixLength; j++) {\n if (path[j] !== parsedPaths[0][j]) {\n prefixLength = j;\n break;\n }\n }\n }\n\n const simplified: Tree<T> = {};\n\n for (let i = 0; i < parsedPaths.length; i++) {\n const oldPath = keys[i];\n const newPath = parsedPaths[i].slice(prefixLength).join(\";\");\n\n simplified[newPath] = tree[oldPath];\n }\n\n return simplified;\n}\n\n/**\n * Expands a tree by applying a function to each item in the tree.\n * @param tree\n * @param fn\n * @returns\n */\nexport function expandTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U[]\n): Tree<U> {\n const result: Tree<U> = {};\n\n for (const path in tree) {\n const items = tree[path];\n\n items.forEach((item, i) => {\n const subpath = `${path};${i}`; // Create new sub-branch per item\n const expandedItems = fn(item, path, i); // Apply function\n\n // if (expandedItems.length > 0) {\n result[subpath] = expandedItems;\n // }\n });\n }\n\n return result;\n}\n\n/**\n * Creates a new branch for each item in the existing tree branches\n * @param tree\n * @returns\n */\nexport function graftTree<T>(tree: Tree<T>): Tree<T> {\n return Object.fromEntries(\n Object.entries(tree as Tree<any>).reduce((entries, [path, values]) => {\n entries.push(\n ...values.map(\n (value, index) =>\n [path + \";\" + index, [value]] as [string, any[]]\n )\n );\n return entries;\n }, [] as [string, any[]][])\n );\n}\n\n/**\n * Reduce the complexity of a tree by merging the outermost branches.\n * @param tree\n */\nexport function trimTree<T>(tree: Tree<T>, depth = 1): Tree<T> {\n if (depth <= 0) return tree;\n\n const result: Tree<T> = {};\n for (const path in tree) {\n const parts = path.split(\";\");\n // leave at least a path length of 1\n const end = depth >= parts.length ? 1 : -depth;\n const newPath = parts.slice(0, end).join(\";\");\n if (!result[newPath]) {\n result[newPath] = [];\n }\n // flatten onto new branch\n result[newPath].push(...tree[path]);\n }\n return result;\n}\n\n/**\n * checks if the given structure is a data tree\n */\nexport function isTree(value: any): value is Tree<any> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every((v) => Array.isArray(v))\n );\n}\n\nexport function isSingleTon(value: Tree<any>): boolean {\n return (\n Object.keys(value).length === 1 && Object.values(value)[0].length === 1\n );\n}\n\n/**\n * turns a value or array of values into a tree\n */\nexport function broadCast<T>(value: T | T[] | Tree<T>): Tree<T> {\n if (Array.isArray(value)) {\n return { \"0\": value };\n }\n if (isTree(value)) {\n return value;\n }\n return { \"0\": [value] };\n}\n\nexport function getBranch<T>(tree: Tree<T>, path: string): T[] | void {\n return tree[path];\n}\n\n/**\n * maps a tree, the tree branches are flatmapped, so if an array is returned for each item in the list, a flat list is returned\n * @param tree\n * @param fn\n * @returns\n */\nexport function mapTree<T, U>(\n tree: Tree<T>,\n fn: (item: T, path: string, index: number) => U | U[]\n): Tree<U> {\n return nAryOnTree([tree], ([item], [path], index) => {\n return fn(item, path, index);\n });\n}\n\nexport function mapTreeBranch<T, U>(\n tree: Tree<T>,\n fn: (branch: T[], path: string) => U[] | undefined\n): Tree<U> {\n return nAryOnTreeBranch([tree], ([branch], [path]) => {\n return fn(branch, path);\n });\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 // if (!trees.every((t) => Object.keys(t).length > 0)) {\n // return result;\n // }\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 * - return DISCARD to not add the item to the branch\n * @param trees\n * @param fn\n * @returns\n */\nexport function nAryOnTree<R>(\n trees: Tree<any>[],\n fn: (items: any[], paths: string[], index: number) => R | R[],\n fill?: boolean\n): Tree<R> {\n return nAryOnTreeBranch(trees, (branches, paths) => {\n const maxLength = Math.max(...branches.map((b) => b.length));\n if (maxLength === 0) return; // Skip empty branches\n\n let results: R[] = [];\n for (let i = 0; i < maxLength; i++) {\n const items = branches.map((b) => {\n if (fill) {\n // repeat last item if index exceeds branch length\n return b[Math.min(i, b.length - 1)];\n }\n return b[i];\n });\n const result = fn(items, paths, i);\n if (result !== DISCARD) {\n results = results.concat(result);\n }\n }\n\n return results;\n });\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTreeBranch<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (branchA: T[], branchB: U[], pathA: string, pathB: string) => V[] | void\n): Tree<V> {\n return nAryOnTreeBranch(\n [treeA, treeB],\n ([branchA, branchB], [pathA, pathB]) => {\n return fn(branchA, branchB, pathA, pathB);\n }\n );\n}\n\n/**\n * binary operation on a tree, branch by branch\n * - branches are matched by index,\n * - last branches are repeated when the branch count differs\n * - branch names from the longest or first tree are used\n * - if a corresponding index does not exist in the branch, its item argument is undefined\n * - the callback function is called with (itemA, itemB, pathA, pathB, index)\n * @param treeA\n * @param treeB\n * @param fn\n * @returns\n */\nexport function binaryOnTree<T, U, V>(\n treeA: Tree<T>,\n treeB: Tree<U>,\n fn: (\n itemA: T,\n itemB: U,\n pathA: string,\n pathB: string,\n index: number\n ) => V | V[],\n fill?: boolean\n): Tree<V> {\n return nAryOnTree(\n [treeA, treeB],\n ([itemA, itemB], [pathA, pathB], index) => {\n return fn(itemA, itemB, pathA, pathB, index);\n },\n fill\n );\n}\n\nexport function treeSize<T>(tree: Tree<T>): number {\n return Object.keys(tree).length;\n}\n\nexport function sameShape(a: Tree<any>, b: Tree<any>) {\n let sa = Object.keys(a).sort().join(\"|\");\n let sb = Object.keys(b).sort().join(\"|\");\n return sa === sb;\n}\n\n/**\n * flattens the whole tree into an array\n */\nexport function toArray<T>(a: Tree<T>): T[] {\n return Object.values(a).flat();\n}\n","// utilities\n\nimport { Path, Tree } from \"./types\";\n\n/**\n * small utilities for path manipulation and tree manipulation\n */\n\n/**\n * trims leading and trailing semicolons from a path\n * @param p\n * @returns\n */\nexport function norm(p: Path) {\n return p.replace(/^;+|;+$/g, \"\");\n}\n\n/**\n * joins two paths with a semicolon, normalizing them first\n * @param a\n * @param b\n * @returns\n */\nexport function joinPath(a: Path, b: Path) {\n return [norm(a), norm(b)].filter(Boolean).join(\";\"); // \"\" + \"0;1\" -> \"0;1\"\n}\n\n/**\n * merges two trees by concatenating the branches with the same path\n * @param a\n * @param b\n * @returns\n */\nexport function mergeTrees<T>(a: Tree<T>, b: Tree<T>): Tree<T> {\n const out: Tree<T> = { ...a };\n for (const [k, arr] of Object.entries(b)) {\n out[k] = (out[k] ?? []).concat(arr);\n }\n return out;\n}\n\n/**\n * prefixes all paths in the tree with the given prefix\n * @param t\n * @param prefix\n * @returns\n */\nexport function prefixPaths<T>(t: Tree<T>, prefix: Path): Tree<T> {\n if (!prefix || prefix === \"\") return t;\n const out: Tree<T> = {};\n for (const [k, arr] of Object.entries(t)) {\n out[joinPath(prefix, k)] = arr.slice();\n }\n return out;\n}\n","import {\n broadCast,\n isTree,\n mapTree,\n nAryOnTree,\n nAryOnTreeBranch,\n Tree,\n} from \"../DataTree\";\nimport { mergeTrees } from \"../DataTree/util\";\nimport { VarRef, VarRefValue } from \"./types\";\n\nexport function isReference(value: any): value is string {\n return (\n typeof value === \"string\" &&\n value.startsWith(\"<\") &&\n value.endsWith(\">\")\n );\n}\n\nexport function parseReference(ref: string) {\n return ref.slice(1, -1);\n}\n\nexport function uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport function getValue(obj: Record<string, any>, path: string) {\n if (!(obj && path)) {\n return;\n }\n const parts = path.split(\".\");\n let value: any = obj[parts.shift() || \"\"];\n while (parts.length && value) {\n value = value[parts.shift() || \"\"];\n }\n return value;\n}\n\nfunction interpolateValue(\n value: VarRefValue | VarRefValue[],\n scope: Record<string, Record<string, Tree<any>>>\n): any {\n if (Array.isArray(value)) {\n if (!value.length) return broadCast([]);\n if (!value.every(isTree)) {\n // interpolate to an array of trees\n let mappedValue = value.map((v) => interpolateValue(v, scope));\n if (!mappedValue.every(isTree)) {\n // this is a bit of a hack when the values were all plain values\n // in that case, just return them, which will result in a single tree\n return mappedValue;\n }\n\n // then, for each value, combine the branches with the same index\n return nAryOnTreeBranch(mappedValue, (branches) => branches.flat());\n } else {\n // combine the trees into one\n const tree: Tree<any> = value.reduce(\n (acc: Tree<any>, t: Tree<any>) => mergeTrees(acc, t)\n );\n return mapTree(tree, (v) => interpolateValue(v, scope));\n }\n\n return broadCast(value);\n }\n if (isTree(value)) {\n return mapTree(value, (v) => interpolateValue(v, scope));\n }\n if (typeof value === \"object\" && value !== null) {\n if (Object.keys(value).length === 0) {\n return {};\n }\n // interpolate to a record of trees:\n let interpolated = interpolate(value as VarRef, scope);\n\n // then, for each value, combine the branches with the same index\n const keys = Object.keys(interpolated);\n return nAryOnTree(Object.values(interpolated), (items) => {\n return Object.fromEntries(\n items.map((item, keyIndex) => {\n return [keys[keyIndex], item];\n })\n );\n });\n }\n if (!isReference(value)) {\n return value;\n }\n const parts = parseReference(value).split(\".\");\n let mappedValue = getValue(scope, parts.slice(0, 2).join(\".\"));\n if (parts.length > 2) {\n // deep interpolate\n mappedValue = mapTree(mappedValue, (v: any) =>\n getValue(v, parts.slice(2).join(\".\"))\n );\n }\n return mappedValue;\n}\n\nexport function interpolate(\n inputs: VarRef,\n scope: Record<string, Record<string, Tree<any>>>\n): Record<string, Tree<any>> {\n return Object.fromEntries(\n Object.entries(inputs).map(([key, value]) => {\n let mappedValue = interpolateValue(value, scope);\n return [key, broadCast(mappedValue)];\n })\n );\n}\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mapTree, toArray } from \"../../DataTree\";\nimport { getValue as getVal } from \"../../Engine/util\";\n\n/**\n * TODO: need rank polymorhism on the tree item sizes\n */\nexport const getValue: PrimitiveFunction = {\n name: \"getValue\",\n label: \"Get Value\",\n description: \"Get a value from an object at a specified path.\",\n inputs: {\n tree: \"any\",\n path: \"string\",\n },\n outputs: {\n tree: \"any\",\n },\n // TODO: may want to do something with other values of path\n impl: async (inputs, params) => {\n const paths = toArray<string>(inputs.path || {});\n const tree = mapTree(inputs.tree, (value) => {\n // get the property from the object\n return getVal(value, paths[0]);\n });\n\n return { tree };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\n\nexport const log: PrimitiveFunction = {\n name: \"log\",\n label: \"Log\",\n description: \"Logs the input data to the console\",\n nodeType: \"Log\",\n inputs: {\n data: \"any\",\n },\n outputs: {\n data: \"any\", // Return the data for potential further use\n },\n impl: async (input) => {\n console.table(input.data);\n return {\n data: input.data, // Return the data for potential further use\n };\n },\n};\n","import { broadCast } from \"../../DataTree\";\nimport { PrimitiveFunction } from \"../../Engine\";\n\n/**\n * value primitive function\n */\nexport const value: PrimitiveFunction = {\n name: \"value\",\n label: \"Value\",\n description: \"Outputs a constant value of a specified type\",\n inputs: {},\n params: {\n value: \"string\",\n type: {\n type: \"string\",\n default: \"number\",\n options: [\"number\", \"boolean\", \"string\"],\n },\n },\n outputs: {\n value: \"any\",\n },\n impl: async (inputs, params) => {\n /** todo: there may be multiple values as an array */\n const value = params.value;\n switch (params.type) {\n case \"number\":\n return { value: broadCast(Number(value)) };\n case \"boolean\":\n return { value: broadCast(Boolean(value)) };\n case \"string\":\n return { value: broadCast(String(value)) };\n default:\n // return as is\n return { value: broadCast(value) };\n }\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { getValue } from \"./getValue\";\nimport { log } from \"./log\";\nimport { value } from \"./value\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [getValue.name]: getValue,\n [log.name]: log,\n [value.name]: value,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const add: PrimitiveFunction = {\n name: \"add\",\n label: \"Add\",\n description: \"Add two numbers\",\n inputs: {\n a: { type: \"number\", default: 0 },\n b: { type: \"number\", default: 0 },\n },\n outputs: {\n sum: \"number\",\n },\n impl: async (inputs) => {\n return {\n sum: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA + itemB;\n },\n true\n ),\n };\n },\n};\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, DISCARD } from \"../../DataTree\";\n\nexport const divide: PrimitiveFunction = {\n name: \"divide\",\n label: \"Divide\",\n description: \"Divide two numbers\",\n inputs: {\n a: { type: \"number\", default: 1 },\n b: { type: \"number\", default: 1 },\n },\n outputs: {\n quotient: \"number\",\n },\n impl: async (inputs) => {\n return {\n quotient: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n if (itemB === 0) return DISCARD;\n return itemA / itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const greaterThan: PrimitiveFunction = {\n name: \"greaterThan\",\n label: \"Greater Than\",\n description: \"Compare on greater than or greater than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n gt: \"boolean\",\n gte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n gt: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA > itemB;\n },\n true\n ),\n gte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA >= itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const lessThan: PrimitiveFunction = {\n name: \"lessThan\",\n label: \"Less Than\",\n description: \"Compare on less than or less than or equal to\",\n inputs: {\n a: \"number\",\n b: \"number\",\n },\n outputs: {\n lt: \"boolean\",\n lte: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n lt: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA < itemB;\n },\n true\n ),\n lte: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA <= itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const multiply: PrimitiveFunction = {\n name: \"multiply\",\n label: \"Multiply\",\n description: \"Multiply two numbers\",\n inputs: {\n a: { type: \"number\", default: 1 },\n b: { type: \"number\", default: 1 },\n },\n outputs: {\n product: \"number\",\n },\n impl: async (inputs) => {\n return {\n product: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA * itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTree } from \"../../DataTree\";\n\nexport const subtract: PrimitiveFunction = {\n name: \"subtract\",\n label: \"Subtract\",\n description: \"Subtract two numbers\",\n inputs: {\n a: { type: \"number\", default: 0 },\n b: { type: \"number\", default: 0 },\n },\n outputs: {\n difference: \"number\",\n },\n impl: async (inputs) => {\n return {\n difference: binaryOnTree(\n inputs.a,\n inputs.b,\n (itemA, itemB) => {\n return itemA - itemB;\n },\n true\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { add } from \"./add\";\nimport { calc } from \"./calc\";\nimport { divide } from \"./divide\";\nimport { greaterThan } from \"./greaterThan\";\nimport { lessThan } from \"./lessThan\";\nimport { multiply } from \"./multiply\";\nimport { subtract } from \"./subtract\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [calc.name]: calc,\n [lessThan.name]: lessThan,\n [greaterThan.name]: greaterThan,\n [add.name]: add,\n [subtract.name]: subtract,\n [multiply.name]: multiply,\n [divide.name]: divide,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const filterList: PrimitiveFunction = {\n name: \"filterList\",\n label: \"Filter List\",\n description: \"Filters the list by a boolean value\",\n inputs: {\n list: \"any\",\n keep: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs) => {\n return {\n list: binaryOnTreeBranch(\n inputs.list || {},\n inputs.keep || {},\n (branchA, branchB) => {\n return branchA.filter((item, index) => {\n return (\n branchB[Math.min(index, branchB.length - 1)] ===\n true\n );\n });\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree as graft } from \"../../DataTree\";\n\nexport const splitGroup: PrimitiveFunction = {\n name: \"splitGroup\",\n label: \"Split Group\",\n description: \"Splits every item of a group into its own group\",\n inputs: {\n tree: \"any\",\n },\n outputs: {\n tree: \"any\", // Return the grafted nodes\n },\n impl: async (inputs) => {\n return {\n tree: graft(inputs.tree || {}),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { binaryOnTreeBranch } from \"../../DataTree\";\n\nexport const listItem: PrimitiveFunction = {\n name: \"listItem\",\n label: \"List Item\",\n description: \"Retrieve the items from the list at the specified indices\",\n inputs: {\n list: \"any\",\n index: {\n type: \"number\",\n default: 0,\n },\n },\n outputs: {\n item: \"any\",\n },\n impl: async (inputs) => {\n return {\n // item: mapTreeBranch(inputs.list, (branch, path) => {\n // let indices = getBranch(inputs.index, path);\n // if (indices) {\n // return indices.map((i) => branch[i]);\n // }\n // }),\n\n item: binaryOnTreeBranch(\n inputs.list || {},\n inputs.index || {},\n (branch, indices) => {\n if (indices) {\n return indices.map((i) => branch[i]);\n }\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const listLength: PrimitiveFunction = {\n name: \"listLength\",\n label: \"List Length\",\n description: \"Get the length of a list\",\n inputs: {\n list: \"any\",\n },\n outputs: {\n length: \"number\",\n },\n impl: async (inputs) => {\n return {\n length: mapTreeBranch(inputs.list || {}, (branch) => {\n return [branch.length];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { trimTree as trim } from \"../../DataTree\";\n\nexport const mergeGroup: PrimitiveFunction = {\n name: \"mergeGroup\",\n label: \"Merge Group\",\n description: \"Merge the deepest groups into their parent.\",\n inputs: {\n tree: \"any\",\n },\n params: {\n depth: { type: \"number\", default: 1 }, // Optional depth to trim the tree\n },\n outputs: {\n tree: \"any\", // Return the trimed nodes\n },\n impl: async (inputs, params) => {\n const depth = params.depth ?? 1;\n return {\n tree: trim(inputs.tree, depth),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const shiftList: PrimitiveFunction = {\n name: \"shiftList\",\n label: \"Shift List\",\n description:\n \"Shifts the list to the left, removing the first element and adding it at the end if wrap is enabled\",\n inputs: {\n list: \"any\",\n step: { type: \"number\", default: 1, step: 1 },\n wrap: \"boolean\",\n },\n outputs: {\n list: \"any\",\n },\n impl: async (inputs, params) => {\n return {\n list: nAryOnTreeBranch(\n [inputs.list || {}, inputs.step || {}, inputs.wrap || {}],\n ([list, step, wrap]) => {\n let n = step[0] ?? 1;\n if (wrap[0]) {\n n = n % (list.length || 1);\n }\n const shifted = list.slice(n);\n if (wrap[0]) {\n shifted.push(...list.slice(0, n));\n }\n return shifted;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { filterList } from \"./filterList\";\nimport { splitGroup } from \"./splitGroup\";\nimport { listItem } from \"./listItem\";\nimport { listLength } from \"./listLength\";\nimport { mergeGroup } from \"./mergeGroup\";\nimport { shiftList } from \"./shiftList\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [splitGroup.name]: splitGroup,\n [mergeGroup.name]: mergeGroup,\n [listItem.name]: listItem,\n [listLength.name]: listLength,\n [filterList.name]: filterList,\n [shiftList.name]: shiftList,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { graftTree, nAryOnTree, nAryOnTreeBranch } from \"../../DataTree\";\n\nexport const series: PrimitiveFunction = {\n name: \"series\",\n label: \"Series\",\n description: \"Create a series of numbers.\",\n inputs: {\n start: { type: \"number\", default: 0 },\n step: { type: \"number\", default: 1 },\n count: { type: \"number\", default: 10 },\n },\n outputs: {\n series: \"number\",\n },\n impl: async (inputs) => {\n return {\n series: nAryOnTreeBranch(\n [\n graftTree(inputs.start),\n graftTree(inputs.step),\n graftTree(inputs.count),\n ],\n ([[start = 0], [step = 1], [count = 10]]) => {\n let series: number[] = [];\n for (let i = 0; i < count; i++) {\n series.push(start + i * step);\n }\n return series;\n }\n ),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { series } from \"./series\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [series.name]: series,\n};\n\nexport default primitives;\n","import { Tree } from \"../../DataTree\";\nimport { PrimitiveFunction, RecOfTrees } from \"../../Engine\";\n\nexport const mergeTree: PrimitiveFunction = {\n name: \"mergeTree\",\n label: \"Merge Tree\",\n description: \"Merge multiple trees into a single tree.\",\n nodeType: \"Merge\",\n inputs: {},\n outputs: {\n result: \"any\",\n },\n impl: async (inputs): Promise<RecOfTrees> => {\n const result: Tree<any> = {};\n\n Object.values(inputs).forEach((input) => {\n Object.entries(input).forEach(([key, value]) => {\n if (!result[key]) {\n result[key] = value;\n } else {\n result[key] = [...result[key], ...value];\n }\n });\n });\n return { result };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { mergeTree } from \"./mergeTree\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [mergeTree.name]: mergeTree,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupAnd: PrimitiveFunction = {\n name: \"groupAnd\",\n label: \"Group and\",\n description: \"Returns true if all of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc && val, true)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine/types\";\nimport { mapTreeBranch } from \"../../DataTree\";\n\nexport const groupOr: PrimitiveFunction = {\n name: \"groupOr\",\n label: \"Group or\",\n description: \"Returns true if any of the items in a group are true\",\n inputs: {\n tree: \"boolean\",\n },\n outputs: {\n result: \"boolean\",\n },\n impl: async (inputs) => {\n return {\n result: mapTreeBranch(inputs.tree, (branch) => {\n return [branch.reduce((acc, val) => acc || val, false)];\n }),\n };\n },\n};\n","import { PrimitiveFunction } from \"../../Engine\";\nimport { groupAnd } from \"./groupAnd\";\nimport { groupOr } from \"./groupOr\";\n\nconst primitives: Record<string, PrimitiveFunction> = {\n [groupAnd.name]: groupAnd,\n [groupOr.name]: groupOr,\n};\n\nexport default primitives;\n","import { PrimitiveFunction } from \"../Engine/types\";\nimport Util from \"./Util\";\nimport Math from \"./Math\";\nimport List from \"./List\";\nimport Sequence from \"./Sequence\";\nimport Tree from \"./Tree\";\nimport Logic from \"./Logic\";\n\nexport const Lib = { Util, Math, List, Sequence, Tree, Logic };\n\nexport const primitives: Record<string, PrimitiveFunction> = {\n ...Util,\n ...Math,\n ...List,\n ...Sequence,\n ...Tree,\n ...Logic,\n};\n","import { PrimitiveFunction, AnyFunction } from \"./types\";\n\nexport function isPrimitive(\n node: AnyFunction | PrimitiveFunction\n): node is PrimitiveFunction {\n return (node as PrimitiveFunction).impl !== undefined;\n}\n","import { Tree } from \"../DataTree\";\nimport { primitives } from \"../Primitives\";\nimport { isPrimitive } from \"./Rule\";\nimport {\n GraphedFunction,\n NormalizedVarDef,\n PrimitiveFunction,\n AnyFunction,\n VarDef,\n VarRef,\n RecOfTrees,\n FunctionCall,\n} from \"./types\";\nimport {\n getValue,\n interpolate,\n isReference,\n parseReference,\n uid,\n} from \"./util\";\n\nexport * from \"./types\";\nexport * from \"./util\";\n\nexport interface Ref {\n name: string;\n path: string;\n parts: string[];\n refNode: string;\n refField: string;\n}\n\nexport function normalizeVarDef(varDef: VarDef): NormalizedVarDef {\n if (typeof varDef === \"string\") {\n return {\n type: varDef,\n };\n }\n return varDef as NormalizedVarDef;\n}\n\nexport function getReferences(inputs: VarRef) {\n const references: Ref[] = [];\n Object.entries(inputs).forEach(([name, value]) => {\n const values = Array.isArray(value) ? value : [value];\n values.forEach((value) => {\n if (!isReference(value)) {\n return;\n }\n const path = parseReference(value);\n const parts = path.split(\".\");\n references.push({\n name,\n path,\n parts,\n refNode: parts[0],\n refField: parts.slice(1).join(\".\"),\n });\n });\n });\n return references;\n}\n\nexport function topSort(fn: GraphedFunction): GraphedFunction {\n const ordered: string[] = [];\n const visiting: Set<string> = new Set();\n const done: Set<string> = new Set();\n\n const visit = (id: string) => {\n // if already done, return\n if (done.has(id)) return;\n // if being visited, we have a loop\n if (visiting.has(id)) {\n throw new Error(`Circular dependency detected: ${id}`);\n }\n // mark as visiting\n visiting.add(id);\n const fnCall = fn.body[id];\n if (!fnCall) {\n console.warn(`Function ${id} not found in body`, fn);\n }\n // check the inputs and visit them\n Object.values(fnCall.inputs || {}).forEach((input) => {\n if (isReference(input)) {\n const [id] = parseReference(input).split(\".\");\n // visit inputs\n if (id !== \"inputs\") {\n visit(id);\n }\n }\n });\n // push to end of the list\n ordered.push(id);\n // finish visting\n visiting.delete(id);\n // mark as done\n done.add(id);\n };\n\n Object.keys(fn.body).forEach(visit);\n\n const orderedBody = Object.fromEntries(\n ordered.map((id) => [id, fn.body[id]])\n );\n\n return {\n ...fn,\n body: orderedBody,\n };\n}\n\ninterface ExecutionContext {\n scope: Record<string, Record<string, Tree<any>>>;\n timings: Record<string, number>;\n activations: Record<string, boolean>;\n}\n\ninterface EngineEvent {\n name: string;\n inputs: Record<string, Tree<any>>;\n params: Record<string, any>;\n outputs?: Record<string, Tree<any>>;\n executionId: string;\n context: ExecutionContext;\n result?: RecOfTrees;\n startTime: number;\n endTime?: number;\n duration?: number;\n}\nexport class Engine {\n private fnIndex: Record<string, PrimitiveFunction>;\n private listeners: Record<string, Set<(event: EngineEvent) => void>> = {};\n private cache: Record<string, any> = {};\n private cacheMiss = Symbol(\"cacheMiss\");\n\n constructor(morePrimitives: Record<string, PrimitiveFunction> = {}) {\n this.fnIndex = { ...primitives, ...morePrimitives };\n }\n\n private checkCache(\n fnName: string,\n inputs: RecOfTrees\n ): typeof this.cacheMiss | RecOfTrees {\n if (!this.cache[fnName]) {\n return this.cacheMiss;\n }\n\n // TODO: need to check the interpolated inputs, as the references can be the same\n // however, the interpolation does create new objects\n\n return {};\n }\n\n private async runGraph(node: GraphedFunction, inputs, params) {\n const { body = {} } = node;\n // create execution context\n const executionId = uid();\n const context: ExecutionContext = {\n scope: { inputs },\n timings: {},\n activations: {},\n };\n const startTime = performance.now();\n\n for (const name in body) {\n const fnCall = body[name];\n const fn = this.fnIndex[fnCall.name];\n if (!fn) {\n throw new Error(`function ${fnCall.name} not found in index`);\n }\n // interpolate inputs given the current result\n const inputs = interpolate(fnCall.inputs || {}, context.scope);\n const params = fnCall.params || {};\n let result: RecOfTrees = {};\n\n let cacheResult = this.checkCache(name, inputs);\n if (cacheResult !== this.cacheMiss) {\n // use as result\n result = cacheResult as RecOfTrees;\n // store the result in the scope\n context.scope[name] = result;\n } else {\n // cache miss, call the function implementation\n context.activations[name] = true;\n const startTime = performance.now();\n this.fireEvent(\"functionCall\", {\n name,\n inputs,\n params,\n executionId,\n context,\n startTime,\n });\n result = await fn.impl(inputs, params);\n const endTime = performance.now();\n context.activations[name] = false;\n context.timings[name] = endTime - startTime;\n\n // store the result in the scope\n context.scope[name] = result;\n\n this.fireEvent(\"functionResult\", {\n name,\n inputs,\n params,\n executionId,\n context,\n result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"functionReult\", name, inputs, params, result);\n }\n }\n\n // assemble the result\n const result = interpolate(node.outputs || {}, context.scope);\n const endTime = performance.now();\n\n // fire event\n this.fireEvent(\"result\", {\n name: node.name,\n inputs,\n params,\n executionId,\n context,\n result,\n startTime,\n endTime,\n duration: endTime - startTime,\n });\n\n // console.log(\"Engine run done\", result, context, endTime - startTime);\n\n return result;\n }\n\n /**\n * creates an function that can be evaluated by calling its implementation\n * @param node\n * @returns\n */\n build(node: AnyFunction, id?: string): PrimitiveFunction {\n if (isPrimitive(node)) {\n // already a primitive\n return node;\n }\n const { body = {}, ...props } = node;\n\n const primitive: PrimitiveFunction = {\n ...props,\n outputs: {},\n mount: (trigger) => {\n // mount all the nodes\n const unsubs: (() => void)[] = [];\n Object.values(body).forEach((n) => {\n const fn = this.fnIndex[n.name];\n if (!fn) {\n console.warn(`function ${n.name} not found in index`);\n return;\n }\n const unsub = fn.mount?.(trigger);\n if (unsub) {\n unsubs.push(unsub);\n }\n });\n return () => {\n // console.log(`Unmounting function: ${node.name}`);\n // unmount all the nodes\n for (const unsub of unsubs) {\n unsub();\n }\n };\n },\n impl: async (inputs, params) => {\n // console.log(\n // `Running function: ${node.name}`,\n // node,\n // inputs,\n // params\n // );\n\n return this.runGraph(node, inputs, params);\n },\n };\n\n this.fnIndex[primitive.name] = primitive;\n return primitive;\n }\n\n mount(node: PrimitiveFunction) {\n return node.mount?.(() => {\n // console.log(`Triggering node: ${node.name}`);\n this.run(node);\n });\n }\n\n subscribe(eventName: string, listener: (event: EngineEvent) => void) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = new Set();\n }\n if (!this.listeners[eventName].has(listener)) {\n this.listeners[eventName].add(listener);\n }\n return () => {\n this.listeners[eventName].delete(listener);\n };\n }\n\n fireEvent(eventName: string, event: EngineEvent) {\n for (const listener of this.listeners[eventName] || []) {\n listener(event);\n }\n }\n\n async run(node: AnyFunction, inputs: VarRef = {}) {\n if (!isPrimitive(node)) {\n // check if cached\n let builtFn = this.getFunction(node.name);\n if (!builtFn) {\n // not yet build\n builtFn = this.build(node);\n }\n return this.run(builtFn, inputs);\n }\n\n // pass tree-y-fied input to the node implementation\n const mappedInputs = interpolate(inputs, {});\n // console.log(\"Engine running with inputs\", inputs, mappedInputs);\n const result = await node.impl?.(mappedInputs, {});\n // console.log(\"Engine run complete\", result);\n\n return result;\n }\n\n getFunction(name: string): PrimitiveFunction | undefined {\n return this.fnIndex[name];\n }\n\n // node handlers\n\n public applyNodeDelete(oldFn: GraphedFunction, nodeIds: string[]) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n nodeIds.forEach((id) => {\n delete newFn.body[id];\n });\n // remove any references to the deleted nodes\n Object.entries(newFn.body).forEach(([id, node]) => {\n Object.entries(node.inputs || {}).forEach(([name, value]) => {\n if (isReference(value)) {\n const path = parseReference(value);\n const parts = path.split(\".\");\n if (nodeIds.includes(parts[0])) {\n delete newFn.body[id].inputs?.[name];\n }\n }\n });\n });\n return newFn;\n }\n\n public applyEdgeDelete(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n const from = newFn.body[fromNode];\n const to = newFn.body[toNode];\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for edge deletion\");\n return newFn;\n }\n\n if (to.inputs && to.inputs[toField] === `<${fromNode}.${fromField}>`) {\n delete to.inputs[toField];\n } else {\n console.warn(\"No matching edge found to delete\");\n }\n\n return newFn;\n }\n\n public applyNodeAdd(\n oldFn: GraphedFunction,\n nodeName: string,\n callback?: (newNode: FunctionCall, id: string) => void\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n let id = uid();\n // ensure unique id\n while (newFn.body[id]) {\n id = uid();\n }\n // get inputs defaults\n const inputs = {};\n Object.entries(this.fnIndex[nodeName].inputs || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n inputs[key] = normDef.default;\n }\n }\n );\n // get params defaults\n const params = {};\n Object.entries(this.fnIndex[nodeName].params || {}).forEach(\n ([key, def]) => {\n const normDef = normalizeVarDef(def);\n if (normDef.default !== undefined) {\n params[key] = normDef.default;\n }\n }\n );\n const newCall: FunctionCall = {\n name: nodeName,\n inputs: inputs,\n params: params,\n };\n newFn.body[id] = newCall;\n callback?.(newCall, id);\n return topSort(newFn);\n }\n\n public applyNodeConnect(\n oldFn: GraphedFunction,\n fromNode: string,\n toNode: string,\n fromField: string,\n toField: string\n ) {\n const newFn: GraphedFunction = {\n ...oldFn,\n body: { ...oldFn.body },\n };\n const from = newFn.body[fromNode];\n const to = { ...newFn.body[toNode] };\n\n if (!from || !to) {\n console.warn(\"Invalid nodes for connection\");\n return newFn;\n }\n\n if (!to.inputs) {\n to.inputs = {};\n }\n\n // add the reference\n to.inputs[toField] = `<${fromNode}.${fromField}>`;\n newFn.body[toNode] = to;\n\n return topSort(newFn);\n }\n}\n","import { createContext } from 'react';\n/**\n * Create the React Context\n */ export const DndContext = createContext({\n dragDropManager: undefined\n});\n\n//# sourceMappingURL=DndContext.js.map","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */ export function invariant(condition, format, ...args) {\n if (isProduction()) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n if (!condition) {\n let error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n let argIndex = 0;\n error = new Error(format.replace(/%s/g, function() {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n error.framesToPop = 1 // we don't care about invariant's own frame\n ;\n throw error;\n }\n}\nfunction isProduction() {\n return typeof process !== 'undefined' && process.env['NODE_ENV'] === 'production';\n}\n\n//# sourceMappingURL=index.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { useEffect, useLayoutEffect } from 'react';\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import equal from 'fast-deep-equal';\nimport { useCallback, useState } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */ export function useCollector(monitor, collect, onUpdate) {\n const [collected, setCollected] = useState(()=>collect(monitor)\n );\n const updateCollected = useCallback(()=>{\n const nextValue = collect(monitor);\n // This needs to be a deep-equality check because some monitor-collected values\n // include XYCoord objects that may be equivalent, but do not have instance equality.\n if (!equal(collected, nextValue)) {\n setCollected(nextValue);\n if (onUpdate) {\n onUpdate();\n }\n }\n }, [\n collected,\n monitor,\n onUpdate\n ]);\n // update the collected properties after react renders.\n // Note that the \"Dustbin Stress Test\" fails if this is not\n // done when the component updates\n useIsomorphicLayoutEffect(updateCollected);\n return [\n collected,\n updateCollected\n ];\n}\n\n//# sourceMappingURL=useCollector.js.map","import { useCollector } from './useCollector.js';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';\nexport function useMonitorOutput(monitor, collect, onCollect) {\n const [collected, updateCollected] = useCollector(monitor, collect, onCollect);\n useIsomorphicLayoutEffect(function subscribeToMonitorStateChange() {\n const handlerId = monitor.getHandlerId();\n if (handlerId == null) {\n return;\n }\n return monitor.subscribeToStateChange(updateCollected, {\n handlerIds: [\n handlerId\n ]\n });\n }, [\n monitor,\n updateCollected\n ]);\n return collected;\n}\n\n//# sourceMappingURL=useMonitorOutput.js.map","import { useMonitorOutput } from './useMonitorOutput.js';\nexport function useCollectedProps(collector, monitor, connector) {\n return useMonitorOutput(monitor, collector || (()=>({})\n ), ()=>connector.reconnect()\n );\n}\n\n//# sourceMappingURL=useCollectedProps.js.map","import { useMemo } from 'react';\nexport function useOptionalFactory(arg, deps) {\n const memoDeps = [\n ...deps || []\n ];\n if (deps == null && typeof arg !== 'function') {\n memoDeps.push(arg);\n }\n return useMemo(()=>{\n return typeof arg === 'function' ? arg() : arg;\n }, memoDeps);\n}\n\n//# sourceMappingURL=useOptionalFactory.js.map","import { useMemo } from 'react';\nexport function useConnectDragSource(connector) {\n return useMemo(()=>connector.hooks.dragSource()\n , [\n connector\n ]);\n}\nexport function useConnectDragPreview(connector) {\n return useMemo(()=>connector.hooks.dragPreview()\n , [\n connector\n ]);\n}\n\n//# sourceMappingURL=connectors.js.map","import { invariant } from '@react-dnd/invariant';\nlet isCallingCanDrag = false;\nlet isCallingIsDragging = false;\nexport class DragSourceMonitorImpl {\n receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n getHandlerId() {\n return this.sourceId;\n }\n canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally{\n isCallingCanDrag = false;\n }\n }\n isDragging() {\n if (!this.sourceId) {\n return false;\n }\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally{\n isCallingIsDragging = false;\n }\n }\n subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n getItemType() {\n return this.internalMonitor.getItemType();\n }\n getItem() {\n return this.internalMonitor.getItem();\n }\n getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n didDrop() {\n return this.internalMonitor.didDrop();\n }\n getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n constructor(manager){\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n}\n\n//# sourceMappingURL=DragSourceMonitorImpl.js.map","import { invariant } from '@react-dnd/invariant';\nlet isCallingCanDrop = false;\nexport class DropTargetMonitorImpl {\n receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n getHandlerId() {\n return this.targetId;\n }\n subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally{\n isCallingCanDrop = false;\n }\n }\n isOver(options) {\n if (!this.targetId) {\n return false;\n }\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n getItemType() {\n return this.internalMonitor.getItemType();\n }\n getItem() {\n return this.internalMonitor.getItem();\n }\n getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n didDrop() {\n return this.internalMonitor.didDrop();\n }\n getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n constructor(manager){\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n}\n\n//# sourceMappingURL=DropTargetMonitorImpl.js.map","export function registerTarget(type, target, manager) {\n const registry = manager.getRegistry();\n const targetId = registry.addTarget(type, target);\n return [\n targetId,\n ()=>registry.removeTarget(targetId)\n ];\n}\nexport function registerSource(type, source, manager) {\n const registry = manager.getRegistry();\n const sourceId = registry.addSource(type, source);\n return [\n sourceId,\n ()=>registry.removeSource(sourceId)\n ];\n}\n\n//# sourceMappingURL=registration.js.map","export function shallowEqual(objA, objB, compare, compareContext) {\n let compareResult = compare ? compare.call(compareContext, objA, objB) : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n const bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n // Test for A's keys different from B.\n for(let idx = 0; idx < keysA.length; idx++){\n const key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n const valueA = objA[key];\n const valueB = objB[key];\n compareResult = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n if (compareResult === false || compareResult === void 0 && valueA !== valueB) {\n return false;\n }\n }\n return true;\n}\n\n//# sourceMappingURL=index.js.map","export function isRef(obj) {\n return(// eslint-disable-next-line no-prototype-builtins\n obj !== null && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current'));\n}\n\n//# sourceMappingURL=isRef.js.map","import { invariant } from '@react-dnd/invariant';\nimport { cloneElement, isValidElement } from 'react';\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n const displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' + `You can either wrap ${displayName} into a <div>, or turn it into a ` + 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return (elementOrNode = null, options = null)=>{\n // When passed a node, call the hook straight away.\n if (!isValidElement(elementOrNode)) {\n const node = elementOrNode;\n hook(node, options);\n // return the node so it can be chained (e.g. when within callback refs\n // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n return node;\n }\n // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n const element = elementOrNode;\n throwIfCompositeComponentElement(element);\n // When no options are passed, use the hook directly\n const ref = options ? (node)=>hook(node, options)\n : hook;\n return cloneWithRef(element, ref);\n };\n}\nexport function wrapConnectorHooks(hooks) {\n const wrappedHooks = {};\n Object.keys(hooks).forEach((key)=>{\n const hook = hooks[key];\n // ref objects should be passed straight through without wrapping\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n } else {\n const wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = ()=>wrappedHook\n ;\n }\n });\n return wrappedHooks;\n}\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n}\nfunction cloneWithRef(element, newRef) {\n const previousRef = element.ref;\n invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return cloneElement(element, {\n ref: newRef\n });\n } else {\n return cloneElement(element, {\n ref: (node)=>{\n setRef(previousRef, node);\n setRef(newRef, node);\n }\n });\n }\n}\n\n//# sourceMappingURL=wrapConnectorHooks.js.map","import { shallowEqual } from '@react-dnd/shallowequal';\nimport { isRef } from './isRef.js';\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js';\nexport class SourceConnector {\n receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n get connectTarget() {\n return this.dragSource;\n }\n get dragSourceOptions() {\n return this.dragSourceOptionsInternal;\n }\n set dragSourceOptions(options) {\n this.dragSourceOptionsInternal = options;\n }\n get dragPreviewOptions() {\n return this.dragPreviewOptionsInternal;\n }\n set dragPreviewOptions(options) {\n this.dragPreviewOptionsInternal = options;\n }\n reconnect() {\n const didChange = this.reconnectDragSource();\n this.reconnectDragPreview(didChange);\n }\n reconnectDragSource() {\n const dragSource = this.dragSource;\n // if nothing has changed then don't resubscribe\n const didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n if (didChange) {\n this.disconnectDragSource();\n }\n if (!this.handlerId) {\n return didChange;\n }\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return didChange;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n return didChange;\n }\n reconnectDragPreview(forceDidChange = false) {\n const dragPreview = this.dragPreview;\n // if nothing has changed then don't resubscribe\n const didChange = forceDidChange || this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n if (didChange) {\n this.disconnectDragPreview();\n }\n if (!this.handlerId) {\n return;\n }\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n get dragSource() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n get dragPreview() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n constructor(backend){\n this.hooks = wrapConnectorHooks({\n dragSource: (node, options)=>{\n this.clearDragSource();\n this.dragSourceOptions = options || null;\n if (isRef(node)) {\n this.dragSourceRef = node;\n } else {\n this.dragSourceNode = node;\n }\n this.reconnectDragSource();\n },\n dragPreview: (node, options)=>{\n this.clearDragPreview();\n this.dragPreviewOptions = options || null;\n if (isRef(node)) {\n this.dragPreviewRef = node;\n } else {\n this.dragPreviewNode = node;\n }\n this.reconnectDragPreview();\n }\n });\n this.handlerId = null;\n // The drop target may either be attached via ref or connect function\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null;\n // The drag preview may either be attached via ref or connect function\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n this.backend = backend;\n }\n}\n\n//# sourceMappingURL=SourceConnector.js.map","import { shallowEqual } from '@react-dnd/shallowequal';\nimport { isRef } from './isRef.js';\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js';\nexport class TargetConnector {\n get connectTarget() {\n return this.dropTarget;\n }\n reconnect() {\n // if nothing has changed then don't resubscribe\n const didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n if (didChange) {\n this.disconnectDropTarget();\n }\n const dropTarget = this.dropTarget;\n if (!this.handlerId) {\n return;\n }\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n get dropTargetOptions() {\n return this.dropTargetOptionsInternal;\n }\n set dropTargetOptions(options) {\n this.dropTargetOptionsInternal = options;\n }\n didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n get dropTarget() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n constructor(backend){\n this.hooks = wrapConnectorHooks({\n dropTarget: (node, options)=>{\n this.clearDropTarget();\n this.dropTargetOptions = options;\n if (isRef(node)) {\n this.dropTargetRef = node;\n } else {\n this.dropTargetNode = node;\n }\n this.reconnect();\n }\n });\n this.handlerId = null;\n // The drop target may either be attached via ref or connect function\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n this.backend = backend;\n }\n}\n\n//# sourceMappingURL=TargetConnector.js.map","import { invariant } from '@react-dnd/invariant';\nimport { useContext } from 'react';\nimport { DndContext } from '../core/index.js';\n/**\n * A hook to retrieve the DragDropManager from Context\n */ export function useDragDropManager() {\n const { dragDropManager } = useContext(DndContext);\n invariant(dragDropManager != null, 'Expected drag drop context');\n return dragDropManager;\n}\n\n//# sourceMappingURL=useDragDropManager.js.map","import { useMemo } from 'react';\nimport { SourceConnector } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js';\nexport function useDragSourceConnector(dragSourceOptions, dragPreviewOptions) {\n const manager = useDragDropManager();\n const connector = useMemo(()=>new SourceConnector(manager.getBackend())\n , [\n manager\n ]);\n useIsomorphicLayoutEffect(()=>{\n connector.dragSourceOptions = dragSourceOptions || null;\n connector.reconnect();\n return ()=>connector.disconnectDragSource()\n ;\n }, [\n connector,\n dragSourceOptions\n ]);\n useIsomorphicLayoutEffect(()=>{\n connector.dragPreviewOptions = dragPreviewOptions || null;\n connector.reconnect();\n return ()=>connector.disconnectDragPreview()\n ;\n }, [\n connector,\n dragPreviewOptions\n ]);\n return connector;\n}\n\n//# sourceMappingURL=useDragSourceConnector.js.map","import { useMemo } from 'react';\nimport { DragSourceMonitorImpl } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nexport function useDragSourceMonitor() {\n const manager = useDragDropManager();\n return useMemo(()=>new DragSourceMonitorImpl(manager)\n , [\n manager\n ]);\n}\n\n//# sourceMappingURL=useDragSourceMonitor.js.map","export class DragSourceImpl {\n beginDrag() {\n const spec = this.spec;\n const monitor = this.monitor;\n let result = null;\n if (typeof spec.item === 'object') {\n result = spec.item;\n } else if (typeof spec.item === 'function') {\n result = spec.item(monitor);\n } else {\n result = {};\n }\n return result !== null && result !== void 0 ? result : null;\n }\n canDrag() {\n const spec = this.spec;\n const monitor = this.monitor;\n if (typeof spec.canDrag === 'boolean') {\n return spec.canDrag;\n } else if (typeof spec.canDrag === 'function') {\n return spec.canDrag(monitor);\n } else {\n return true;\n }\n }\n isDragging(globalMonitor, target) {\n const spec = this.spec;\n const monitor = this.monitor;\n const { isDragging } = spec;\n return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n }\n endDrag() {\n const spec = this.spec;\n const monitor = this.monitor;\n const connector = this.connector;\n const { end } = spec;\n if (end) {\n end(monitor.getItem(), monitor);\n }\n connector.reconnect();\n }\n constructor(spec, monitor, connector){\n this.spec = spec;\n this.monitor = monitor;\n this.connector = connector;\n }\n}\n\n//# sourceMappingURL=DragSourceImpl.js.map","import { useEffect, useMemo } from 'react';\nimport { DragSourceImpl } from './DragSourceImpl.js';\nexport function useDragSource(spec, monitor, connector) {\n const handler = useMemo(()=>new DragSourceImpl(spec, monitor, connector)\n , [\n monitor,\n connector\n ]);\n useEffect(()=>{\n handler.spec = spec;\n }, [\n spec\n ]);\n return handler;\n}\n\n//# sourceMappingURL=useDragSource.js.map","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\nexport function useDragType(spec) {\n return useMemo(()=>{\n const result = spec.type;\n invariant(result != null, 'spec.type must be defined');\n return result;\n }, [\n spec\n ]);\n}\n\n//# sourceMappingURL=useDragType.js.map","import { registerSource } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js';\nimport { useDragSource } from './useDragSource.js';\nimport { useDragType } from './useDragType.js';\nexport function useRegisteredDragSource(spec, monitor, connector) {\n const manager = useDragDropManager();\n const handler = useDragSource(spec, monitor, connector);\n const itemType = useDragType(spec);\n useIsomorphicLayoutEffect(function registerDragSource() {\n if (itemType != null) {\n const [handlerId, unregister] = registerSource(itemType, handler, manager);\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }\n return;\n }, [\n manager,\n monitor,\n connector,\n handler,\n itemType\n ]);\n}\n\n//# sourceMappingURL=useRegisteredDragSource.js.map","import { invariant } from '@react-dnd/invariant';\nimport { useCollectedProps } from '../useCollectedProps.js';\nimport { useOptionalFactory } from '../useOptionalFactory.js';\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js';\nimport { useDragSourceConnector } from './useDragSourceConnector.js';\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js';\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */ export function useDrag(specArg, deps) {\n const spec = useOptionalFactory(specArg, deps);\n invariant(!spec.begin, `useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`);\n const monitor = useDragSourceMonitor();\n const connector = useDragSourceConnector(spec.options, spec.previewOptions);\n useRegisteredDragSource(spec, monitor, connector);\n return [\n useCollectedProps(spec.collect, monitor, connector),\n useConnectDragSource(connector),\n useConnectDragPreview(connector), \n ];\n}\n\n//# sourceMappingURL=useDrag.js.map","import { useMemo } from 'react';\nexport function useConnectDropTarget(connector) {\n return useMemo(()=>connector.hooks.dropTarget()\n , [\n connector\n ]);\n}\n\n//# sourceMappingURL=connectors.js.map","import { useMemo } from 'react';\nimport { TargetConnector } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js';\nexport function useDropTargetConnector(options) {\n const manager = useDragDropManager();\n const connector = useMemo(()=>new TargetConnector(manager.getBackend())\n , [\n manager\n ]);\n useIsomorphicLayoutEffect(()=>{\n connector.dropTargetOptions = options || null;\n connector.reconnect();\n return ()=>connector.disconnectDropTarget()\n ;\n }, [\n options\n ]);\n return connector;\n}\n\n//# sourceMappingURL=useDropTargetConnector.js.map","import { useMemo } from 'react';\nimport { DropTargetMonitorImpl } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nexport function useDropTargetMonitor() {\n const manager = useDragDropManager();\n return useMemo(()=>new DropTargetMonitorImpl(manager)\n , [\n manager\n ]);\n}\n\n//# sourceMappingURL=useDropTargetMonitor.js.map","import { invariant } from '@react-dnd/invariant';\nimport { useMemo } from 'react';\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */ export function useAccept(spec) {\n const { accept } = spec;\n return useMemo(()=>{\n invariant(spec.accept != null, 'accept must be defined');\n return Array.isArray(accept) ? accept : [\n accept\n ];\n }, [\n accept\n ]);\n}\n\n//# sourceMappingURL=useAccept.js.map","export class DropTargetImpl {\n canDrop() {\n const spec = this.spec;\n const monitor = this.monitor;\n return spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true;\n }\n hover() {\n const spec = this.spec;\n const monitor = this.monitor;\n if (spec.hover) {\n spec.hover(monitor.getItem(), monitor);\n }\n }\n drop() {\n const spec = this.spec;\n const monitor = this.monitor;\n if (spec.drop) {\n return spec.drop(monitor.getItem(), monitor);\n }\n return;\n }\n constructor(spec, monitor){\n this.spec = spec;\n this.monitor = monitor;\n }\n}\n\n//# sourceMappingURL=DropTargetImpl.js.map","import { useEffect, useMemo } from 'react';\nimport { DropTargetImpl } from './DropTargetImpl.js';\nexport function useDropTarget(spec, monitor) {\n const dropTarget = useMemo(()=>new DropTargetImpl(spec, monitor)\n , [\n monitor\n ]);\n useEffect(()=>{\n dropTarget.spec = spec;\n }, [\n spec\n ]);\n return dropTarget;\n}\n\n//# sourceMappingURL=useDropTarget.js.map","import { registerTarget } from '../../internals/index.js';\nimport { useDragDropManager } from '../useDragDropManager.js';\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js';\nimport { useAccept } from './useAccept.js';\nimport { useDropTarget } from './useDropTarget.js';\nexport function useRegisteredDropTarget(spec, monitor, connector) {\n const manager = useDragDropManager();\n const dropTarget = useDropTarget(spec, monitor);\n const accept = useAccept(spec);\n useIsomorphicLayoutEffect(function registerDropTarget() {\n const [handlerId, unregister] = registerTarget(accept, dropTarget, manager);\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [\n manager,\n monitor,\n dropTarget,\n connector,\n accept.map((a)=>a.toString()\n ).join('|'), \n ]);\n}\n\n//# sourceMappingURL=useRegisteredDropTarget.js.map","import { useCollectedProps } from '../useCollectedProps.js';\nimport { useOptionalFactory } from '../useOptionalFactory.js';\nimport { useConnectDropTarget } from './connectors.js';\nimport { useDropTargetConnector } from './useDropTargetConnector.js';\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js';\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */ export function useDrop(specArg, deps) {\n const spec = useOptionalFactory(specArg, deps);\n const monitor = useDropTargetMonitor();\n const connector = useDropTargetConnector(spec.options);\n useRegisteredDropTarget(spec, monitor, connector);\n return [\n useCollectedProps(spec.collect, monitor, connector),\n useConnectDropTarget(connector), \n ];\n}\n\n//# sourceMappingURL=useDrop.js.map","import React from \"react\";\nimport { Engine } from \"../Engine\";\nimport { WidgetProps } from \"./Components/Control\";\n\nconst dummyEngine = new Engine();\n\ntype FlowContextState = {\n engine: Engine;\n controls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n};\n\nexport const FlowContext = React.createContext<FlowContextState>({\n engine: dummyEngine,\n});\n\nexport const useEngine = () => {\n return React.useContext(FlowContext).engine;\n};\n\nexport const useControls = () => {\n return React.useContext(FlowContext).controls || {};\n};\n","import React from \"react\";\nimport { NormalizedVarDef } from \"../../Engine\";\nimport { useControls } from \"../Context\";\nimport rcin from \"rc-input-number\";\n\n// normalizing import\nconst InputNumber = (rcin as any).default ?? rcin;\n\nexport interface WidgetProps<T> {\n value: T;\n vardef: NormalizedVarDef;\n onChange?: (value: T) => void;\n}\n\ninterface ControlProps {\n value: any;\n vardef: NormalizedVarDef;\n onChange?: (value: any) => void;\n}\nexport function Control({ value, vardef, onChange }: ControlProps) {\n const customControls = useControls();\n if (vardef.type in customControls) {\n const ControlComponent = customControls[\n vardef.type\n ] as React.ComponentType<WidgetProps<any>>;\n return (\n <ControlComponent\n value={value}\n vardef={vardef}\n onChange={onChange}\n />\n );\n }\n if (vardef.options) {\n return (\n <select\n value={value || \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n >\n {vardef.options.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n );\n }\n switch (vardef.type) {\n case \"string\":\n return (\n <input\n type=\"text\"\n value={value ?? \"\"}\n onChange={(e) => onChange?.(e.target.value)}\n />\n );\n case \"number\":\n return (\n <InputNumber\n value={Number(value) || 0}\n onChange={onChange}\n step={vardef.step}\n min={vardef.min}\n max={vardef.max}\n inputMode=\"numeric\"\n />\n );\n case \"boolean\":\n return (\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(e.target.checked)}\n />\n );\n default:\n return (\n <span>\n {String(value)} ({vardef.type})\n </span>\n );\n }\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface InputProps {\n name: string;\n varDef: VarDef;\n id: string;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Input = ({ name, varDef, id, data, onClick }: InputProps) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.inputs?.[name];\n const isRef = isReference(value);\n\n const handleInputChange = (param: string) => (value: any) => {\n data.onChange({\n inputs: {\n ...data.inputs,\n [param]: value,\n },\n });\n };\n\n return (\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-${name}`}\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n {normalized.label || name}\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleInputChange(name)}\n />\n )}\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\nimport { isReference } from \"../../Engine/util\";\nimport { Control } from \"./Control\";\nimport { FunctionNode } from \"../types\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface ParamProps {\n id: string;\n name: string;\n varDef: VarDef;\n data: FunctionNode[\"data\"];\n onClick?: (e: React.MouseEvent) => void;\n}\nexport const Param = ({ id, name, varDef, data, onClick }: ParamProps) => {\n const normalized = normalizeVarDef(varDef);\n const value = data.params?.[name];\n const isRef = isReference(value);\n\n const handleParamChange = (param: string) => (value: any) => {\n data.onChange({\n params: {\n ...data.params,\n [param]: value,\n },\n });\n };\n\n return (\n <div\n className={classNames(\n styles.Input,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>{normalized.label || name}</span>\n {!isRef && (\n <Control\n vardef={normalized}\n value={value}\n onChange={handleParamChange(name)}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { Handle, Position } from \"@xyflow/react\";\n\nimport { normalizeVarDef, VarDef } from \"../../Engine\";\n\nimport styles from \"./NodeComponents.module.css\";\n\ninterface OutputProps {\n name: string;\n varDef: VarDef;\n id: string;\n onClick?: (e: React.MouseEvent) => void;\n focus?: boolean;\n}\nexport const Output = ({ name, varDef, id, onClick, focus }: OutputProps) => {\n const normalized = normalizeVarDef(varDef);\n\n return (\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-${name}`}\n className={classNames(\n styles.Output,\n styles.Port,\n styles[`type-${normalized.type}`]\n )}\n style={\n {\n \"--type-color\": `var(--color-${normalized.type})`,\n } as any\n }\n onClick={onClick}\n >\n <span>\n {focus && \"👁 \"}\n {normalized.label || name}\n </span>\n </Handle>\n );\n};\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { useEngine } from \"../Context\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface NodeContainerProps {\n id?: string;\n label: string;\n className?: string;\n selected?: boolean;\n children?: React.ReactNode;\n}\nexport function NodeContainer({\n id,\n label,\n className,\n selected,\n children,\n}: NodeContainerProps) {\n const engine = useEngine();\n const [active, setActive] = React.useState(false);\n React.useEffect(() => {\n if (!id) return;\n let timer;\n let removeOnCall = engine.subscribe(\"functionCall\", (event) => {\n if (event.name === id) {\n setActive(true);\n }\n });\n let removeOnResult = engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n clearTimeout(timer);\n timer = setTimeout(\n () => setActive(false),\n Math.max(0, 1000 - (event.duration || 0))\n );\n }\n });\n return () => {\n removeOnCall();\n removeOnResult();\n };\n }, [id]);\n return (\n <div\n className={classNames(className, styles.DefaultNode, {\n [styles.selected]: selected,\n [styles.active]: active,\n })}\n >\n <div className={styles.Label}>{label}</div>\n {children}\n </div>\n );\n}\n","import React from \"react\";\nimport { Handle, NodeProps, Position } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { useEngine } from \"../Context\";\nimport { Tree } from \"../../DataTree\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface TreeTableProps {\n value: Tree<any> | null;\n}\nfunction TreeTable({ value }: TreeTableProps) {\n return (\n <div className={styles.Table}>\n <table>\n {Object.entries(value || {}).map(([key, val]) => (\n <React.Fragment key={key}>\n <tbody>\n <tr>\n <th colSpan={2}>{`{${key}}`}</th>\n </tr>\n {val.map((item, index) => (\n <tr key={`${key}-${index}`}>\n <td>{index}</td>\n <td title={JSON.stringify(item, null, 2)}>\n {item?.toString?.()}\n </td>\n </tr>\n ))}\n </tbody>\n </React.Fragment>\n ))}\n </table>\n </div>\n );\n}\n\ntype TreeNode<T> = { items: T[] };\ntype TreeBranch<T> = (TreeNode<T> | TreeBranch<T>)[];\n\nfunction createTreeStructure<T = any>(tree: Tree<T>) {\n const keys = Object.keys(tree);\n let structure: any = [];\n\n keys.forEach((key) => {\n let path = key.split(\";\");\n let parent = structure;\n\n for (let i = 0; i < path.length; i++) {\n let part = parseInt(path[i], 10);\n if (!parent[part]) {\n parent[part] = [];\n }\n parent = parent[part];\n }\n parent.push({ items: tree[key] });\n });\n\n return structure as TreeBranch<T>;\n}\n\nfunction TreeBranchView({ branch, name }) {\n return (\n <div>\n <div className={styles.GroupHead}>\n <span>group {name}</span>\n </div>\n <div className={styles.GroupChildren}>\n {branch.map((item, index) => {\n // sub branch\n if (Array.isArray(item)) {\n return (\n <TreeBranchView\n key={index}\n branch={item}\n name={`${name};${index}`}\n />\n );\n }\n // items\n return (\n <div key={index}>\n {item.items.map((it, i) => {\n let label = it?.toString?.();\n if (label === \"[object Object]\") {\n label = \"{...}\";\n }\n return (\n <div\n key={i}\n className={styles.GroupLeaf}\n title={JSON.stringify(it, null, 2)}\n >\n {label}\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\ninterface TreeViewProps {\n value: Tree<any> | null;\n}\nexport function TreeView({ value }: TreeViewProps) {\n let structure = createTreeStructure(value || {});\n\n return (\n <div>\n {structure.map((branch, index) => (\n <TreeBranchView key={index} branch={branch} name={index} />\n ))}\n </div>\n );\n}\n\nexport const Log = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n const engine = useEngine();\n const [value, setValue] = React.useState<Tree<any> | null>(null);\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setValue(event.context.scope[id]?.data || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer\n id={id}\n label={data.name}\n selected={selected}\n className={styles.Log}\n >\n {/* <TreeTable value={value} /> */}\n <TreeView value={value} />\n <Handle\n type=\"target\"\n position={Position.Left}\n id={`${id}-data`}\n />\n <Handle\n type=\"source\"\n position={Position.Right}\n id={`${id}-data`}\n />\n </NodeContainer>\n );\n }\n);\nLog.displayName = \"LogNode\";\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport { FunctionNode } from \"../types\";\nimport { Input } from \"../Components/Input\";\nimport { Param } from \"../Components/Param\";\nimport { Output } from \"../Components/Output\";\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { RecOfTrees, VarDef } from \"../../Engine\";\nimport { useEngine } from \"../Context\";\nimport { TreeView } from \"../Nodes/Log\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\ninterface GenericNodeProps {\n id: string;\n data: FunctionNode[\"data\"];\n selected: boolean;\n inputs?: Record<string, VarDef>;\n outputs?: Record<string, VarDef>;\n params?: Record<string, VarDef>;\n children?: React.ReactNode;\n}\nexport function GenericNode({\n id,\n data,\n selected,\n inputs,\n outputs,\n params,\n children,\n}: GenericNodeProps) {\n const inputEntries = Object.entries(inputs || data.inputDefs || {});\n const outputEntries = Object.entries(outputs || data.outputDefs || {});\n const paramEntries = Object.entries(params || data.paramDefs || {});\n\n const engine = useEngine();\n const [result, setResult] = React.useState<RecOfTrees>({});\n const [duration, setDuration] = React.useState<number | null>(null);\n const [focus, setFocus] = React.useState<string | null>(\n outputEntries[0]?.[0] || null\n );\n const [showPreview, setShowPreview] = React.useState(false);\n\n const previewValue = focus ? result[focus] : Object.values(result)[0];\n\n React.useEffect(() => {\n return engine.subscribe(\"functionResult\", (event) => {\n if (event.name === id) {\n setResult(event.result || {});\n setDuration(event.duration || null);\n }\n });\n }, []);\n\n return (\n <NodeContainer label={data.label} selected={selected} id={id}>\n <div className={styles.Description}>{data.description}</div>\n {children}\n <div className={styles.Ports}>\n {outputEntries.map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n onClick={() => setFocus(name)}\n focus={showPreview && focus === name}\n />\n ))}\n {inputEntries.map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n\n {paramEntries.map(([name, varDef]) => (\n <Param\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n <div\n className={classNames(styles.PreviewHead, {\n [styles.expanded]: showPreview,\n })}\n onClick={() => setShowPreview(!showPreview)}\n >\n Preview\n </div>\n {showPreview && (\n <div className={styles.Preview}>\n <TreeView value={previewValue} />\n {duration && (\n <div className={styles.Duration}>\n {duration.toFixed(2)} ms\n </div>\n )}\n </div>\n )}\n </NodeContainer>\n );\n}\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\nimport { create, all } from \"mathjs\";\nimport katex from \"katex\";\n\nimport { FunctionNode } from \"../types\";\nimport { GenericNode } from \"../Components/GenericNode\";\nimport { getUnboundSymbols } from \"../../Primitives/Math/calc\";\n\nimport \"../style/katex.min.css\";\n\nlet math = create(all, {});\n\ntype MathProps = { expr: string; displayMode?: boolean };\n\nexport function MathView({ expr, displayMode = false }: MathProps) {\n let latex = \"\";\n try {\n latex = math.parse(expr).toTex({ parenthesis: \"auto\" });\n } catch (e) {\n latex = String(expr); // fallback on parse error\n }\n const html = katex.renderToString(latex, {\n throwOnError: false,\n displayMode, // true = block, false = inline\n });\n return <span dangerouslySetInnerHTML={{ __html: html }} />;\n}\n\nexport const Calc = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n let expression = (data.params?.expression || \"\").toString();\n\n // add free variables to inputs\n const inputs = { ...(data.inputDefs || {}) };\n const symbols = getUnboundSymbols(expression as string);\n symbols.forEach((symbol) => {\n if (!inputs[symbol]) {\n inputs[symbol] = {\n type: \"number\",\n };\n }\n });\n\n return (\n <GenericNode\n id={id}\n data={data}\n selected={selected}\n inputs={inputs}\n >\n <MathView expr={expression} displayMode />\n </GenericNode>\n );\n }\n);\nCalc.displayName = \"CalcNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { FunctionNode } from \"../types\";\nimport { GenericNode } from \"../Components/GenericNode\";\n\nexport const Default = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n return <GenericNode id={id} data={data} selected={selected} />;\n }\n);\nDefault.displayName = \"DefaultNode\";\n","import React from \"react\";\nimport { NodeProps } from \"@xyflow/react\";\n\nimport { NodeContainer } from \"../Components/NodeContainer\";\nimport { FunctionNode } from \"../types\";\nimport { Output } from \"../Components/Output\";\nimport { Input } from \"../Components/Input\";\n\nimport styles from \"../Nodes/Nodes.module.css\";\n\nfunction uid() {\n return Math.random().toString(36).substring(2, 15);\n}\n\nexport const Merge = React.memo(\n ({ id, data, selected }: NodeProps<FunctionNode>) => {\n let inputs = Object.fromEntries(\n Object.keys(data.inputs || {}).map((name, i) => [\n name,\n { type: \"any\", label: `D${i + 1}` },\n ])\n );\n let inputCount = Object.keys(inputs).length;\n inputs[uid()] = { type: \"any\", label: `D${inputCount + 1}` };\n let outputs = { ...(data.outputDefs || {}) };\n\n return (\n <NodeContainer label={data.name} selected={selected} id={id}>\n <div className={styles.Ports}>\n {Object.entries(outputs || {}).map(([name, varDef]) => (\n <Output\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n />\n ))}\n {Object.entries(inputs || {}).map(([name, varDef]) => (\n <Input\n key={name}\n name={name}\n varDef={varDef}\n id={id}\n data={data}\n />\n ))}\n </div>\n </NodeContainer>\n );\n }\n);\nMerge.displayName = \"MergeNode\";\n","import { Calc } from \"./Calc\";\nimport { Default } from \"./Default\";\nimport { Log } from \"./Log\";\nimport { Merge } from \"./Merge\";\n\nexport const nodeTypes = {\n Default,\n Calc,\n Log,\n Merge,\n};\n","import { create } from \"zustand\";\nimport { persist } from \"zustand/middleware\";\n\ntype Updater<T> = (oldValue: T) => T;\ninterface VariableStore {\n data: Record<string, any>;\n getVar: (scope: string, name: string, persist: boolean) => any;\n setVar: (scope: string, name: string, value: any, persist: boolean) => void;\n}\nlet variableStore = create<VariableStore>((set, get, api) =>\n persist<VariableStore>(\n (pset, pget) => ({\n data: {},\n getVar: (scope: string, name: string, persist: boolean) => {\n if (persist) {\n return pget().data[`${scope}|${name}`];\n } else {\n return get().data[`${scope}|${name}`];\n }\n },\n setVar: (\n scope: string,\n name: string,\n value: any,\n persist: boolean\n ) => {\n let key = `${scope}|${name}`;\n if (persist) {\n let oldData = pget().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n pset({ data });\n } else {\n let oldData = get().data;\n let newValue =\n typeof value === \"function\"\n ? value(oldData[key])\n : value;\n let data = { ...oldData, [key]: newValue };\n set({ data });\n }\n },\n }),\n {\n name: \"variable-storage\", // unique name\n // getStorage: () => sessionStorage, // (optional) by default the 'localStorage' is used\n }\n )(set, get, api)\n);\n\n/**\n * scope restricts the variable scope, for example to a view id\n * @param scope\n * @param name\n */\nexport const useVariable = <T = any>(\n scope: string,\n name: string,\n initial: T,\n persist = true\n): [T, (t: T | Updater<T>) => void] => {\n let value = variableStore(({ getVar }) => getVar(scope, name, persist));\n if (typeof value === \"undefined\") value = initial;\n let setVar = variableStore(({ setVar }) => setVar);\n let setValue = (value: any) => setVar(scope, name, value, persist);\n return [value, setValue];\n};\n","import React from \"react\";\nimport { GraphedFunction } from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { useVariable } from \"./useVariable\";\n\ntype Point = { x: number; y: number };\n\nexport function usePositions(fn: GraphedFunction) {\n return useVariable<Record<string, Point>>(\n \"rules\",\n `${fn.name}.positions`,\n {}\n );\n}\n\nexport function useUpdatePositions(fn: GraphedFunction) {\n let [positions, setPositions] = usePositions(fn);\n return React.useCallback(\n (id: string, position: Point) => {\n positions[id] = position;\n setPositions(positions);\n },\n [positions, setPositions]\n );\n}\n","import React from \"react\";\nimport { Edge } from \"@xyflow/react\";\n\nimport {\n Engine,\n FunctionCall,\n getReferences,\n GraphedFunction,\n Ref,\n VarRef,\n} from \"../Engine\";\nimport { FunctionNode } from \"../Flow\";\nimport { create } from \"zustand\";\n\nexport type PositionData = Record<string, { x: number; y: number }>;\n\n// helpers\nfunction updateNodeArguments(\n node: FunctionNode,\n inputs?: VarRef,\n params?: VarRef\n) {\n return {\n ...node,\n data: {\n ...node.data,\n inputs,\n params,\n },\n };\n}\n\n/**\n * TODO: replace this whole thing with a zustand state\n * - whenever the outer function changes, update the inner node graph\n * - but do so useing shallow comparison, so only update changed nodes\n * - also store the node positions in the zustand state, so they are not lost on rerender\n *\n * - state is not persisted in local storage, that is the job of the outer function variable in the page\n */\n\ninterface FlowOptions {\n dragHandle?: string;\n positions?: PositionData;\n onDataChange?: (\n id: string\n ) => (newData: Partial<FunctionNode[\"data\"]>) => void;\n}\n\ninterface FlowState {\n engine: Engine | null;\n fn: GraphedFunction | null;\n options: FlowOptions;\n nodes: FunctionNode[];\n edges: Edge[];\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => void;\n setEdges: (updater: (edges: Edge[]) => Edge[]) => void;\n setFn: (fn: GraphedFunction) => void;\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => void;\n}\n\n/**\n * flow state stores nodes and edges for the flow graph these can be updated when the function changes\n * using setFn\n */\nconst useFlowState = create<FlowState>((set, get) => ({\n engine: null,\n fn: null,\n options: {},\n nodes: [],\n edges: [],\n setNodes: (updater: (nodes: FunctionNode[]) => FunctionNode[]) => {\n set((state) => ({ nodes: updater(state.nodes) }));\n },\n setEdges: (updater: (edges: Edge[]) => Edge[]) => {\n set((state) => ({ edges: updater(state.edges) }));\n },\n setFn: (fn: GraphedFunction) => {\n // console.log(\"setFn\", fn);\n let { fn: oldFn, nodes, edges, engine, options } = get();\n // update the graph by shallow comparison\n\n if (!engine) {\n throw new Error(\"Engine not set\");\n }\n\n let oldKeys = Object.keys(oldFn?.body || {});\n let newKeys = Object.keys(fn.body || {});\n\n // remove all the nodes that were removed\n nodes = nodes?.filter((node) => newKeys.includes(node.id));\n // remove all the edges that were removed\n edges = edges?.filter((edge) => {\n return (\n newKeys.includes(edge.source) && newKeys.includes(edge.target)\n );\n });\n\n // create the new nodes that were added\n let addedKeys = newKeys.filter((key) => !oldKeys.includes(key));\n addedKeys.forEach((key, index) => {\n let fncall = fn.body?.[key];\n\n // add the node\n nodes.push(createNode(engine, key, fncall, options));\n\n // add edges\n const refs = getReferences(fncall.inputs || {});\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // update the changed nodes\n let changedKeys = newKeys.filter((key) => {\n // shallow comparison\n return fn.body?.[key] !== oldFn?.body?.[key];\n });\n // console.log(\"changed keys\", changedKeys);\n changedKeys.forEach((key) => {\n // update the nodes that were changed\n let fncall = fn.body?.[key];\n nodes = nodes?.map((n) => {\n if (n.id === key) {\n return updateNodeArguments(n, fncall.inputs, fncall.params);\n }\n return n;\n });\n\n // update incoming edges\n const refs = getReferences(fncall.inputs || {});\n // remove all incoming edges\n edges = edges?.filter((e) => e.target !== key);\n // add the edge\n refs.forEach((ref) => {\n edges.push(createEdge(key, ref));\n });\n });\n\n // console.log(\"final graph\", nodes, edges);\n\n // update the function, nodes and edges\n set({ fn, nodes, edges });\n },\n init: (fn: GraphedFunction, engine: Engine, options: FlowOptions) => {\n // console.log(\"initing\");\n set({ engine, options });\n get().setFn(fn);\n },\n}));\n\n/**\n * creates a flow state and provides handlers to update nodes and edges\n */\nexport function useFlow(\n fn: GraphedFunction,\n engine: Engine,\n options: FlowOptions\n) {\n let state = useFlowState();\n\n React.useEffect(() => {\n state.init(fn, engine, options);\n }, [engine]);\n\n React.useEffect(() => {\n state.setFn(fn);\n }, [fn]);\n\n return React.useMemo(\n () => ({\n nodes: state.nodes,\n edges: state.edges,\n setNodes: state.setNodes,\n setEdges: state.setEdges,\n }),\n [state]\n );\n}\n\nfunction createNode(\n engine: Engine,\n id: string,\n fncall: FunctionCall,\n options: FlowOptions\n): FunctionNode {\n const calledFn = engine.getFunction(fncall.name);\n\n // create a node for each function call\n return {\n id,\n data: {\n name: fncall.name,\n label: fncall.label || calledFn?.label || fncall.name,\n description: calledFn?.description,\n inputs: fncall.inputs,\n params: fncall.params,\n inputDefs: calledFn?.inputs || {},\n paramDefs: calledFn?.params || {},\n outputDefs: calledFn?.outputs || {},\n onChange: options.onDataChange?.(id) || (() => {}),\n },\n position: options.positions?.[id] || { x: 0, y: 0 },\n dragHandle: options.dragHandle,\n type: calledFn?.nodeType || \"Default\",\n };\n}\n\nfunction createEdge(nodeId: string, ref: Ref): Edge {\n return {\n id: `${ref.path}-${nodeId}.${ref.name}`,\n source: ref.refNode,\n target: nodeId,\n sourceHandle: `${ref.refNode}-${ref.refField}`,\n targetHandle: `${nodeId}-${ref.name}`,\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport {\n ConnectionLineComponentProps,\n getSimpleBezierPath,\n Position,\n useConnection,\n} from \"@xyflow/react\";\n\nimport styles from \"./NodeComponents.module.css\";\n\nexport default ({\n fromX,\n fromY,\n toX,\n toY,\n fromHandle,\n fromNode,\n connectionStatus,\n}: ConnectionLineComponentProps) => {\n const { toNode, toHandle } = useConnection();\n\n // correcting the start point as we moved the nodes in our custom ports\n if (fromNode && fromHandle) {\n fromX = fromNode?.position.x + fromHandle.x;\n if (fromHandle.position === \"right\") {\n fromX += fromHandle.width;\n }\n }\n\n if (toNode && toHandle) {\n toX = toHandle.x - toHandle.width / 2; // align to left side of the handle\n if (toHandle.position === \"right\") {\n toX += toHandle.width;\n }\n }\n\n let d = getSimpleBezierPath({\n sourceX: fromX,\n sourceY: fromY,\n targetX: toX,\n targetY: toY,\n sourcePosition: Position.Right,\n targetPosition: Position.Left,\n });\n\n return (\n <g\n className={classNames(\n styles.ConnectionPath,\n \"react-flow__connection-path\",\n { [styles.valid]: connectionStatus === \"valid\" }\n )}\n >\n <path d={d[0]} />\n </g>\n );\n};\n","import React from \"react\";\nimport {\n applyEdgeChanges,\n applyNodeChanges,\n Background,\n BackgroundVariant,\n Connection,\n Controls,\n Edge,\n Node,\n ReactFlow,\n ReactFlowInstance,\n ReactFlowProvider,\n useOnSelectionChange,\n XYPosition,\n} from \"@xyflow/react\";\nimport { useDrop } from \"react-dnd\";\n\nimport { GraphedFunction } from \"../Engine/types\";\nimport { Engine } from \"../Engine\";\nimport { nodeTypes } from \"./Nodes\";\nimport { FlowContext } from \"./Context\";\nimport { WidgetProps } from \"./Components/Control\";\nimport { usePositions, useUpdatePositions } from \"../hooks/usePositions\";\nimport { useFlow } from \"../hooks/useFlow\";\nimport { FunctionNode, NodeDropItem, Updater } from \"./types\";\nimport ConnectionLine from \"./Components/ConnectionLine\";\n\nimport \"./style/xyflow.css\";\nimport styles from \"./Nodes/Nodes.module.css\";\n\nexport * from \"./types\";\n\n/**\n * goal: this component should only be responsible for updating the inner node graph, it should call the onChange handler\n * on any change, but not rerender when the given function changes, as it slows down the interface drastically\n */\n\ninterface FlowProps {\n function: GraphedFunction;\n engine: Engine;\n onChange?: (updater: Updater<GraphedFunction>) => void;\n onClick?: (event: React.MouseEvent, position: XYPosition) => void;\n onSelect?: (ids: string[]) => void;\n customControls?: Record<string, React.ComponentType<WidgetProps<any>>>;\n}\nfunction FlowInner({\n function: fn,\n engine,\n onChange,\n onClick,\n onSelect,\n}: FlowProps) {\n const [instance, setInstance] = React.useState<ReactFlowInstance | null>(\n null\n );\n\n let updatePosition = useUpdatePositions(fn);\n let [positions] = usePositions(fn);\n\n const handleDataChange =\n (id: string) => (newData: Partial<FunctionNode[\"data\"]>) => {\n onChange?.((fn) => {\n // update the function definition\n // console.log(\"before fn call update\", Object.keys(fn.body));\n const body = { ...fn.body };\n const fncall = { ...(body[id] || {}), ...newData };\n body[id] = fncall;\n // console.log(\"after fn call update\", Object.keys(body));\n const updatedFn = { ...fn, body };\n return updatedFn;\n });\n };\n\n let { nodes, edges, setNodes, setEdges } = useFlow(fn, engine, {\n dragHandle: `.${styles.Label}`,\n positions,\n onDataChange: handleDataChange,\n });\n\n // node selection handler\n const handleSelect = React.useCallback(\n ({ nodes }) => {\n onSelect?.(nodes.map((n: Node) => n.id) || []);\n },\n [onSelect]\n );\n useOnSelectionChange({\n onChange: handleSelect,\n });\n\n // dropping nodes\n let [{ isOver }, drop] = useDrop({\n accept: \"flow-node\",\n drop: (item: NodeDropItem, monitor) => {\n let pos = monitor.getClientOffset();\n\n if (instance && pos) {\n const position = instance.screenToFlowPosition(pos);\n // console.log(\"handle drop\", position);\n\n onChange?.((fn) => {\n return engine.applyNodeAdd(fn, item.name, (fnCall, id) => {\n // console.log(\"node added\", id, position);\n updatePosition(id, position);\n });\n });\n }\n },\n collect: (monitor) => {\n return {\n isOver: monitor.isOver(),\n };\n },\n });\n\n // connecting nodes\n const onConnect = React.useCallback(\n (params: Connection) => {\n const sourceField = params.sourceHandle?.split(\"-\")[1];\n const targetField = params.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", params);\n return;\n }\n onChange?.((fn) =>\n engine.applyNodeConnect(\n fn,\n params.source,\n params.target,\n sourceField,\n targetField\n )\n );\n },\n [fn, onChange]\n );\n\n // deleting nodes\n const onNodesDelete = React.useCallback(\n (nodesToDelete: Node[]) => {\n onChange?.((fn) =>\n engine.applyNodeDelete(\n fn,\n nodesToDelete.map((n) => n.id)\n )\n );\n },\n [onChange, fn]\n );\n\n // deleting edges\n const onEdgesDelete = React.useCallback(\n (edgesToDelete: Edge[]) => {\n onChange?.((fn) => {\n let newFn = fn;\n edgesToDelete.forEach((edge) => {\n const sourceField = edge.sourceHandle?.split(\"-\")[1];\n const targetField = edge.targetHandle?.split(\"-\")[1];\n if (!sourceField || !targetField) {\n console.warn(\"Invalid connection handles\", edge);\n return;\n }\n newFn = engine.applyEdgeDelete(\n newFn,\n edge.source,\n edge.target,\n sourceField,\n targetField\n );\n });\n return newFn;\n });\n },\n [onChange, fn]\n );\n\n // handle canvas clicks to be able to place nodes\n const handleClick = (e: React.MouseEvent) => {\n if (instance) {\n const position = instance.screenToFlowPosition({\n x: e.clientX,\n y: e.clientY,\n });\n onClick?.(e, position);\n }\n };\n\n const onNodesChange = React.useCallback(\n (changes) =>\n setNodes((nodesSnapshot) =>\n applyNodeChanges(changes, nodesSnapshot)\n ),\n []\n );\n const onEdgesChange = React.useCallback(\n (changes) =>\n setEdges((edgesSnapshot) =>\n applyEdgeChanges(changes, edgesSnapshot)\n ),\n []\n );\n\n return (\n <ReactFlow\n ref={drop as any}\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n onEdgesChange={onEdgesChange}\n onNodesDelete={onNodesDelete}\n onEdgesDelete={onEdgesDelete}\n onNodeDragStop={(e, n) => updatePosition(n.id, n.position)}\n onConnect={onConnect}\n onInit={setInstance}\n onPaneClick={handleClick}\n fitView\n // panOnDrag={false}\n selectionOnDrag={true}\n minZoom={0.1}\n maxZoom={4}\n deleteKeyCode={\"Delete\"}\n connectionLineComponent={ConnectionLine}\n >\n <Background variant={BackgroundVariant.Dots} />\n <Controls />\n </ReactFlow>\n );\n}\n\nexport function Flow({\n function: fn,\n engine,\n onChange = () => {},\n onClick,\n onSelect,\n customControls,\n}: FlowProps) {\n return (\n <FlowContext.Provider value={{ engine, controls: customControls }}>\n <ReactFlowProvider>\n <FlowInner\n function={fn}\n engine={engine}\n onChange={onChange}\n onClick={onClick}\n onSelect={onSelect}\n />\n </ReactFlowProvider>\n </FlowContext.Provider>\n );\n}\n","import { ConnectableElement, useDrag } from \"react-dnd\";\n\nimport { PrimitiveFunction } from \"../Engine\";\nimport { NodeDropItem } from \"../Flow\";\n\nexport function useDraggableNode(name: string, fn: PrimitiveFunction) {\n let [, drag] = useDrag<NodeDropItem>({\n type: \"flow-node\",\n item: { name, fn },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n return (ref: ConnectableElement) => drag(ref);\n}\n","import React from \"react\";\nimport { Engine, GraphedFunction } from \"../Engine\";\n\n/**\n * using functions\n *\n * in React context\n * - use useFunction. This will build the function, mount it if needed and provides a run function.\n *\n *\n * in Vanilla context\n * - use engine.build(fn) to build the function\n * - use engine.mount(fn) to mount the function (if it has a mount function)\n * - use await engine.run(fn, inputs) to run the function and get the result\n */\n\nexport function useFunction(\n engine: Engine,\n fn: GraphedFunction,\n mount?: boolean\n) {\n const [result, setResult] = React.useState<any>(null);\n const builtFn = React.useMemo(() => engine.build(fn), [fn]);\n React.useEffect(() => {\n if (mount) {\n return engine.mount(builtFn);\n }\n }, [builtFn, mount]);\n\n const run = React.useCallback(\n async (inputs?: Record<string, any>) => {\n const result = await engine.run(builtFn, inputs);\n setResult(result);\n return result;\n },\n [builtFn]\n );\n\n return React.useMemo(\n () => ({\n fn: builtFn,\n run,\n result,\n }),\n [builtFn, run, result]\n );\n}\n"],"names":["uid","getValue","getVal","primitives","_a","math","graft","trim","Util","Math","List","Sequence","Logic","Tree","styles","create"],"mappings":"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","x_google_ignoreList":[0,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]}