UNPKG

@botonic/plugin-flow-builder

Version:

Botonic plugin for **Hubtype Flow Builder**: run and bridge flow-driven logic from bots on the **current** line.

53 lines 1.96 kB
import { NumberConditionOperator, VariableFormat, } from '../hubtype-fields'; export function getConditionCustomResult(condition, variableFormat) { switch (variableFormat) { case VariableFormat.String: return String(condition.value); case VariableFormat.Number: return getNumberConditionCustomResult(condition); case VariableFormat.Boolean: // Only reached after evaluateBooleanCondition succeeds; today that is isTruthy → 'true' return 'true'; default: throw new Error(`Invalid variable format ${variableFormat}`); } } function getNumberConditionCustomResult(condition) { const numberCondition = condition; if (numberCondition.operator === NumberConditionOperator.Between || numberCondition.operator === NumberConditionOperator.NotBetween) { return `min: ${numberCondition.min} - max: ${numberCondition.max}`; } return String(numberCondition.value); } export function findLastMatchingCondition(conditions, variable, variableFormat, evaluate) { let lastMatch; for (const condition of conditions) { if (!evaluate(variable, condition)) { continue; } if (!condition.target) { continue; } lastMatch = { customResult: getConditionCustomResult(condition, variableFormat), target: condition.target, operator: condition.operator, }; } return lastMatch; } export function resolveWithDefaultTarget(match, defaultTarget, nodeCode, defaultCustomResult = 'default') { if (match) { return match; } if (!defaultTarget) { throw new Error(`Default target not found for custom condition node ${nodeCode}`); } return { customResult: defaultCustomResult, target: defaultTarget, operator: '', }; } //# sourceMappingURL=custom-conditional-v2-resolver.js.map