{
  "version": 3,
  "sources": ["../../../src/functions/function-utils.ts"],
  "sourcesContent": [
    "import type { LookupOrder } from \"../core/managers/range-eval-order-builder.mjs\";\nimport {\n  type ErrorEvaluationResult,\n  type SingleEvaluationResult,\n} from \"../core/types.mjs\";\nimport { getCellReference } from \"../core/utils.mjs\";\nimport type { EvaluationContext } from \"../evaluator/evaluation-context.mjs\";\nimport { AwaitingEvaluationError } from \"../evaluator/evaluation-error.mjs\";\nimport type { FormulaEvaluator } from \"../evaluator/formula-evaluator.mjs\";\nimport type { FunctionNode } from \"../parser/ast.mjs\";\n\n/**\n * Creates an array of all values from arguments of a function node\n * Returns SingleEvaluationResult for each value found in the arguments\n *\n * This is a shared utility used by all basic aggregation functions (SUM, MIN, MAX, AVERAGE)\n * to iterate over their arguments in a consistent way.\n *\n * @param evaluator - The formula evaluator instance\n * @param node - The function node containing arguments\n * @param context - The evaluation context\n * @returns Array of SingleEvaluationResult for each value in the arguments\n */\nexport function createArgumentIterator(\n  evaluator: FormulaEvaluator,\n  node: FunctionNode,\n  context: EvaluationContext,\n  lookupOrder: LookupOrder\n): { type: \"values\"; values: SingleEvaluationResult[] } | ErrorEvaluationResult {\n  const results: SingleEvaluationResult[] = [];\n\n  for (const arg of node.args) {\n    const result = evaluator.evaluateNode(arg, context);\n\n    if (result.type === \"spilled-values\") {\n      // Get all cells in the spilled range\n      const cellValues = result.evaluateAllCells.call(evaluator, {\n        context,\n        evaluate: result.evaluate,\n        origin: context.cellAddress,\n        lookupOrder,\n      });\n\n      if (cellValues.type === \"awaiting-evaluation\") {\n        return cellValues;\n      }\n\n      if (cellValues.type === \"error\") {\n        results.push(cellValues);\n      } else {\n        for (const cellValue of cellValues.values) {\n          results.push(cellValue.result);\n        }\n      }\n    } else {\n      results.push(result);\n    }\n  }\n\n  return { type: \"values\", values: results };\n}\n"
  ],
  "mappings": ";AAuBO,SAAS,sBAAsB,CACpC,WACA,MACA,SACA,aAC8E;AAAA,EAC9E,MAAM,UAAoC,CAAC;AAAA,EAE3C,WAAW,OAAO,KAAK,MAAM;AAAA,IAC3B,MAAM,SAAS,UAAU,aAAa,KAAK,OAAO;AAAA,IAElD,IAAI,OAAO,SAAS,kBAAkB;AAAA,MAEpC,MAAM,aAAa,OAAO,iBAAiB,KAAK,WAAW;AAAA,QACzD;AAAA,QACA,UAAU,OAAO;AAAA,QACjB,QAAQ,QAAQ;AAAA,QAChB;AAAA,MACF,CAAC;AAAA,MAED,IAAI,WAAW,SAAS,uBAAuB;AAAA,QAC7C,OAAO;AAAA,MACT;AAAA,MAEA,IAAI,WAAW,SAAS,SAAS;AAAA,QAC/B,QAAQ,KAAK,UAAU;AAAA,MACzB,EAAO;AAAA,QACL,WAAW,aAAa,WAAW,QAAQ;AAAA,UACzC,QAAQ,KAAK,UAAU,MAAM;AAAA,QAC/B;AAAA;AAAA,IAEJ,EAAO;AAAA,MACL,QAAQ,KAAK,MAAM;AAAA;AAAA,EAEvB;AAAA,EAEA,OAAO,EAAE,MAAM,UAAU,QAAQ,QAAQ;AAAA;",
  "debugId": "BD7E76C3AD8C1EAE64756E2164756E21",
  "names": []
}