feat: support array reference multi-select (#3041)
* feat: support array reference multi-select * fix build * fix * fix loop multi-select * adjust condition * fix get value * array and non-array conversion * fix plugin input * merge func
This commit is contained in:
@@ -235,25 +235,57 @@ export const getReferenceVariableValue = ({
|
||||
variables: Record<string, any>;
|
||||
}) => {
|
||||
const nodeIds = nodes.map((node) => node.nodeId);
|
||||
if (!isReferenceValue(value, nodeIds)) {
|
||||
return value;
|
||||
}
|
||||
const sourceNodeId = value[0];
|
||||
const outputId = value[1];
|
||||
|
||||
if (sourceNodeId === VARIABLE_NODE_ID && outputId) {
|
||||
return variables[outputId];
|
||||
// handle single reference value
|
||||
if (isReferenceValue(value, nodeIds)) {
|
||||
const sourceNodeId = value[0];
|
||||
const outputId = value[1];
|
||||
|
||||
if (sourceNodeId === VARIABLE_NODE_ID && outputId) {
|
||||
return variables[outputId];
|
||||
}
|
||||
|
||||
const node = nodes.find((node) => node.nodeId === sourceNodeId);
|
||||
if (!node) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return node.outputs.find((output) => output.id === outputId)?.value;
|
||||
}
|
||||
|
||||
const node = nodes.find((node) => node.nodeId === sourceNodeId);
|
||||
// handle reference array
|
||||
if (
|
||||
Array.isArray(value) &&
|
||||
value.every(
|
||||
(val) => val?.length === 2 && typeof val[0] === 'string' && typeof val[1] === 'string'
|
||||
)
|
||||
) {
|
||||
const result = value.map((val) => {
|
||||
if (!isReferenceValue(val, nodeIds)) {
|
||||
return [val];
|
||||
}
|
||||
|
||||
if (!node) {
|
||||
return undefined;
|
||||
const sourceNodeId = val?.[0];
|
||||
const outputId = val?.[1];
|
||||
|
||||
if (sourceNodeId === VARIABLE_NODE_ID && outputId) {
|
||||
const variableValue = variables[outputId];
|
||||
return Array.isArray(variableValue) ? variableValue : [variableValue];
|
||||
}
|
||||
|
||||
const node = nodes.find((node) => node.nodeId === sourceNodeId);
|
||||
if (!node) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const outputValue = node.outputs.find((output) => output.id === outputId)?.value;
|
||||
return Array.isArray(outputValue) ? outputValue : [outputValue];
|
||||
});
|
||||
|
||||
return result.flat();
|
||||
}
|
||||
|
||||
const outputValue = node.outputs.find((output) => output.id === outputId)?.value;
|
||||
|
||||
return outputValue;
|
||||
return value;
|
||||
};
|
||||
|
||||
export const textAdaptGptResponse = ({
|
||||
|
||||
Reference in New Issue
Block a user