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