Skip to content

Commit 52ffd34

Browse files
committed
fix(ui): deduplicate palette — platform defs take precedence over evaluator
Filters out @fbp/evaluator definitions when a platform function with the same name exists (e.g. const/number, json/select, flow/guard). Platform defs carry runtime metadata (inline/http) that evaluator defs lack, so they must win.
1 parent 493a7c8 commit 52ffd34

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

www/src/components/FlowsPanel.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -656,13 +656,19 @@ export function FlowsPanel() {
656656
}
657657
}, [stores, handleLoadStore]);
658658

659-
const definitions: NodeDefinition[] = useMemo(() => [
660-
...functions.map(platformFnToDefinition),
661-
...mathDefinitions.map(({ impl, ...rest }) => rest as NodeDefinition),
662-
...coreDefinitions.map(({ impl, ...rest }) => rest as NodeDefinition),
663-
...uiDefinitions.map(({ impl, ...rest }) => rest as NodeDefinition),
664-
...netDefinitions.map(({ impl, ...rest }) => rest as NodeDefinition),
665-
], [functions]);
659+
const definitions: NodeDefinition[] = useMemo(() => {
660+
const platformDefs = functions.map(platformFnToDefinition);
661+
const platformNames = new Set(platformDefs.map(d => d.name));
662+
const evaluatorDefs = [
663+
...mathDefinitions,
664+
...coreDefinitions,
665+
...uiDefinitions,
666+
...netDefinitions,
667+
]
668+
.filter(d => !platformNames.has(d.name))
669+
.map(({ impl, ...rest }) => rest as NodeDefinition);
670+
return [...platformDefs, ...evaluatorDefs];
671+
}, [functions]);
666672

667673
const implDefinitions: NodeDefinitionWithImpl[] = useMemo(() => [
668674
...mathDefinitions,

0 commit comments

Comments
 (0)