@rkmodules/rules 0.0.146 → 0.0.148

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.esm.js CHANGED
@@ -1964,7 +1964,7 @@ var mergeTree = {
1964
1964
  name: "mergeTree",
1965
1965
  label: "Merge Tree",
1966
1966
  description: "Merge groups with the same index into a single tree.",
1967
- nodeType: "DynamicInput",
1967
+ nodeType: "NamedInput",
1968
1968
  inputs: {},
1969
1969
  outputs: {
1970
1970
  result: "any",
@@ -3004,6 +3004,7 @@ var Engine = /** @class */ (function () {
3004
3004
  });
3005
3005
  context = {
3006
3006
  scope: { inputs: inputs },
3007
+ calls: {},
3007
3008
  inputs: { inputs: inputs },
3008
3009
  params: { params: params },
3009
3010
  timings: {},
@@ -3029,6 +3030,7 @@ var Engine = /** @class */ (function () {
3029
3030
  inputs_1 = interpolate(fnCall.inputs || {}, context.scope);
3030
3031
  params_1 = fnCall.params || {};
3031
3032
  result_1 = {};
3033
+ context.calls[name_1] = fnCall;
3032
3034
  context.inputs[name_1] = inputs_1;
3033
3035
  context.params[name_1] = params_1;
3034
3036
  cacheResult = this.checkCache(name_1, inputs_1);
@@ -6290,13 +6292,32 @@ function Control(_a) {
6290
6292
  }
6291
6293
  }
6292
6294
 
6295
+ function Menu(_a) {
6296
+ var handle = _a.handle, children = _a.children;
6297
+ var _b = __read(React.useState(false), 2), open = _b[0], setOpen = _b[1];
6298
+ var handleOpen = function () {
6299
+ setOpen(!open);
6300
+ };
6301
+ var handleClose = function () {
6302
+ setOpen(false);
6303
+ };
6304
+ return (React.createElement("div", { className: styles$1.Menu },
6305
+ React.createElement("div", { onClick: handleOpen }, handle),
6306
+ open && (React.createElement("div", { className: styles$1.MenuCanvas, onClick: handleClose }, children))));
6307
+ }
6308
+ function MenuItem(_a) {
6309
+ var children = _a.children, props = __rest(_a, ["children"]);
6310
+ return (React.createElement("div", __assign({ className: styles$1.MenuItem }, props), children));
6311
+ }
6312
+
6293
6313
  var Input = function (_a) {
6294
6314
  var _b;
6295
- var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data, onClick = _a.onClick;
6315
+ var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data, onClick = _a.onClick, onRename = _a.onRename, onDelete = _a.onDelete;
6296
6316
  var normalized = normalizeVarDef(varDef);
6297
6317
  var value = (_b = data.inputs) === null || _b === void 0 ? void 0 : _b[name];
6298
6318
  var isRef = isReference(value);
6299
6319
  var portId = "".concat(id, "-").concat(safeName(name));
6320
+ var showMenu = onRename || onDelete;
6300
6321
  var handleInputChange = function (param) { return function (value) {
6301
6322
  var _a;
6302
6323
  data.onChange({
@@ -6307,7 +6328,12 @@ var Input = function (_a) {
6307
6328
  "--type-color": "var(--color-".concat(normalized.type, ")"),
6308
6329
  }, onClick: onClick },
6309
6330
  React.createElement("span", { className: styles$1.PortLabel }, normalized.label || name),
6310
- !isRef && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleInputChange(name), data: data }))));
6331
+ !isRef && !showMenu && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleInputChange(name), data: data })),
6332
+ showMenu && (React.createElement("div", { style: { display: "flex" } },
6333
+ React.createElement("span", { style: { flex: 1 } }),
6334
+ React.createElement(Menu, { handle: React.createElement("button", null, "...") },
6335
+ onRename && (React.createElement(MenuItem, { onClick: function () { return onRename(name, normalized); } }, "Rename")),
6336
+ onDelete && (React.createElement(MenuItem, { onClick: function () { return onDelete(name); } }, "Delete")))))));
6311
6337
  };
