@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.esm.js CHANGED
@@ -6290,13 +6290,32 @@ function Control(_a) {
6290
6290
  }
6291
6291
  }
6292
6292
 
6293
+ function Menu(_a) {
6294
+ var handle = _a.handle, children = _a.children;
6295
+ var _b = __read(React.useState(false), 2), open = _b[0], setOpen = _b[1];
6296
+ var handleOpen = function () {
6297
+ setOpen(!open);
6298
+ };
6299
+ var handleClose = function () {
6300
+ setOpen(false);
6301
+ };
6302
+ return (React.createElement("div", { className: styles$1.Menu },
6303
+ React.createElement("div", { onClick: handleOpen }, handle),
6304
+ open && (React.createElement("div", { className: styles$1.MenuCanvas, onClick: handleClose }, children))));
6305
+ }
6306
+ function MenuItem(_a) {
6307
+ var children = _a.children, props = __rest(_a, ["children"]);
6308
+ return (React.createElement("div", __assign({ className: styles$1.MenuItem }, props), children));
6309
+ }
6310
+
6293
6311
  var Input = function (_a) {
6294
6312
  var _b;
6295
- var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data, onClick = _a.onClick;
6313
+ var name = _a.name, varDef = _a.varDef, id = _a.id, data = _a.data, onClick = _a.onClick, onRename = _a.onRename, onDelete = _a.onDelete;
6296
6314
  var normalized = normalizeVarDef(varDef);
6297
6315
  var value = (_b = data.inputs) === null || _b === void 0 ? void 0 : _b[name];
6298
6316
  var isRef = isReference(value);
6299
6317
  var portId = "".concat(id, "-").concat(safeName(name));
6318
+ var showMenu = onRename || onDelete;
6300
6319
  var handleInputChange = function (param) { return function (value) {
6301
6320
  var _a;
6302
6321
  data.onChange({
@@ -6307,7 +6326,12 @@ var Input = function (_a) {
6307
6326
  "--type-color": "var(--color-".concat(normalized.type, ")"),
6308
6327
  }, onClick: onClick },
6309
6328
  React.createElement("span", { className: styles$1.PortLabel }, normalized.label || name),
6310
- !isRef && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleInputChange(name), data: data }))));
6329
+ !isRef && !showMenu && (React.createElement(Control, { vardef: normalized, value: value, onChange: handleInputChange(name), data: data })),
6330
+ showMenu && (React.createElement("div", { style: { display: "flex" } },
6331
+ React.createElement("span", { style: { flex: 1 } }),
6332
+ React.createElement(Menu, { handle: React.createElement("button", null, "...") },
6333
+ onRename && (React.createElement(MenuItem, { onClick: function () { return onRename(name, normalized); } }, "Rename")),
6334
+ onDelete && (React.createElement(MenuItem, { onClick: function () { return onDelete(name); } }, "Delete")))))));
6311
6335
  };
6312
6336
 
