@rkmodules/rules 0.0.146 → 0.0.147

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
@@ -6292,13 +6292,32 @@ function Control(_a) {
6292
6292
  }
6293
6293
  }
6294
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
+
6295
6313
  var Input = function (_a) {
6296
6314
  var _b;
6297
- 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;
6298
6316
  var normalized = normalizeVarDef(varDef);
6299
6317
  var value = (_b = data.inputs) === null || _b === void 0 ? void 0 : _b[name];
6300
6318
  var isRef = isReference(value);
6301
6319
  var portId = "".concat(id, "-").concat(safeName(name));
6320
+ var showMenu = onRename || onDelete;
6302
6321
  var handleInputChange = function (param) { return function (value) {
6303
6322
  var _a;
6304
6323
  data.onChange({
@@ -6309,7 +6328,12 @@ var Input = function (_a) {
6309
6328
  "--type-color": "var(--color-".concat(normalized.type, ")"),
6310
6329
  }, onClick: onClick },
6311
6330
  React.createElement("span", { className: styles$1.PortLabel }, normalized.label || name),
6312
- !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")))))));
6313
6337
  };
6314
6338
 
6315
6339
  var Param = function (_a) {
@@ -6568,24 +6592,6 @@ var Default = React.memo(function (_a) {
6568
6592
  });
6569
6593
  Default.displayName = "DefaultNode";
6570
6594
 
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
6595
  /**
6590
6596
  * todo: get input data from graphed function
6591
6597
  */
@@ -6849,17 +6855,9 @@ var OutputNode = React.memo(function (_a) {
6849
6855
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6850
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 }));
6851
6857
  }),
6852
- Object.entries(inputs || {}).map(function (_a) {
6858
+ Object.entries(inputs || {}).map(function (_a, index) {
6853
6859
  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")))));
6860
+ return (React.createElement(Input, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data, onRename: onRename, onDelete: onDelete }));
6863
6861
  }),
6864
6862
  paramEntries.map(function (_a, index) {
6865
6863
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
@@ -6897,12 +6895,104 @@ var DynamicOutput = React.memo(function (_a) {
6897
6895
  });
6898
6896
  DynamicOutput.displayName = "DynamicOutputNode";
6899
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
+ paramEntries.map(function (_a, index) {
6973
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6974
+ return (React.createElement(Param, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data }));
6975
+ })),
6976
+ React.createElement("div", { className: styles.Body },
6977
+ React.createElement("button", { onClick: function () { return onAdd(); } }, "+")),
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
+
6900
6989
  var nodeTypes = {
6901
6990
  Default: Default,
6902
6991
  Calc: Calc,
6903
6992
  Log: Log,
6904
6993
  DynamicInput: DynamicInput,
6905
6994
  DynamicOutput: DynamicOutput,
6995
+ NamedInput: NamedInput,
6906
6996
  Input: InputNode,
6907
6997
  Output: OutputNode,
6908
6998
  };
@@ -6984,8 +7074,8 @@ function useUpdatePositions(fn) {
6984
7074
  }
6985
7075
 
6986
7076
  // helpers
6987
- function updateNodeArguments(node, inputs, params) {
6988
- 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 }) });
6989
7079
  }
6990
7080
  /**
6991
7081
  * gets the source and target node and field from an edge by de-referencing the handles
@@ -7011,7 +7101,7 @@ function createNode(engine, id, fncall, options) {
7011
7101
  description: calledFn === null || calledFn === void 0 ? void 0 : calledFn.description,
7012
7102
  inputs: fncall.inputs,
7013
7103
  params: fncall.params,
7014
- 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),
7015
7105
  paramDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.params) || {},
7016
7106
  outputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.outputs) || {},
7017
7107
  onChange: ((_a = options.onDataChange) === null || _a === void 0 ? void 0 : _a.call(options, id)) || (function () { }),
@@ -7069,8 +7159,15 @@ var useFlowState = zustand.create(function (set, get) { return ({
7069
7159
  });
7070
7160
  // remove all the edges that were removed
7071
7161
  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));
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);
7074
7171
  });
7075
7172
  // make sure there is an output node if outputs are defined
7076
7173
  if (fn.outputs && !nodes["output"]) {
@@ -7119,13 +7216,13 @@ var useFlowState = zustand.create(function (set, get) { return ({
7119
7216
  // shallow comparison
7120
7217
  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]);
7121
7218
  });
7122
- // console.log("changed keys", changedKeys);
7219
+ console.log("changed keys", changedKeys);
7123
7220
  changedKeys.forEach(function (key) {
7124
7221
  var _a;
7125
7222
  // update the nodes that were changed
7126
7223
  var fncall = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[key];
7127
7224
  var node = nodes[key];
7128
- nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params);
7225
+ nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params, fncall.inputDefs, fncall.outputDefs);
7129
7226
  // update incoming edges
7130
7227
  var refs = getReferences(fncall.inputs || {});
7131
7228
  // remove all incoming edges