6312
6338
 
6313
6339
  var Param = function (_a) {
@@ -6566,24 +6592,6 @@ var Default = React.memo(function (_a) {
6566
6592
  });
6567
6593
  Default.displayName = "DefaultNode";
6568
6594
 
6569
- function Menu(_a) {
6570
- var handle = _a.handle, children = _a.children;
6571
- var _b = __read(React.useState(false), 2), open = _b[0], setOpen = _b[1];
6572
- var handleOpen = function () {
6573
- setOpen(!open);
6574
- };
6575
- var handleClose = function () {
6576
- setOpen(false);
6577
- };
6578
- return (React.createElement("div", { className: styles$1.Menu },
6579
- React.createElement("div", { onClick: handleOpen }, handle),
6580
- open && (React.createElement("div", { className: styles$1.MenuCanvas, onClick: handleClose }, children))));
6581
- }
6582
- function MenuItem(_a) {
6583
- var children = _a.children, props = __rest(_a, ["children"]);
6584
- return (React.createElement("div", __assign({ className: styles$1.MenuItem }, props), children));
6585
- }
6586
-
6587
6595
  /**
6588
6596
  * todo: get input data from graphed function
6589
6597
  */
@@ -6847,17 +6855,9 @@ var OutputNode = React.memo(function (_a) {
6847
6855
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6848
6856
  return (React.createElement(Output, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, onClick: function () { return setFocus(name); }, focus: showPreview && focus === name }));
6849
6857
  }),