6313
6337
  var Param = function (_a) {
@@ -6566,24 +6590,6 @@ var Default = React.memo(function (_a) {
6566
6590
  });
6567
6591
  Default.displayName = "DefaultNode";
6568
6592
 
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
6593
  /**
6588
6594
  * todo: get input data from graphed function
6589
6595
  */
@@ -6847,17 +6853,9 @@ var OutputNode = React.memo(function (_a) {
6847
6853
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6848
6854
  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
6855
  }),
6850
- Object.entries(inputs || {}).map(function (_a) {
6856
+ Object.entries(inputs || {}).map(function (_a, index) {
6851
6857
  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")))));
6858
+ return (React.createElement(Input, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data, onRename: onRename, onDelete: onDelete }));
6861
6859
  }),
6862
6860
  paramEntries.map(function (_a, index) {
6863
6861
  var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
@@ -6895,12 +6893,104 @@ var DynamicOutput = React.memo(function (_a) {
6895
6893
  });
6896
6894
  DynamicOutput.displayName = "DynamicOutputNode";
6897
6895
 
6896
+ var NamedInput = function (_a) {
6897
+ var _b;
6898
+ var _c;
6899
+ var id = _a.id, data = _a.data, selected = _a.selected;
6900
+ var engine = useEngine();
6901
+ // let fn = useGraphedFunction();
6902
+ var prompt = usePrompts().prompt;
6903
+ var inputEntries = Object.entries(data.inputDefs || {});
6904
+ var outputEntries = Object.entries(data.outputDefs || {});
6905
+ var paramEntries = Object.entries(data.paramDefs || {});
6906
+ var _d = __read(React.useState({}), 2), result = _d[0], setResult = _d[1];
6907
+ var _e = __read(React.useState(null), 2), duration = _e[0], setDuration = _e[1];
6908
+ 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];
6909
+ var _g = __read(React.useState(false), 2), showPreview = _g[0], setShowPreview = _g[1];
6910
+ var previewValue = focus ? result[focus] : Object.values(result)[0];
6911
+ React.useEffect(function () {
6912
+ return engine.subscribe("functionResult", function (event) {
6913
+ var _a;
6914
+ if (event.name === id) {
6915
+ setResult(event.result || {});
6916
+ setDuration((_a = event.duration) !== null && _a !== void 0 ? _a : null);
6917
+ }
6918
+ });
6919
+ }, []);
6920
+ var onRename = function (name, def) { return __awaiter(void 0, void 0, void 0, function () {
6921
+ var newLabel, inputDefs;
6922
+ return __generator(this, function (_a) {
6923
+ switch (_a.label) {
6924
+ case 0: return [4 /*yield*/, prompt("Enter new name", def.label || name)];
6925
+ case 1:
6926
+ newLabel = _a.sent();
6927
+ if (newLabel !== null && newLabel !== def.label) {
6928
+ inputDefs = __assign({}, data.inputDefs);
6929
+ inputDefs[name] = __assign(__assign({}, def), { label: newLabel });
6930
+ data.onChange({ inputDefs: inputDefs });
6931
+ }
6932
+ return [2 /*return*/];
6933
+ }
6934
+ });
6935
+ }); };
6936
+ var onAdd = function () { return __awaiter(void 0, void 0, void 0, function () {
6937
+ var newName, inputDefs;
6938
+ var _a;
6939
+ return __generator(this, function (_b) {
6940
+ switch (_b.label) {
6941
+ case 0: return [4 /*yield*/, prompt("Enter new name")];
6942
+ case 1:
6943
+ newName = _b.sent();
6944
+ if (newName !== null) {
6945
+ inputDefs = __assign(__assign({}, data.inputDefs), (_a = {}, _a[newName] = { type: "any", label: newName }, _a));
6946
+ data.onChange({ inputDefs: inputDefs });
6947
+ }
6948
+ return [2 /*return*/];
6949
+ }
6950
+ });
6951
+ }); };
6952
+ var onDelete = function (name) {
6953
+ var inputDefs = __assign({}, data.inputDefs);
6954
+ var inputs = __assign({}, data.inputs);
6955
+ delete inputDefs[name];
6956
+ delete inputs[name];
6957
+ data.onChange({ inputs: inputs, inputDefs: inputDefs });
6958
+ };
6959
+ return (React.createElement(NodeContainer, { label: data.label, selected: selected, id: id, noDelete: true },
6960
+ React.createElement("div", { className: styles.Description }, data.description),
6961
+ React.createElement("div", { className: styles.Ports },
6962
+ outputEntries.map(function (_a, index) {
6963
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6964
+ return (React.createElement(Output, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, onClick: function () { return setFocus(name); }, focus: showPreview && focus === name }));
6965
+ }),
6966
+ inputEntries.map(function (_a, index) {
6967
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6968
+ return (React.createElement(Input, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data, onRename: onRename, onDelete: onDelete }));
6969
+ }),
6970
+ paramEntries.map(function (_a, index) {
6971
+ var _b = __read(_a, 2), name = _b[0], varDef = _b[1];
6972
+ return (React.createElement(Param, { key: "".concat(name, "_").concat(index), name: name, varDef: varDef, id: id, data: data }));
6973
+ })),
6974
+ React.createElement("div", { className: styles.Body },
6975
+ React.createElement("button", { onClick: function () { return onAdd(); } }, "+")),
6976
+ !!outputEntries.length && (React.createElement("div", { className: classNames(styles.PreviewHead, (_b = {},
6977
+ _b[styles.expanded] = showPreview,
6978
+ _b)), onClick: function () { return setShowPreview(!showPreview); } }, "Preview")),
6979
+ showPreview && (React.createElement("div", { className: styles.Preview },
6980
+ React.createElement(TreeView, { value: previewValue }),
6981
+ duration !== null && (React.createElement("div", { className: styles.Duration },
6982
+ duration.toFixed(2),
6983
+ " ms"))))));
6984
+ };
6985
+ NamedInput.displayName = "NamedInput";
6986
+
6898
6987
  var nodeTypes = {
6899
6988
  Default: Default,
6900
6989
  Calc: Calc,
6901
6990
  Log: Log,
6902
6991
  DynamicInput: DynamicInput,
6903
6992
  DynamicOutput: DynamicOutput,
6993
+ NamedInput: NamedInput,
6904
6994
  Input: InputNode,
6905
6995
  Output: OutputNode,
6906
6996
  };
@@ -6982,8 +7072,8 @@ function useUpdatePositions(fn) {
6982
7072
  }
6983
7073
 
6984
7074
  // helpers
6985
- function updateNodeArguments(node, inputs, params) {
6986
- return __assign(__assign({}, node), { data: __assign(__assign({}, node.data), { inputs: inputs, params: params }) });
7075
+ function updateNodeArguments(node, inputs, params, inputDefs, outputDefs) {
7076
+ 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
7077
  }
6988
7078
  /**
6989
7079
  * gets the source and target node and field from an edge by de-referencing the handles
@@ -7009,7 +7099,7 @@ function createNode(engine, id, fncall, options) {
7009
7099
  description: calledFn === null || calledFn === void 0 ? void 0 : calledFn.description,
7010
7100
  inputs: fncall.inputs,
7011
7101
  params: fncall.params,
7012
- inputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs) || {},
7102
+ inputDefs: __assign(__assign({}, fncall.inputDefs), calledFn === null || calledFn === void 0 ? void 0 : calledFn.inputs),
7013
7103
  paramDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.params) || {},
7014
7104
  outputDefs: (calledFn === null || calledFn === void 0 ? void 0 : calledFn.outputs) || {},
7015
7105
  onChange: ((_a = options.onDataChange) === null || _a === void 0 ? void 0 : _a.call(options, id)) || (function () { }),
@@ -7067,8 +7157,15 @@ var useFlowState = create$1(function (set, get) { return ({
7067
7157
  });
7068
7158
  // remove all the edges that were removed
7069
7159
  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));
7160
+ var _a, _b;
7161
+ var target = deRefEdgeHandle(edge.targetHandle);
7162
+ return (
7163
+ // source node of the edge must be in the document
7164
+ (newKeys.includes(edge.source) || edge.source === "inputs") &&
7165
+ // target node of the edge must be in the document
7166
+ newKeys.includes(edge.target) &&
7167
+ // target field of the edge must be in the target node definition
7168
+ ((_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
7169
  });
7073
7170
  // make sure there is an output node if outputs are defined
7074
7171
  if (fn.outputs && !nodes["output"]) {
@@ -7117,13 +7214,13 @@ var useFlowState = create$1(function (set, get) { return ({
7117
7214
  // shallow comparison
7118
7215
  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]);
7119
7216
  });
7120
- // console.log("changed keys", changedKeys);
7217
+ console.log("changed keys", changedKeys);
7121
7218
  changedKeys.forEach(function (key) {
7122
7219
  var _a;
7123
7220
  // update the nodes that were changed
7124
7221
  var fncall = (_a = fn.body) === null || _a === void 0 ? void 0 : _a[key];
7125
7222
  var node = nodes[key];
7126
- nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params);
7223
+ nodes[key] = updateNodeArguments(node, fncall.inputs, fncall.params, fncall.inputDefs, fncall.outputDefs);
7127
7224
  // update incoming edges
7128
7225
  var refs = getReferences(fncall.inputs || {});
7129
7226
  // remove all incoming edges