@rkmodules/rules 0.0.25 → 0.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +67 -3
- package/dist/index.js +400 -199
- package/dist/index.js.map +1 -1
- package/dist/lib/Engine/index.d.ts +7 -6
- package/dist/lib/Flow/Components/Input.d.ts +11 -6
- package/dist/lib/Flow/Components/Output.d.ts +10 -5
- package/dist/lib/Flow/Components/Param.d.ts +11 -6
- package/dist/lib/Flow/Nodes/Log.d.ts +6 -0
- package/dist/lib/Flow/index.d.ts +6 -1
- package/dist/lib/Flow/types.d.ts +2 -2
- package/dist/lib/Primitives/Logic/groupAnd.d.ts +2 -0
- package/dist/lib/Primitives/Logic/groupOr.d.ts +2 -0
- package/dist/lib/Primitives/Logic/index.d.ts +3 -0
- package/dist/lib/hooks/useFlow.d.ts +18 -8
- package/dist/lib/hooks/usePositions.d.ts +1 -1
- package/dist/lib/hooks/useVariable.d.ts +3 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
var mathjs = require('mathjs');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var react = require('@xyflow/react');
|
|
6
|
+
var reactDnd = require('react-dnd');
|
|
6
7
|
var katex = require('katex');
|
|
7
8
|
var classNames = require('classnames');
|
|
8
9
|
var zustand = require('zustand');
|
|
9
10
|
var middleware = require('zustand/middleware');
|
|
10
|
-
var reactDnd = require('react-dnd');
|
|
11
11
|
|
|
12
12
|
/******************************************************************************
|
|
13
13
|
Copyright (c) Microsoft Corporation.
|
|
@@ -569,25 +569,25 @@ var value = {
|
|
|
569
569
|
value = params.value;
|
|
570
570
|
switch (params.type) {
|
|
571
571
|
case "number":
|
|
572
|
-
return [2 /*return*/, { value: Number(value) }];
|
|
572
|
+
return [2 /*return*/, { value: broadCast(Number(value)) }];
|
|
573
573
|
case "boolean":
|
|
574
|
-
return [2 /*return*/, { value: Boolean(value) }];
|
|
574
|
+
return [2 /*return*/, { value: broadCast(Boolean(value)) }];
|
|
575
575
|
case "string":
|
|
576
|
-
return [2 /*return*/, { value: String(value) }];
|
|
576
|
+
return [2 /*return*/, { value: broadCast(String(value)) }];
|
|
577
577
|
default:
|
|
578
578
|
// return as is
|
|
579
|
-
return [2 /*return*/, { value: value }];
|
|
579
|
+
return [2 /*return*/, { value: broadCast(value) }];
|
|
580
580
|
}
|
|
581
581
|
});
|
|
582
582
|
}); },
|
|
583
583
|
};
|
|
584
584
|
|
|
585
|
-
var _a$
|
|
586
|
-
var primitives$
|
|
587
|
-
_a$
|
|
588
|
-
_a$
|
|
589
|
-
_a$
|
|
590
|
-
_a$
|
|
585
|
+
var _a$5;
|
|
586
|
+
var primitives$6 = (_a$5 = {},
|
|
587
|
+
_a$5[getValue.name] = getValue,
|
|
588
|
+
_a$5[log.name] = log,
|
|
589
|
+
_a$5[value.name] = value,
|
|
590
|
+
_a$5);
|
|
591
591
|
|
|
592
592
|
var math$1 = mathjs.create(mathjs.all, {});
|
|
593
593
|
function evaluate(expression, scope) {
|
|
@@ -765,10 +765,10 @@ var greaterThan = {
|
|
|
765
765
|
return [2 /*return*/, {
|
|
766
766
|
gt: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
|
|
767
767
|
return itemA > itemB;
|
|
768
|
-
}),
|
|
768
|
+
}, true),
|
|
769
769
|
gte: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
|
|
770
770
|
return itemA >= itemB;
|
|
771
|
-
}),
|
|
771
|
+
}, true),
|
|
772
772
|
}];
|
|
773
773
|
});
|
|
774
774
|
}); },
|
|
@@ -791,21 +791,21 @@ var lessThan = {
|
|
|
791
791
|
return [2 /*return*/, {
|
|
792
792
|
lt: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
|
|
793
793
|
return itemA < itemB;
|
|
794
|
-
}),
|
|
794
|
+
}, true),
|
|
795
795
|
lte: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
|
|
796
796
|
return itemA <= itemB;
|
|
797
|
-
}),
|
|
797
|
+
}, true),
|
|
798
798
|
}];
|
|
799
799
|
});
|
|
800
800
|
}); },
|
|
801
801
|
};
|
|
802
802
|
|
|
803
|
-
var _a$
|
|
804
|
-
var primitives$
|
|
805
|
-
_a$
|
|
806
|
-
_a$
|
|
807
|
-
_a$
|
|
808
|
-
_a$
|
|
803
|
+
var _a$4;
|
|
804
|
+
var primitives$5 = (_a$4 = {},
|
|
805
|
+
_a$4[calc.name] = calc,
|
|
806
|
+
_a$4[lessThan.name] = lessThan,
|
|
807
|
+
_a$4[greaterThan.name] = greaterThan,
|
|
808
|
+
_a$4);
|
|
809
809
|
|
|
810
810
|
var filterList = {
|
|
811
811
|
name: "filterList",
|
|
@@ -821,7 +821,7 @@ var filterList = {
|
|
|
821
821
|
impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
|
|
822
822
|
return __generator(this, function (_a) {
|
|
823
823
|
return [2 /*return*/, {
|
|
824
|
-
list: binaryOnTreeBranch(inputs.list, inputs.keep, function (branchA, branchB) {
|
|
824
|
+
list: binaryOnTreeBranch(inputs.list || {}, inputs.keep || {}, function (branchA, branchB) {
|
|
825
825
|
return branchA.filter(function (item, index) {
|
|
826
826
|
return (branchB[Math.min(index, branchB.length - 1)] ===
|
|
827
827
|
true);
|
|
@@ -874,7 +874,7 @@ var listItem = {
|
|
|
874
874
|
// return indices.map((i) => branch[i]);
|
|
875
875
|
// }
|
|
876
876
|
// }),
|
|
877
|
-
item: binaryOnTreeBranch(inputs.list, inputs.index, function (branch, indices) {
|
|
877
|
+
item: binaryOnTreeBranch(inputs.list || {}, inputs.index || {}, function (branch, indices) {
|
|
878
878
|
if (indices) {
|
|
879
879
|
return indices.map(function (i) { return branch[i]; });
|
|
880
880
|
}
|
|
@@ -930,14 +930,14 @@ var trimTree = {
|
|
|
930
930
|
}); },
|
|
931
931
|
};
|
|
932
932
|
|
|
933
|
-
var _a$
|
|
934
|
-
var primitives$
|
|
935
|
-
_a$
|
|
936
|
-
_a$
|
|
937
|
-
_a$
|
|
938
|
-
_a$
|
|
939
|
-
_a$
|
|
940
|
-
_a$
|
|
933
|
+
var _a$3;
|
|
934
|
+
var primitives$4 = (_a$3 = {},
|
|
935
|
+
_a$3[graftTree.name] = graftTree,
|
|
936
|
+
_a$3[trimTree.name] = trimTree,
|
|
937
|
+
_a$3[listItem.name] = listItem,
|
|
938
|
+
_a$3[listLength.name] = listLength,
|
|
939
|
+
_a$3[filterList.name] = filterList,
|
|
940
|
+
_a$3);
|
|
941
941
|
|
|
942
942
|
var series = {
|
|
943
943
|
name: "series",
|
|
@@ -971,10 +971,10 @@ var series = {
|
|
|
971
971
|
}); },
|
|
972
972
|
};
|
|
973
973
|
|
|
974
|
-
var _a$
|
|
975
|
-
var primitives$
|
|
976
|
-
_a$
|
|
977
|
-
_a$
|
|
974
|
+
var _a$2;
|
|
975
|
+
var primitives$3 = (_a$2 = {},
|
|
976
|
+
_a$2[series.name] = series,
|
|
977
|
+
_a$2);
|
|
978
978
|
|
|
979
979
|
var mergeTree = {
|
|
980
980
|
name: "mergeTree",
|
|
@@ -1005,12 +1005,60 @@ var mergeTree = {
|
|
|
1005
1005
|
}); },
|
|
1006
1006
|
};
|
|
1007
1007
|
|
|
1008
|
+
var _a$1;
|
|
1009
|
+
var primitives$2 = (_a$1 = {},
|
|
1010
|
+
_a$1[mergeTree.name] = mergeTree,
|
|
1011
|
+
_a$1);
|
|
1012
|
+
|
|
1013
|
+
var groupAnd = {
|
|
1014
|
+
name: "groupAnd",
|
|
1015
|
+
label: "Group and",
|
|
1016
|
+
description: "Returns true if all of the items in a group are true",
|
|
1017
|
+
inputs: {
|
|
1018
|
+
tree: "boolean",
|
|
1019
|
+
},
|
|
1020
|
+
outputs: {
|
|
1021
|
+
result: "boolean",
|
|
1022
|
+
},
|
|
1023
|
+
impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1024
|
+
return __generator(this, function (_a) {
|
|
1025
|
+
return [2 /*return*/, {
|
|
1026
|
+
result: mapTreeBranch(inputs.tree, function (branch) {
|
|
1027
|
+
return [branch.reduce(function (acc, val) { return acc && val; }, true)];
|
|
1028
|
+
}),
|
|
1029
|
+
}];
|
|
1030
|
+
});
|
|
1031
|
+
}); },
|
|
1032
|
+
};
|
|
1033
|
+
|
|
1034
|
+
var groupOr = {
|
|
1035
|
+
name: "groupOr",
|
|
1036
|
+
label: "Group or",
|
|
1037
|
+
description: "Returns true if any of the items in a group are true",
|
|
1038
|
+
inputs: {
|
|
1039
|
+
tree: "boolean",
|
|
1040
|
+
},
|
|
1041
|
+
outputs: {
|
|
1042
|
+
result: "boolean",
|
|
1043
|
+
},
|
|
1044
|
+
impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
|
|
1045
|
+
return __generator(this, function (_a) {
|
|
1046
|
+
return [2 /*return*/, {
|
|
1047
|
+
result: mapTreeBranch(inputs.tree, function (branch) {
|
|
1048
|
+
return [branch.reduce(function (acc, val) { return acc || val; }, false)];
|
|
1049
|
+
}),
|
|
1050
|
+
}];
|
|
1051
|
+
});
|
|
1052
|
+
}); },
|
|
1053
|
+
};
|
|
1054
|
+
|
|
1008
1055
|
var _a;
|
|
1009
1056
|
var primitives$1 = (_a = {},
|
|
1010
|
-
_a[
|
|
1057
|
+
_a[groupAnd.name] = groupAnd,
|
|
1058
|
+
_a[groupOr.name] = groupOr,
|
|
1011
1059
|
_a);
|
|
1012
1060
|
|
|
1013
|
-
var primitives = __assign(__assign(__assign(__assign(__assign({}, primitives$5), primitives$4), primitives$3), primitives$2), primitives$1);
|
|
1061
|
+
var primitives = __assign(__assign(__assign(__assign(__assign(__assign({}, primitives$6), primitives$5), primitives$4), primitives$3), primitives$2), primitives$1);
|
|
1014
1062
|
|
|
1015
1063
|
function isPrimitive(node) {
|
|
1016
1064
|
return node.impl !== undefined;
|
|
@@ -1168,6 +1216,7 @@ var Engine = /** @class */ (function () {
|
|
|
1168
1216
|
params: params_1,
|
|
1169
1217
|
executionId: executionId,
|
|
1170
1218
|
context: context,
|
|
1219
|
+
result: result_1,
|
|
1171
1220
|
startTime: startTime_1,
|
|
1172
1221
|
endTime: endTime_1,
|
|
1173
1222
|
duration: endTime_1 - startTime_1,
|
|
@@ -1186,10 +1235,12 @@ var Engine = /** @class */ (function () {
|
|
|
1186
1235
|
params: params,
|
|
1187
1236
|
executionId: executionId,
|
|
1188
1237
|
context: context,
|
|
1238
|
+
result: result,
|
|
1189
1239
|
startTime: startTime,
|
|
1190
1240
|
endTime: endTime,
|
|
1191
1241
|
duration: endTime - startTime,
|
|
1192
1242
|
});
|
|
1243
|
+
// console.log("graph run done", result, context, endTime - startTime);
|
|
1193
1244
|
return [2 /*return*/, result];
|
|
1194
1245
|
}
|
|
1195
1246
|
});
|
|
@@ -1301,11 +1352,12 @@ var Engine = /** @class */ (function () {
|
|
|
1301
1352
|
}
|
|
1302
1353
|
return [2 /*return*/, this.run(builtFn, inputs)];
|
|
1303
1354
|
}
|
|
1304
|
-
console.log("Engine running with inputs", inputs, interpolate(inputs, {}));
|
|
1305
1355
|
mappedInputs = interpolate(inputs, {});
|
|
1356
|
+
console.log("Engine running with inputs", inputs, mappedInputs);
|
|
1306
1357
|
return [4 /*yield*/, ((_a = node.impl) === null || _a === void 0 ? void 0 : _a.call(node, mappedInputs, {}))];
|
|
1307
1358
|
case 1:
|
|
1308
1359
|
result = _b.sent();
|
|
1360
|
+
console.log("Engine run complete", result);
|
|
1309
1361
|
return [2 /*return*/, result];
|
|
1310
1362
|
}
|
|
1311
1363
|
});
|
|
@@ -1315,8 +1367,8 @@ var Engine = /** @class */ (function () {
|
|
|
1315
1367
|
return this.fnIndex[name];
|
|
1316
1368
|
};
|
|
1317
1369
|
// node handlers
|
|
1318
|
-
Engine.prototype.applyNodeDelete = function (
|
|
1319
|
-
var newFn = __assign(__assign({},
|
|
1370
|
+
Engine.prototype.applyNodeDelete = function (oldFn, nodeIds) {
|
|
1371
|
+
var newFn = __assign(__assign({}, oldFn), { body: __assign({}, oldFn.body) });
|
|
1320
1372
|
nodeIds.forEach(function (id) {
|
|
1321
1373
|
delete newFn.body[id];
|
|
1322
1374
|
});
|
|
@@ -1337,8 +1389,8 @@ var Engine = /** @class */ (function () {
|
|
|
1337
1389
|
});
|
|
1338
1390
|
return newFn;
|
|
1339
1391
|
};
|
|
1340
|
-
Engine.prototype.applyEdgeDelete = function (
|
|
1341
|
-
var newFn = __assign(__assign({},
|
|
1392
|
+
Engine.prototype.applyEdgeDelete = function (oldFn, fromNode, toNode, fromField, toField) {
|
|
1393
|
+
var newFn = __assign(__assign({}, oldFn), { body: __assign({}, oldFn.body) });
|
|
1342
1394
|
var from = newFn.body[fromNode];
|
|
1343
1395
|
var to = newFn.body[toNode];
|
|
1344
1396
|
if (!from || !to) {
|
|
@@ -1353,8 +1405,8 @@ var Engine = /** @class */ (function () {
|
|
|
1353
1405
|
}
|
|
1354
1406
|
return newFn;
|
|
1355
1407
|
};
|
|
1356
|
-
Engine.prototype.applyNodeAdd = function (
|
|
1357
|
-
var newFn = __assign(__assign({},
|
|
1408
|
+
Engine.prototype.applyNodeAdd = function (oldFn, nodeName, callback) {
|
|
1409
|
+
var newFn = __assign(__assign({}, oldFn), { body: __assign({}, oldFn.body) });
|
|
1358
1410
|
var id = uid$1();
|
|
1359
1411
|
// ensure unique id
|
|
1360
1412
|
while (newFn.body[id]) {
|
|
@@ -1387,10 +1439,10 @@ var Engine = /** @class */ (function () {
|
|
|
1387
1439
|
callback === null || callback === void 0 ? void 0 : callback(newCall, id);
|
|
1388
1440
|
return topSort(newFn);
|
|
1389
1441
|
};
|
|
1390
|
-
Engine.prototype.applyNodeConnect = function (
|
|
1391
|
-
var newFn = __assign(__assign({},
|
|
1442
|
+
Engine.prototype.applyNodeConnect = function (oldFn, fromNode, toNode, fromField, toField) {
|
|
1443
|
+
var newFn = __assign(__assign({}, oldFn), { body: __assign({}, oldFn.body) });
|
|
1392
1444
|
var from = newFn.body[fromNode];
|
|
1393
|
-
var to = newFn.body[toNode];
|
|
1445
|
+
var to = __assign({}, newFn.body[toNode]);
|
|
1394
1446
|
if (!from || !to) {
|
|
1395
1447
|
console.warn("Invalid nodes for connection");
|
|
1396
1448
|
return newFn;
|
|
@@ -1400,6 +1452,7 @@ var Engine = /** @class */ (function () {
|
|
|
1400
1452
|
}
|
|
1401
1453
|
// add the reference
|
|
1402
1454
|
to.inputs[toField] = "<".concat(fromNode, ".").concat(fromField, ">");
|
|
1455
|
+
newFn.body[toNode] = to;
|
|
1403
1456
|
return topSort(newFn);
|
|
1404
1457
|
};
|
|
1405
1458
|
return Engine;
|
|
@@ -1427,11 +1480,11 @@ function Control(_a) {
|
|
|
1427
1480
|
}
|
|
1428
1481
|
}
|
|
1429
1482
|
|
|
1430
|
-
var styles = {"DefaultNode":"DefaultNode_R2P6c","selected":"selected_VmB-F","active":"active_zjUzx","Log":"Log_dsq5e","Label":"Label_wBwWA","Input":"Input_Yhvzf","Output":"Output_e4yF-","Table":"Table_aZyRT"};
|
|
1483
|
+
var styles = {"DefaultNode":"DefaultNode_R2P6c","selected":"selected_VmB-F","active":"active_zjUzx","Log":"Log_dsq5e","Label":"Label_wBwWA","Input":"Input_Yhvzf","Output":"Output_e4yF-","PreviewHead":"PreviewHead_oFT4K","expanded":"expanded_3vnbi","Preview":"Preview_HbkZ6","Table":"Table_aZyRT","GroupHead":"GroupHead_QJhST","GroupChildren":"GroupChildren_NKx-B","GroupLeaf":"GroupLeaf_eliT8"};
|
|
1431
1484
|
|
|
1432
1485
|
var Input = function (_a) {
|
|
1433
1486
|
var _b;
|
|
1434
|
-
var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data;
|
|
1487
|
+
var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data, onClick = _a.onClick;
|
|
1435
1488
|
var normalized = normalizeVarDef(varDef);
|
|
1436
1489
|
var value = (_b = data.inputs) === null || _b === void 0 ? void 0 : _b[name];
|
|
1437
1490
|
var isRef = isReference(value);
|
|
@@ -1443,16 +1496,16 @@ var Input = function (_a) {
|
|
|
1443
1496
|
}; };
|
|
1444
1497
|
return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]), style: {
|
|
1445
1498
|
"--type-color": "var(--color-".concat(normalized.type, ")"),
|
|
1446
|
-
} },
|
|
1499
|
+
}, onClick: onClick },
|
|
1447
1500
|
React.createElement("td", null,
|
|
1448
|
-
|
|
1501
|
+
normalized.label || name,
|
|
1449
1502
|
React.createElement(react.Handle, { type: "target", position: react.Position.Left, id: "".concat(id, "-").concat(name) })),
|
|
1450
1503
|
React.createElement("td", null, !isRef && (React.createElement(Control, { type: normalized.type, value: value, onChange: handleInputChange(name) })))));
|
|
1451
1504
|
};
|
|
1452
1505
|
|
|
1453
1506
|
var Param = function (_a) {
|
|
1454
1507
|
var _b;
|
|
1455
|
-
_a.id; var name = _a.name, varDef = _a.varDef, data = _a.data;
|
|
1508
|
+
_a.id; var name = _a.name, varDef = _a.varDef, data = _a.data, onClick = _a.onClick;
|
|
1456
1509
|
var normalized = normalizeVarDef(varDef);
|
|
1457
1510
|
var value = (_b = data.params) === null || _b === void 0 ? void 0 : _b[name];
|
|
1458
1511
|
var isRef = isReference(value);
|
|
@@ -1464,19 +1517,20 @@ var Param = function (_a) {
|
|
|
1464
1517
|
}; };
|
|
1465
1518
|
return (React.createElement("tr", { key: name, className: classNames(styles.Input, styles["type-".concat(normalized.type)]), style: {
|
|
1466
1519
|
"--type-color": "var(--color-".concat(normalized.type, ")"),
|
|
1467
|
-
} },
|
|
1468
|
-
React.createElement("td", null,
|
|
1520
|
+
}, onClick: onClick },
|
|
1521
|
+
React.createElement("td", null, normalized.label || name),
|
|
1469
1522
|
React.createElement("td", null, !isRef && (React.createElement(Control, { type: normalized.type, options: normalized.options, value: value, onChange: handleParamChange(name) })))));
|
|
1470
1523
|
};
|
|
1471
1524
|
|
|
1472
1525
|
var Output = function (_a) {
|
|
1473
|
-
var name = _a.name, varDef = _a.varDef, id = _a.id;
|
|
1526
|
+
var name = _a.name, varDef = _a.varDef, id = _a.id, onClick = _a.onClick, focus = _a.focus;
|
|
1474
1527
|
var normalized = normalizeVarDef(varDef);
|
|
1475
1528
|
return (React.createElement("tr", { key: name, className: classNames(styles.Output, styles["type-".concat(normalized.type)]), style: {
|
|
1476
1529
|
"--type-color": "var(--color-".concat(normalized.type, ")"),
|
|
1477
|
-
} },
|
|
1530
|
+
}, onClick: onClick },
|
|
1478
1531
|
React.createElement("td", { colSpan: 2 },
|
|
1479
|
-
|
|
1532
|
+
focus && "👁 ",
|
|
1533
|
+
normalized.label || name,
|
|
1480
1534
|
React.createElement(react.Handle, { type: "source", position: react.Position.Right, id: "".concat(id, "-").concat(name) }))));
|
|
1481
1535
|
};
|
|
1482
1536
|
|
|
@@ -1519,24 +1573,110 @@ function NodeContainer(_a) {
|
|
|
1519
1573
|
children));
|
|
1520
1574
|
}
|
|
1521
1575
|
|
|
1576
|
+
function createTreeStructure(tree) {
|
|
1577
|
+
var keys = Object.keys(tree);
|
|
1578
|
+
var structure = [];
|
|
1579
|
+
keys.forEach(function (key) {
|
|
1580
|
+
var path = key.split(";");
|
|
1581
|
+
var parent = structure;
|
|
1582
|
+
for (var i = 0; i < path.length; i++) {
|
|
1583
|
+
var part = parseInt(path[i], 10);
|
|
1584
|
+
if (!parent[part]) {
|
|
1585
|
+
parent[part] = [];
|
|
1586
|
+
}
|
|
1587
|
+
parent = parent[part];
|
|
1588
|
+
}
|
|
1589
|
+
parent.push({ items: tree[key] });
|
|
1590
|
+
});
|
|
1591
|
+
return structure;
|
|
1592
|
+
}
|
|
1593
|
+
function TreeBranchView(_a) {
|
|
1594
|
+
var branch = _a.branch, name = _a.name;
|
|
1595
|
+
return (React.createElement("div", null,
|
|
1596
|
+
React.createElement("div", { className: styles.GroupHead },
|
|
1597
|
+
React.createElement("span", null,
|
|
1598
|
+
"group ",
|
|
1599
|
+
name)),
|
|
1600
|
+
React.createElement("div", { className: styles.GroupChildren }, branch.map(function (item, index) {
|
|
1601
|
+
// sub branch
|
|
1602
|
+
if (Array.isArray(item)) {
|
|
1603
|
+
return (React.createElement(TreeBranchView, { key: index, branch: item, name: "".concat(name, ";").concat(index) }));
|
|
1604
|
+
}
|
|
1605
|
+
// items
|
|
1606
|
+
return (React.createElement("div", { key: index }, item.items.map(function (it, i) {
|
|
1607
|
+
var _a;
|
|
1608
|
+
var label = (_a = it === null || it === void 0 ? void 0 : it.toString) === null || _a === void 0 ? void 0 : _a.call(it);
|
|
1609
|
+
if (label === "[object Object]") {
|
|
1610
|
+
label = "{...}";
|
|
1611
|
+
}
|
|
1612
|
+
return (React.createElement("div", { key: i, className: styles.GroupLeaf, title: JSON.stringify(it, null, 2) }, label));
|
|
1613
|
+
})));
|
|
1614
|
+
}))));
|
|
1615
|
+
}
|
|
1616
|
+
function TreeView(_a) {
|
|
1617
|
+
var value = _a.value;
|
|
1618
|
+
var structure = createTreeStructure(value || {});
|
|
1619
|
+
return (React.createElement("div", null, structure.map(function (branch, index) { return (React.createElement(TreeBranchView, { branch: branch, name: index })); })));
|
|
1620
|
+
}
|
|
1621
|
+
var Log = React.memo(function (_a) {
|
|
1622
|
+
var id = _a.id, data = _a.data, selected = _a.selected;
|
|
1623
|
+
var engine = useEngine();
|
|
1624
|
+
var _b = __read(React.useState(null), 2), value = _b[0], setValue = _b[1];
|
|
1625
|
+
React.useEffect(function () {
|
|
1626
|
+
return engine.subscribe("functionResult", function (event) {
|
|
1627
|
+
var _a;
|
|
1628
|
+
if (event.name === id) {
|
|
1629
|
+
setValue(((_a = event.context.scope[id]) === null || _a === void 0 ? void 0 : _a.data) || null);
|
|
1630
|
+
}
|
|
1631
|
+
});
|
|
1632
|
+
}, []);
|
|
1633
|
+
return (React.createElement(NodeContainer, { id: id, label: data.name, selected: selected, className: styles.Log },
|
|
1634
|
+
React.createElement(TreeView, { value: value }),
|
|
1635
|
+
React.createElement(react.Handle, { type: "target", position: react.Position.Left, id: "".concat(id, "-data") }),
|
|
1636
|
+
React.createElement(react.Handle, { type: "source", position: react.Position.Right, id: "".concat(id, "-data") })));
|
|
1637
|
+
});
|
|
1638
|
+
Log.displayName = "LogNode";
|
|
1639
|
+
|
|
1522
1640
|
function GenericNode(_a) {
|
|
1641
|
+
var _b;
|
|
1642
|
+
var _c;
|
|
1523
1643
|
var id = _a.id, data = _a.data, selected = _a.selected, inputs = _a.inputs, outputs = _a.outputs, params = _a.params, children = _a.children;
|
|
1644
|
+
var inputEntries = Object.entries(inputs || data.inputDefs || {});
|
|
1645
|
+
var outputEntries = Object.entries(outputs || data.outputDefs || {});
|
|
1646
|
+
var paramEntries = Object.entries(params || data.paramDefs || {});
|
|
1647
|
+
var engine = useEngine();
|
|
1648
|
+
var _d = __read(React.useState({}), 2), result = _d[0], setResult = _d[1];
|
|
1649
|
+
var _e = __read(React.useState(((_c = outputEntries[0]) === null || _c === void 0 ? void 0 : _c[0]) || null), 2), focus = _e[0], setFocus = _e[1];
|
|
1650
|
+
var _f = __read(React.useState(false), 2), showPreview = _f[0], setShowPreview = _f[1];
|
|
1651
|
+
var previewValue = focus ? result[focus] : Object.values(result)[0];
|
|
1652
|
+
React.useEffect(function () {
|
|
1653
|
+
return engine.subscribe("functionResult", function (event) {
|
|
1654
|
+
if (event.name === id) {
|
|
1655
|
+
setResult(event.result || {});
|
|
1656
|
+
}
|
|
1657
|
+
});
|
|
1658
|
+
}, []);
|
|
1524
1659
|
return (React.createElement(NodeContainer, { label: data.name, selected: selected, id: id },
|
|
1525
1660
|
children,
|
|
1526
1661
|
React.createElement("table", null,
|
|
1527
1662
|
React.createElement("tbody", null,
|
|
1528
|
-
|
|
1663
|
+
outputEntries.map(function (_a) {
|
|
1529
1664
|
var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
|
|
1530
|
-
return (React.createElement(Output, { key: name, name: name, varDef: varDef, id: id }));
|
|
1665
|
+
return (React.createElement(Output, { key: name, name: name, varDef: varDef, id: id, onClick: function () { return setFocus(name); }, focus: showPreview && focus === name }));
|
|
1531
1666
|
}),
|
|
1532
|
-
|
|
1667
|
+
inputEntries.map(function (_a) {
|
|
1533
1668
|
var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
|
|
1534
1669
|
return (React.createElement(Input, { key: name, name: name, varDef: varDef, id: id, data: data }));
|
|
1535
1670
|
}),
|
|
1536
|
-
|
|
1671
|
+
paramEntries.map(function (_a) {
|
|
1537
1672
|
var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
|
|
1538
1673
|
return (React.createElement(Param, { key: name, name: name, varDef: varDef, id: id, data: data }));
|
|
1539
|
-
})))
|
|
1674
|
+
}))),
|
|
1675
|
+
React.createElement("div", { className: classNames(styles.PreviewHead, (_b = {},
|
|
1676
|
+
_b[styles.expanded] = showPreview,
|
|
1677
|
+
_b)), onClick: function () { return setShowPreview(!showPreview); } }, "Preview"),
|
|
1678
|
+
showPreview && (React.createElement("div", { className: styles.Preview },
|
|
1679
|
+
React.createElement(TreeView, { value: previewValue })))));
|
|
1540
1680
|
}
|
|
1541
1681
|
|
|
1542
1682
|
var math = mathjs.create(mathjs.all, {});
|
|
@@ -1580,38 +1720,6 @@ var Default = React.memo(function (_a) {
|
|
|
1580
1720
|
});
|
|
1581
1721
|
Default.displayName = "DefaultNode";
|
|
1582
1722
|
|
|
1583
|
-
var Log = React.memo(function (_a) {
|
|
1584
|
-
var id = _a.id, data = _a.data, selected = _a.selected;
|
|
1585
|
-
var engine = useEngine();
|
|
1586
|
-
var _b = __read(React.useState(null), 2), value = _b[0], setValue = _b[1];
|
|
1587
|
-
React.useEffect(function () {
|
|
1588
|
-
return engine.subscribe("functionResult", function (event) {
|
|
1589
|
-
var _a;
|
|
1590
|
-
if (event.name === id) {
|
|
1591
|
-
setValue(((_a = event.context.scope[id]) === null || _a === void 0 ? void 0 : _a.data) || null);
|
|
1592
|
-
}
|
|
1593
|
-
});
|
|
1594
|
-
}, []);
|
|
1595
|
-
return (React.createElement(NodeContainer, { id: id, label: data.name, selected: selected, className: styles.Log },
|
|
1596
|
-
React.createElement("div", { className: styles.Table },
|
|
1597
|
-
React.createElement("table", null, Object.entries(value || {}).map(function (_a) {
|
|
1598
|
-
var _b = __read(_a, 2), key = _b[0], val = _b[1];
|
|
1599
|
-
return (React.createElement(React.Fragment, { key: key },
|
|
1600
|
-
React.createElement("tbody", null,
|
|
1601
|
-
React.createElement("tr", null,
|
|
1602
|
-
React.createElement("th", { colSpan: 2 }, "{".concat(key, "}"))),
|
|
1603
|
-
val.map(function (item, index) {
|
|
1604
|
-
var _a;
|
|
1605
|
-
return (React.createElement("tr", { key: "".concat(key, "-").concat(index) },
|
|
1606
|
-
React.createElement("td", null, index),
|
|
1607
|
-
React.createElement("td", { title: JSON.stringify(item, null, 2) }, (_a = item === null || item === void 0 ? void 0 : item.toString) === null || _a === void 0 ? void 0 : _a.call(item))));
|
|
1608
|
-
}))));
|
|
1609
|
-
}))),
|
|
1610
|
-
React.createElement(react.Handle, { type: "target", position: react.Position.Left, id: "".concat(id, "-data") }),
|
|
1611
|
-
React.createElement(react.Handle, { type: "source", position: react.Position.Right, id: "".concat(id, "-data") })));
|
|
1612
|
-
});
|
|
1613
|
-
Log.displayName = "LogNode";
|
|
1614
|
-
|
|
1615
1723
|
function uid() {
|
|
1616
1724
|
return Math.random().toString(36).substring(2, 15);
|
|
1617
1725
|
}
|
|
@@ -1658,12 +1766,21 @@ var variableStore = zustand.create(function (set, get, api) {
|
|
|
1658
1766
|
},
|
|
1659
1767
|
setVar: function (scope, name, value, persist) {
|
|
1660
1768
|
var _a, _b;
|
|
1769
|
+
var key = "".concat(scope, "|").concat(name);
|
|
1661
1770
|
if (persist) {
|
|
1662
|
-
var
|
|
1771
|
+
var oldData = pget().data;
|
|
1772
|
+
var newValue = typeof value === "function"
|
|
1773
|
+
? value(oldData[key])
|
|
1774
|
+
: value;
|
|
1775
|
+
var data = __assign(__assign({}, oldData), (_a = {}, _a[key] = newValue, _a));
|
|
1663
1776
|
pset({ data: data });
|
|
1664
1777
|
}
|
|
1665
1778
|
else {
|
|
1666
|
-
var
|
|
1779
|
+
var oldData = get().data;
|
|
1780
|
+
var newValue = typeof value === "function"
|
|
1781
|
+
? value(oldData[key])
|
|
1782
|
+
: value;
|
|
1783
|
+
var data = __assign(__assign({}, oldData), (_b = {}, _b[key] = newValue, _b));
|
|
1667
1784
|
set({ data: data });
|
|
1668
1785
|
}
|
|
1669
1786
|
},
|
|
@@ -1699,96 +1816,172 @@ function usePositions(fn) {
|
|
|
1699
1816
|
function useUpdatePositions(fn) {
|
|
1700
1817
|
var _a = __read(usePositions(fn), 2), positions = _a[0], setPositions = _a[1];
|
|
1701
1818
|
return React.useCallback(function (id, position) {
|
|
1702
|
-
|
|
1703
|
-
setPositions(
|
|
1819
|
+
positions[id] = position;
|
|
1820
|
+
setPositions(positions);
|
|
1704
1821
|
}, [positions, setPositions]);
|
|
1705
1822
|
}
|
|
1706
1823
|
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1824
|
+
// helpers
|
|
1825
|
+
function updateNodeArguments(node, inputs, params) {
|
|
1826
|
+
return __assign(__assign({}, node), { data: __assign(__assign({}, node.data), { inputs: inputs, params: params }) });
|
|
1827
|
+
}
|
|
1828
|
+
/**
|
|
1829
|
+
* flow state stores nodes and edges for the flow graph these can be updated when the function changes
|
|
1830
|
+
* using setFn
|
|
1831
|
+
*/
|
|
1832
|
+
var useFlowState = zustand.create(function (set, get) { return ({
|
|
1833
|
+
engine: null,
|
|
1834
|
+
fn: null,
|
|
1835
|
+
options: {},
|
|
1836
|
+
nodes: [],
|
|
1837
|
+
edges: [],
|
|
1838
|
+
setNodes: function (updater) {
|
|
1839
|
+
set(function (state) { return ({ nodes: updater(state.nodes) }); });
|
|
1840
|
+
},
|
|
1841
|
+
setEdges: function (updater) {
|
|
1842
|
+
set(function (state) { return ({ edges: updater(state.edges) }); });
|
|
1843
|
+
},
|
|
1844
|
+
setFn: function (fn) {
|
|
1845
|
+
// console.log("setFn", fn);
|
|
1846
|
+
var _a = get(), oldFn = _a.fn, nodes = _a.nodes, edges = _a.edges, engine = _a.engine, options = _a.options;
|
|
1847
|
+
// update the graph by shallow comparison
|
|
1848
|
+
if (!engine) {
|
|
1849
|
+
throw new Error("Engine not set");
|
|
1850
|
+
}
|
|
1851
|
+
var oldKeys = Object.keys((oldFn === null || oldFn === void 0 ? void 0 : oldFn.body) || {});
|
|
1852
|
+
var newKeys = Object.keys(fn.body || {});
|
|
1853
|
+
// remove all the nodes that were removed
|
|
1854
|
+
nodes = nodes === null || nodes === void 0 ? void 0 : nodes.filter(function (node) { return newKeys.includes(node.id); });
|
|
1855
|
+
// remove all the edges that were removed
|
|
1856
|
+
edges = edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) {
|
|
1857
|
+
return (newKeys.includes(edge.source) && newKeys.includes(edge.target));
|
|
1858
|
+
});
|
|
1859
|
+
// create the new nodes that were added
|
|
1860
|
+
var addedKeys = newKeys.filter(function (key) { return !oldKeys.includes(key); });
|
|
1861
|
+
addedKeys.forEach(function (key, index) {
|
|
1862
|
+
var _a;
|
|
1863
|
+
var fncall = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[key];
|
|
1864
|
+
// add the node
|
|
1865
|
+
nodes.push(createNode(engine, key, fncall, options));
|
|
1866
|
+
// add edges
|
|
1867
|
+
var refs = getReferences(fncall.inputs || {});
|
|
1868
|
+
refs.forEach(function (ref) {
|
|
1869
|
+
edges.push(createEdge(key, ref));
|
|
1720
1870
|
});
|
|
1721
1871
|
});
|
|
1722
|
-
// update the
|
|
1723
|
-
var
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
(_a = options === null || options === void 0 ? void 0 : options.onChange) === null || _a === void 0 ? void 0 : _a.call(options, updatedFn);
|
|
1728
|
-
// console.log("updated call", fncall);
|
|
1729
|
-
}; };
|
|
1730
|
-
Object.entries(fn.body || {}).forEach(function (_a, index) {
|
|
1731
|
-
var _b = __read(_a, 2), id = _b[0], fncall = _b[1];
|
|
1732
|
-
var calledFn = engine.getFunction(fncall.name);
|
|
1733
|
-
// create a node for each function call
|
|
1734
|
-
nodes.push({
|
|
1735
|
-
id: id,
|
|
1736
|
-
data: {
|
|
1737
|
-
name: fncall.name,
|
|
1738
|
-
caller: fn,
|
|
1739
|
-
inputs: fncall.inputs,
|
|
1740
|
-
params: fncall.params,
|
|
1741
|
-
inputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs) || {},
|
|
1742
|
-
paramDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.params) || {},
|
|
1743
|
-
outputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.outputs) || {},
|
|
1744
|
-
onChange: handleChange(id),
|
|
1745
|
-
},
|
|
1746
|
-
position: (positions === null || positions === void 0 ? void 0 : positions[id]) || { x: 250 * index, y: 0 },
|
|
1747
|
-
dragHandle: options === null || options === void 0 ? void 0 : options.dragHandle,
|
|
1748
|
-
type: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.nodeType) || "Default",
|
|
1872
|
+
// update the changed nodes
|
|
1873
|
+
var changedKeys = newKeys.filter(function (key) {
|
|
1874
|
+
var _a, _b;
|
|
1875
|
+
// shallow comparison
|
|
1876
|
+
return ((_a = fn.body) === null || _a === void 0 ? void 0 : _a[key]) !== ((_b = oldFn === null || oldFn === void 0 ? void 0 : oldFn.body) === null || _b === void 0 ? void 0 : _b[key]);
|
|
1749
1877
|
});
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1878
|
+
// console.log("changed keys", changedKeys);
|
|
1879
|
+
changedKeys.forEach(function (key) {
|
|
1880
|
+
var _a;
|
|
1881
|
+
// update the nodes that were changed
|
|
1882
|
+
var fncall = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[key];
|
|
1883
|
+
nodes = nodes === null || nodes === void 0 ? void 0 : nodes.map(function (n) {
|
|
1884
|
+
if (n.id === key) {
|
|
1885
|
+
return updateNodeArguments(n, fncall.inputs, fncall.params);
|
|
1886
|
+
}
|
|
1887
|
+
return n;
|
|
1888
|
+
});
|
|
1889
|
+
// update incoming edges
|
|
1890
|
+
var refs = getReferences(fncall.inputs || {});
|
|
1891
|
+
// remove all incoming edges
|
|
1892
|
+
edges = edges === null || edges === void 0 ? void 0 : edges.filter(function (e) { return e.target !== key; });
|
|
1893
|
+
// add the edge
|
|
1894
|
+
refs.forEach(function (ref) {
|
|
1895
|
+
edges.push(createEdge(key, ref));
|
|
1759
1896
|
});
|
|
1760
1897
|
});
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
}
|
|
1898
|
+
// console.log("final graph", nodes, edges);
|
|
1899
|
+
// update the function, nodes and edges
|
|
1900
|
+
set({ fn: fn, nodes: nodes, edges: edges });
|
|
1901
|
+
},
|
|
1902
|
+
init: function (fn, engine, options) {
|
|
1903
|
+
// console.log("initing");
|
|
1904
|
+
set({ engine: engine, options: options });
|
|
1905
|
+
get().setFn(fn);
|
|
1906
|
+
},
|
|
1907
|
+
}); });
|
|
1908
|
+
/**
|
|
1909
|
+
* creates a flow state and provides handlers to update nodes and edges
|
|
1910
|
+
*/
|
|
1764
1911
|
function useFlow(fn, engine, options) {
|
|
1765
|
-
var
|
|
1912
|
+
var state = useFlowState();
|
|
1766
1913
|
React.useEffect(function () {
|
|
1767
|
-
|
|
1768
|
-
options.setNodes(nodes);
|
|
1769
|
-
options.setEdges(edges);
|
|
1914
|
+
state.init(fn, engine, options);
|
|
1770
1915
|
}, [engine]);
|
|
1916
|
+
React.useEffect(function () {
|
|
1917
|
+
state.setFn(fn);
|
|
1918
|
+
}, [fn]);
|
|
1919
|
+
return React.useMemo(function () { return ({
|
|
1920
|
+
nodes: state.nodes,
|
|
1921
|
+
edges: state.edges,
|
|
1922
|
+
setNodes: state.setNodes,
|
|
1923
|
+
setEdges: state.setEdges,
|
|
1924
|
+
}); }, [state]);
|
|
1925
|
+
}
|
|
1926
|
+
function createNode(engine, id, fncall, options) {
|
|
1927
|
+
var _a, _b;
|
|
1928
|
+
var calledFn = engine.getFunction(fncall.name);
|
|
1929
|
+
// create a node for each function call
|
|
1930
|
+
return {
|
|
1931
|
+
id: id,
|
|
1932
|
+
data: {
|
|
1933
|
+
name: fncall.name,
|
|
1934
|
+
inputs: fncall.inputs,
|
|
1935
|
+
params: fncall.params,
|
|
1936
|
+
inputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs) || {},
|
|
1937
|
+
paramDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.params) || {},
|
|
1938
|
+
outputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.outputs) || {},
|
|
1939
|
+
onChange: ((_a = options.onDataChange) === null || _a === void 0 ? void 0 : _a.call(options, id)) || (function () { }),
|
|
1940
|
+
},
|
|
1941
|
+
position: ((_b = options.positions) === null || _b === void 0 ? void 0 : _b[id]) || { x: 0, y: 0 },
|
|
1942
|
+
dragHandle: options.dragHandle,
|
|
1943
|
+
type: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.nodeType) || "Default",
|
|
1944
|
+
};
|
|
1945
|
+
}
|
|
1946
|
+
function createEdge(nodeId, ref) {
|
|
1947
|
+
return {
|
|
1948
|
+
id: "".concat(ref.path, "-").concat(nodeId, ".").concat(ref.name),
|
|
1949
|
+
source: ref.refNode,
|
|
1950
|
+
target: nodeId,
|
|
1951
|
+
sourceHandle: "".concat(ref.refNode, "-").concat(ref.refField),
|
|
1952
|
+
targetHandle: "".concat(nodeId, "-").concat(ref.name),
|
|
1953
|
+
};
|
|
1771
1954
|
}
|
|
1772
1955
|
|
|
1773
1956
|
function FlowInner(_a) {
|
|
1774
1957
|
var fn = _a.function, engine = _a.engine, onChange = _a.onChange, onClick = _a.onClick, onSelect = _a.onSelect;
|
|
1775
1958
|
var _b = __read(React.useState(null), 2), instance = _b[0], setInstance = _b[1];
|
|
1776
|
-
var
|
|
1777
|
-
var _c = __read(
|
|
1778
|
-
var
|
|
1779
|
-
|
|
1959
|
+
var updatePosition = useUpdatePositions(fn);
|
|
1960
|
+
var _c = __read(usePositions(fn), 1), positions = _c[0];
|
|
1961
|
+
var handleDataChange = function (id) { return function (newData) {
|
|
1962
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(function (fn) {
|
|
1963
|
+
// update the function definition
|
|
1964
|
+
// console.log("before fn call update", Object.keys(fn.body));
|
|
1965
|
+
var body = __assign({}, fn.body);
|
|
1966
|
+
var fncall = __assign(__assign({}, (body[id] || {})), newData);
|
|
1967
|
+
body[id] = fncall;
|
|
1968
|
+
// console.log("after fn call update", Object.keys(body));
|
|
1969
|
+
var updatedFn = __assign(__assign({}, fn), { body: body });
|
|
1970
|
+
return updatedFn;
|
|
1971
|
+
});
|
|
1972
|
+
}; };
|
|
1973
|
+
var _d = useFlow(fn, engine, {
|
|
1780
1974
|
dragHandle: ".".concat(styles.Label),
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
});
|
|
1975
|
+
positions: positions,
|
|
1976
|
+
onDataChange: handleDataChange,
|
|
1977
|
+
}), nodes = _d.nodes, edges = _d.edges, setNodes = _d.setNodes, setEdges = _d.setEdges;
|
|
1785
1978
|
// node selection handler
|
|
1786
|
-
var
|
|
1979
|
+
var handleSelect = React.useCallback(function (_a) {
|
|
1787
1980
|
var nodes = _a.nodes;
|
|
1788
1981
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nodes.map(function (n) { return n.id; }) || []);
|
|
1789
1982
|
}, [onSelect]);
|
|
1790
1983
|
react.useOnSelectionChange({
|
|
1791
|
-
onChange:
|
|
1984
|
+
onChange: handleSelect,
|
|
1792
1985
|
});
|
|
1793
1986
|
// dropping nodes
|
|
1794
1987
|
var _e = __read(reactDnd.useDrop({
|
|
@@ -1797,10 +1990,13 @@ function FlowInner(_a) {
|
|
|
1797
1990
|
var pos = monitor.getClientOffset();
|
|
1798
1991
|
if (instance && pos) {
|
|
1799
1992
|
var position_1 = instance.screenToFlowPosition(pos);
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1993
|
+
// console.log("handle drop", position);
|
|
1994
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(function (fn) {
|
|
1995
|
+
return engine.applyNodeAdd(fn, item.name, function (fnCall, id) {
|
|
1996
|
+
// console.log("node added", id, position);
|
|
1997
|
+
updatePosition(id, position_1);
|
|
1998
|
+
});
|
|
1999
|
+
});
|
|
1804
2000
|
}
|
|
1805
2001
|
},
|
|
1806
2002
|
collect: function (monitor) {
|
|
@@ -1809,8 +2005,7 @@ function FlowInner(_a) {
|
|
|
1809
2005
|
};
|
|
1810
2006
|
},
|
|
1811
2007
|
}), 2); _e[0].isOver; var drop = _e[1];
|
|
1812
|
-
//
|
|
1813
|
-
var updatePosition = useUpdatePositions(fn);
|
|
2008
|
+
// connecting nodes
|
|
1814
2009
|
var onConnect = React.useCallback(function (params) {
|
|
1815
2010
|
var _a, _b;
|
|
1816
2011
|
var sourceField = (_a = params.sourceHandle) === null || _a === void 0 ? void 0 : _a.split("-")[1];
|
|
@@ -1819,37 +2014,34 @@ function FlowInner(_a) {
|
|
|
1819
2014
|
console.warn("Invalid connection handles", params);
|
|
1820
2015
|
return;
|
|
1821
2016
|
}
|
|
1822
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(
|
|
1823
|
-
|
|
1824
|
-
}, [setEdges, fn, onChange]);
|
|
1825
|
-
var onNodesDelete = React.useCallback(function (nodesToDelete) {
|
|
1826
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(engine.applyNodeDelete(fn, nodesToDelete.map(function (n) { return n.id; })));
|
|
1827
|
-
setNodes(function (nodesSnapshot) {
|
|
1828
|
-
return nodesSnapshot.filter(function (node) { return !nodesToDelete.some(function (n) { return n.id === node.id; }); });
|
|
2017
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(function (fn) {
|
|
2018
|
+
return engine.applyNodeConnect(fn, params.source, params.target, sourceField, targetField);
|
|
1829
2019
|
});
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
2020
|
+
}, [fn, onChange]);
|
|
2021
|
+
// deleting nodes
|
|
2022
|
+
var onNodesDelete = React.useCallback(function (nodesToDelete) {
|
|
2023
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(function (fn) {
|
|
2024
|
+
return engine.applyNodeDelete(fn, nodesToDelete.map(function (n) { return n.id; }));
|
|
1834
2025
|
});
|
|
1835
|
-
}, [
|
|
2026
|
+
}, [onChange, fn]);
|
|
2027
|
+
// deleting edges
|
|
1836
2028
|
var onEdgesDelete = React.useCallback(function (edgesToDelete) {
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
return edgesSnapshot.filter(function (edge) { return !edgesToDelete.some(function (e) { return e.id === edge.id; }); });
|
|
2029
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(function (fn) {
|
|
2030
|
+
var newFn = fn;
|
|
2031
|
+
edgesToDelete.forEach(function (edge) {
|
|
2032
|
+
var _a, _b;
|
|
2033
|
+
var sourceField = (_a = edge.sourceHandle) === null || _a === void 0 ? void 0 : _a.split("-")[1];
|
|
2034
|
+
var targetField = (_b = edge.targetHandle) === null || _b === void 0 ? void 0 : _b.split("-")[1];
|
|
2035
|
+
if (!sourceField || !targetField) {
|
|
2036
|
+
console.warn("Invalid connection handles", edge);
|
|
2037
|
+
return;
|
|
2038
|
+
}
|
|
2039
|
+
newFn = engine.applyEdgeDelete(newFn, edge.source, edge.target, sourceField, targetField);
|
|
2040
|
+
});
|
|
2041
|
+
return newFn;
|
|
1851
2042
|
});
|
|
1852
|
-
}, [
|
|
2043
|
+
}, [onChange, fn]);
|
|
2044
|
+
// handle canvas clicks to be able to place nodes
|
|
1853
2045
|
var handleClick = function (e) {
|
|
1854
2046
|
if (instance) {
|
|
1855
2047
|
var position = instance.screenToFlowPosition({
|
|
@@ -1859,9 +2051,19 @@ function FlowInner(_a) {
|
|
|
1859
2051
|
onClick === null || onClick === void 0 ? void 0 : onClick(e, position);
|
|
1860
2052
|
}
|
|
1861
2053
|
};
|
|
2054
|
+
var onNodesChange = React.useCallback(function (changes) {
|
|
2055
|
+
return setNodes(function (nodesSnapshot) {
|
|
2056
|
+
return react.applyNodeChanges(changes, nodesSnapshot);
|
|
2057
|
+
});
|
|
2058
|
+
}, []);
|
|
2059
|
+
var onEdgesChange = React.useCallback(function (changes) {
|
|
2060
|
+
return setEdges(function (edgesSnapshot) {
|
|
2061
|
+
return react.applyEdgeChanges(changes, edgesSnapshot);
|
|
2062
|
+
});
|
|
2063
|
+
}, []);
|
|
1862
2064
|
return (React.createElement(react.ReactFlow, { ref: drop, nodes: nodes, edges: edges, nodeTypes: nodeTypes, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onNodeDragStop: function (e, n) { return updatePosition(n.id, n.position); }, onConnect: onConnect, onInit: setInstance, onPaneClick: handleClick, fitView: true,
|
|
1863
2065
|
// panOnDrag={false}
|
|
1864
|
-
selectionOnDrag: true, minZoom: 0.1, deleteKeyCode: "Delete" },
|
|
2066
|
+
selectionOnDrag: true, minZoom: 0.1, maxZoom: 4, deleteKeyCode: "Delete" },
|
|
1865
2067
|
React.createElement(react.Background, { color: "#ccc", variant: react.BackgroundVariant.Dots }),
|
|
1866
2068
|
React.createElement(react.Controls, null)));
|
|
1867
2069
|
}
|
|
@@ -1928,7 +2130,6 @@ exports.Flow = Flow;
|
|
|
1928
2130
|
exports.binaryOnTree = binaryOnTree;
|
|
1929
2131
|
exports.binaryOnTreeBranch = binaryOnTreeBranch;
|
|
1930
2132
|
exports.broadCast = broadCast;
|
|
1931
|
-
exports.createGraph = createGraph;
|
|
1932
2133
|
exports.expandTree = expandTree;
|
|
1933
2134
|
exports.getBranch = getBranch;
|
|
1934
2135
|
exports.getReferences = getReferences;
|