6850
- Object.entries(inputs || {}).map(function (_a) {
6858
+ Object.entries(inputs || {}).map(function (_a, index) {
6851
6859
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6852
- return (React.createElement(Handle, { key: name, type: "target", position: Position.Left, id: "".concat(id, "-").concat(name), className: classNames(styles$1.Input, styles$1.Port, styles$1["type-".concat(varDef.type)]), style: {
6853
- "--type-color": "var(--color-".concat(varDef.type, ")"),
6854
- } },
6855
- React.createElement("span", { className: styles$1.PortLabel }, name),
6856
- React.createElement("div", { style: { display: "flex" } },
6857
- React.createElement("span", { style: { flex: 1 } }),
6858
- React.createElement(Menu, { handle: React.createElement("button", null, "...") },
6859
- React.createElement(MenuItem, { onClick: function () { return onRename(name); } }, "Rename"),
6860
- React.createElement(MenuItem, { onClick: function () { return onDelete(name); } }, "Delete")))));
6860
+ return (React.createElement(Input, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data, onRename: onRename, onDelete: onDelete }));
6861
6861
  }),
6862
6862
  paramEntries.map(function (_a, index) {
6863
6863
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
@@ -6895,12 +6895,104 @@ var DynamicOutput = React.memo(function (_a) {
6895
6895
  });
6896
6896
  DynamicOutput.displayName = "DynamicOutputNode";
6897
6897
 
6898
+ var NamedInput = function (_a) {
6899
+ var _b;
6900
+ var _c;
6901
+ var id = _a.id, data = _a.data, selected = _a.selected;
6902
+ var engine = useEngine();
6903
+ // let fn = useGraphedFunction();
6904
+ var prompt = usePrompts().prompt;
6905
+ var inputEntries = Object.entries(data.inputDefs || {});
6906
+ var outputEntries = Object.entries(data.outputDefs || {});
6907
+ var paramEntries = Object.entries(data.paramDefs || {});
6908
+ var _d = __read(React.useState({}), 2), result = _d[0], setResult = _d[1];
6909
+ var _e = __read(React.useState(null), 2), duration = _e[0], setDuration = _e[1];
6910
+ var _f = __read(useInner(((_c = outputEntries[0]) === null || _c === void 0 ? void 0 : _c[0]) || null, [data.outputDefs]), 2), focus = _f[0], setFocus = _f[1];
6911
+ var _g = __read(React.useState(false), 2), showPreview = _g[0], setShowPreview = _g[1];
6912
+ var previewValue = focus ? result[focus] : Object.values(result)[0];
6913
+ React.useEffect(function () {
6914
+ return engine.subscribe("functionResult", function (event) {
6915
+ var _a;
6916
+ if (event.name === id) {
6917
+ setResult(event.result || {});
6918
+ setDuration((_a = event.duration) !== null && _a !== void 0 ? _a : null);
6919
+ }
6920
+ });
6921
+ }, []);
6922
+ var onRename = function (name, def) { return __awaiter(void 0, void 0, void 0, function () {
6923
+ var newLabel, inputDefs;
6924
+ return __generator(this, function (_a) {
6925
+ switch (_a.label) {
6926
+ case 0: return [4 /*yield*/, prompt("Enter new name", def.label || name)];
6927
+ case 1:
6928
+ newLabel = _a.sent();
6929
+ if (newLabel !== null && newLabel !== def.label) {
6930
+ inputDefs = __assign({}, data.inputDefs);
6931
+ inputDefs[name] = __assign(__assign({}, def), { label: newLabel });
6932
+ data.onChange({ inputDefs: inputDefs });
6933
+ }
6934
+ return [2 /*return*/];
6935
+ }
6936
+ });
6937
+ }); };
6938
+ var onAdd = function () { return __awaiter(void 0, void 0, void 0, function () {
6939
+ var newName, inputDefs;
6940
+ var _a;
6941
+ return __generator(this, function (_b) {
6942
+ switch (_b.label) {
6943
+ case 0: return [4 /*yield*/, prompt("Enter new name")];
6944
+ case 1:
6945
+ newName = _b.sent();
6946
+ if (newName !== null) {
6947
+ inputDefs = __assign(__assign({}, data.inputDefs), (_a = {}, _a[newName] = { type: "any", label: newName }, _a));
6948
+ data.onChange({ inputDefs: inputDefs });
6949
+ }
6950
+ return [2 /*return*/];
6951
+ }
6952
+ });
6953
+ }); };
6954
+ var onDelete = function (name) {
6955
+ var inputDefs = __assign({}, data.inputDefs);
6956
+ var inputs = __assign({}, data.inputs);
6957
+ delete inputDefs[name];
6958
+ delete inputs[name];
6959
+ data.onChange({ inputs: inputs, inputDefs: inputDefs });
6960
+ };
6961
+ return (React.createElement(NodeContainer, { label: data.label, selected: selected, id: id, noDelete: true },
6962
+ React.createElement("div", { className: styles.Description }, data.description),
6963
+ React.createElement("div", { className: styles.Ports },
6964
+ outputEntries.map(function (_a, index) {
6965
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6966
+ return (React.createElement(Output, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, onClick: function () { return setFocus(name); }, focus: showPreview && focus === name }));
6967
+ }),
6968
+ inputEntries.map(function (_a, index) {
6969
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6970
+ return (React.createElement(Input, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data, onRename: onRename, onDelete: onDelete }));
6971
+ }),
6972
+ React.createElement("div", { className: styles.Body },
6973
+ React.createElement("button", { onClick: function () { return onAdd(); } }, "+")),
6974
+ paramEntries.map(function (_a, index) {
6975
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6976
+ return (React.createElement(Param, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data }));
6977
+ })),
6978
+ !!outputEntries.length && (React.createElement("div", { className: classNames(styles.PreviewHead, (_b = {},
6979
+ _b[styles.expanded] = showPreview,
6980
+ _b)), onClick: function () { return setShowPreview(!showPreview); } }, "Preview")),
6981
+ showPreview && (React.createElement("div", { className: styles.Preview },
6982
+ React.createElement(TreeView, { value: previewValue }),
6983
+ duration !== null && (React.createElement("div", { className: styles.Duration },
6984
+ duration.toFixed(2),
6985
+ " ms"))))));
6986
+ };
6987
+ NamedInput.displayName = "NamedInput";
6988
+
6898
6989
  var nodeTypes = {
6899
6990
  Default: Default,
6900
6991
  Calc: Calc,
6901
6992
  Log: Log,
6902
6993
  DynamicInput: DynamicInput,
6903
6994
  DynamicOutput: DynamicOutput,
6995
+ NamedInput: NamedInput,
6904
6996
  Input: InputNode,
6905
6997
  Output: OutputNode,
6906
6998
  };
