trying to simplify things a bit more... will get rid of 'onResolve'

This commit is contained in:
Joeri Exelmans 2025-05-13 16:33:25 +02:00
parent 897824e07d
commit 9c0c2dab90
7 changed files with 85 additions and 45 deletions

View file

@ -58,7 +58,7 @@ function headlessCallBlock({state, setState, onResolve}: CallBlockProps) {
}
};
const onFnResolve = (fnState) => {
if (input.resolved) {
if (fnState && input.resolved) {
makeTheCall(input, fnState);
}
else {
@ -70,7 +70,7 @@ function headlessCallBlock({state, setState, onResolve}: CallBlockProps) {
}
};
const onInputResolve = (inputState) => {
if (fn.resolved) {
if (fn.resolved && inputState) {
makeTheCall(inputState, fn);
}
else {
@ -90,13 +90,14 @@ function headlessCallBlock({state, setState, onResolve}: CallBlockProps) {
}
export function CallBlock({ state, setState, onResolve }: CallBlockProps) {
const {unifyError, setFn, setInput, onFnResolve, onInputResolve, onInputCancel}
const {unifyError, setFn, setInput, onFnResolve, onFnCancel, onInputResolve, onInputCancel}
= headlessCallBlock({ state, setState, onResolve });
return <span className={"functionBlock" + (unifyError ? " unifyError" : "")}>
<FunctionHeader
fn={state.fn}
setFn={setFn}
onFnResolve={onFnResolve}
onFnCancel={onFnCancel}
input={state.input} />
<div className="functionParams">
<div className="outputParam">
@ -109,26 +110,29 @@ export function CallBlock({ state, setState, onResolve }: CallBlockProps) {
{/* Output (or Error) */}
{state.resolved && <Value dynamic={state.resolved} />}
{ state.resolved && <>&#x2611;</>}
{unifyError && unifyError.toString()}
</div>
</div>
</span>;
}
function FunctionHeader({ fn, setFn, input, onFnResolve }) {
function FunctionHeader({ fn, setFn, input, onFnResolve, onFnCancel }) {
if (fn.kind === "call") {
// if the function we're calling is itself the result of a function call,
// then we are anonymous, and so we don't draw a function name
// recurse:
const {
onFnResolve : onFnFnResolve
onFnResolve : onFnFnResolve,
onFnCancel : onFnFnCancel,
} = headlessCallBlock({state: fn, setState: setFn, onResolve: onFnResolve});
return <FunctionHeader
fn={fn.fn}
setFn={fnFn => setFn({...fn, fn: fnFn})}
onFnResolve={onFnFnResolve}
onFnCancel={onFnFnCancel}
input={fn.input} />;
}
else {
@ -151,15 +155,15 @@ function FunctionHeader({ fn, setFn, input, onFnResolve }) {
}
// end of recursion - draw function name
return <div className="functionName">
return <span className="functionName">
&nbsp;&#119891;&#119899;&nbsp;
<Editor
state={fn}
setState={setFn}
onResolve={onFnResolve}
onCancel={() => {/*todo*/}}
onCancel={onFnCancel}
filter={filterCompatibleFns} />
</div>;
</span>;
}
}