Skip to content

Commit

Permalink
stdlib: migrates switch and conditionals to macro nodes (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
GabiGrin authored Jan 14, 2024
1 parent 2fbef8c commit 27fa7f8
Show file tree
Hide file tree
Showing 69 changed files with 2,100 additions and 3,417 deletions.
53 changes: 44 additions & 9 deletions examples/custom-macro-nodes/src/Tester.flyde
Original file line number Diff line number Diff line change
@@ -1,18 +1,53 @@
imports:
"@flyde/runtime": []
"@flyde/stdlib": []
InlineValue/InlineValue.flyde.ts:
- InlineValue
"@flyde/stdlib":
- Conditional
- Switch
InlineValue/InlineValue.flyde.ts: []
node:
instances:
- pos:
x: -50
y: -40
id: anidxl49lu803pvgmkuvpxcy
x: 265.3840026855469
y: -96.30816650390625
id: hwy7whilmh8vycasbdabciko
inputConfig: {}
nodeId: InlineValue__anidxl49lu803pvgmkuvpxcy
macroId: InlineValue
macroData: ""
nodeId: Conditional__hwy7whilmh8vycasbdabciko
macroId: Conditional
macroData:
compareTo:
mode: static
value: ""
propertyPath: ""
condition: EQUAL
trueValue: input
falseValue: input
- pos:
x: -201.3778076171875
y: -181.24053955078125
id: v58mbapuga1fs82br1tguo2q
inputConfig:
name:
mode: static
value: Some static value
age:
mode: static
value: 9
nodeId: Switch__v58mbapuga1fs82br1tguo2q
macroId: Switch
macroData:
inputs:
- name
- age
cases:
- name: young
conditionExpression: inputs.age < 30
outputExpression: "true"
- name: queen
conditionExpression: inputs.name === "Elizabeth"
outputExpression: "true"
defaultCase:
enabled: true
outputExpression: '"NPC"'
connections: []
id: DadJoke
inputs: {}
Expand Down
3 changes: 3 additions & 0 deletions flow-editor/src/flow-editor/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
position: relative;
flex-direction: column;
background-color: white;
color: #000;

overflow: hidden;

> .visual-node-editor {
height: 100%;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,14 @@ export const MacroInstanceEditor: React.FC<MacroInstanceEditorProps> = (

const [macroData, setMacroData] = React.useState<any>(ins.macroData);

const macro = useMemo(() => {
const macro = deps[ins.macroId];
if (!macro || !isMacroNodeDefinition(macro)) {
throw new Error(`Macro ${ins.macroId} not found `);
}
return macro;
}, [deps, ins.macroId]);

const EditorComp = useMemo(() => {
const macro = deps[ins.macroId];
if (!macro || !isMacroNodeDefinition(macro)) {
Expand All @@ -37,7 +45,7 @@ export const MacroInstanceEditor: React.FC<MacroInstanceEditorProps> = (
return (
<Dialog
isOpen={true}
title={"Edit Macro Instance"}
title={`Edit ${macro.displayName ?? macro.id} Configuration`}
onClose={props.onCancel}
className="macro-instance-editor"
>
Expand Down
17 changes: 12 additions & 5 deletions flow-editor/src/visual-node-editor/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
isMacroNodeDefinition,
macroNodeInstance,
MacroNodeDefinition,
createInsId,
} from "@flyde/core";
import { calcPinPosition } from "./connection-view/calc-pin-position";
import { Size } from "../utils";
Expand Down Expand Up @@ -275,11 +276,17 @@ export const createNewNodeInstance = (
}, {});

const ins = isMacroNodeDefinition(node)
? macroNodeInstance(createId(), node.id, node.defaultData, inputsConfig, {
x: 0,
y: 0,
})
: nodeInstance(createId(), node.id, inputsConfig, { x: 0, y: 0 });
? macroNodeInstance(
createInsId(node),
node.id,
node.defaultData,
inputsConfig,
{
x: 0,
y: 0,
}
)
: nodeInstance(createInsId(node), node.id, inputsConfig, { x: 0, y: 0 });
const width = calcNodeWidth(ins, node);

const { x, y } = lastMousePos;
Expand Down
72 changes: 54 additions & 18 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion resolver/src/resolver/resolve-dependencies/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export * from "./resolve-dependencies";
export * from "./resolve-importable-paths";
export * from "./macro-nodes";
export * from "./macro-node-to-definition";
Original file line number Diff line number Diff line change
@@ -1,9 +1,4 @@
import {
CodeNode,
MacroNode,
MacroNodeDefinition,
MacroNodeInstance,
} from "@flyde/core";
import { MacroNode, MacroNodeDefinition } from "@flyde/core";
import { readFileSync } from "fs";
import { join } from "path";

Expand All @@ -28,24 +23,3 @@ export function macroNodeToDefinition<T>(
}
return macroDef;
}

export function processMacroNode(
namespace: string,
macro: MacroNode<any>,
instance: MacroNodeInstance
) {
const metaData = macro.definitionBuilder(instance.macroData);
const runFn = macro.runFnBuilder(instance.macroData);

const id = `${namespace}${macro.id}__${instance.id}`;

const resolvedNode: CodeNode = {
...metaData,
displayName: metaData.displayName ?? macro.id,
namespace: macro.namespace,
id,
run: runFn,
};

return resolvedNode;
}
Loading

0 comments on commit 27fa7f8

Please sign in to comment.