@@ -6982,8 +7074,8 @@ function useUpdatePositions(fn) {
6982
7074
  }
6983
7075
 
6984
7076
  // helpers
6985
- function updateNodeArguments(node, inputs, params) {
6986
- return __assign(__assign({}, node), { data: __assign(__assign({}, node.data), { inputs: inputs, params: params }) });
7077
+ function updateNodeArguments(node, inputs, params, inputDefs, outputDefs) {
7078
+ return __assign(__assign({}, node), { data: __assign(__assign({}, node.data), { inputs: inputs, params: params, inputDefs: inputDefs !== null && inputDefs !== void 0 ? inputDefs : node.data.inputDefs, outputDefs: outputDefs !== null && outputDefs !== void 0 ? outputDefs : node.data.outputDefs }) });
6987
7079
  }
6988
7080
  /**
6989
7081
  * gets the source and target node and field from an edge by de-referencing the handles
@@ -7009,7 +7101,7 @@ function createNode(engine, id, fncall, options) {
7009
7101
  description: calledFn === null || calledFn === void 0 ? void 0 : calledFn.description,
7010
7102
  inputs: fncall.inputs,
7011
7103
  params: fncall.params,
7012
- inputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs) || {},
7104
+ inputDefs: __assign(__assign({}, fncall.inputDefs), calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs),
7013
7105
  paramDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.params) || {},
7014
7106
  outputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.outputs) || {},
7015
7107
  onChange: ((_a = options.onDataChange) === null || _a === void 0 ? void 0 : _a.call(options, id)) || (function () { }),
@@ -7067,8 +7159,15 @@ var useFlowState = create$1(function (set, get) { return ({
7067
7159
  });
7068
7160
  // remove all the edges that were removed
7069
7161
  edges = edges === null || edges === void 0 ? void 0 : edges.filter(function (edge) {
7070
- return ((newKeys.includes(edge.source) || edge.source === "inputs") &&
7071
- newKeys.includes(edge.target));
7162
+ var _a, _b;
7163
+ var target = deRefEdgeHandle(edge.targetHandle);
7164
+ return (
7165
+ // source node of the edge must be in the document
7166
+ (newKeys.includes(edge.source) || edge.source === "inputs") &&
7167
+ // target node of the edge must be in the document
7168
+ newKeys.includes(edge.target) &&
7169
+ // target field of the edge must be in the target node definition
7170
+ ((_b = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[edge.target].inputs) === null || _b === void 0 ? void 0 : _b[target.field]) !== undefined);
7072
7171
  });
7073
7172
  // make sure there is an output node if outputs are defined
7074
7173
  if (fn.outputs && !nodes["output"]) {
@@ -7123,7 +7222,7 @@ var useFlowState = create$1(function (set, get) { return ({
7123
7222
  // update the nodes that were changed
7124
7223
  var fncall = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[key];
7125
7224
  var node = nodes[key];
7126
- nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params);
7225
+ nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params, fncall.inputDefs, fncall.outputDefs);
7127
7226
  // update incoming edges
7128
7227
  var refs = getReferences(fncall.inputs || {});
7129
7228
  // remove all incoming edges