{
  "version": 3,
  "sources": ["../../../../../src/functions/math/sum/summation-utils.ts"],
  "sourcesContent": [
    "import {\n  FormulaError,\n  type FunctionEvaluationResult,\n  type SingleEvaluationResult,\n  type CellInfinity,\n} from \"../../../core/types.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\nimport type { FormulaEvaluator } from \"../../../evaluator/formula-evaluator.mjs\";\nimport type { FunctionNode } from \"../../../parser/ast.mjs\";\n\n/**\n * Result type for processInfinity in sum functions\n */\nexport type ProcessInfinityResult<T> =\n  | { type: \"infinity\"; infinity: CellInfinity }\n  | { type: \"state\"; state: T };\n\n/**\n * Perform summation with error propagation\n * Used when errors should be propagated instead of skipped (e.g., SUM with direct error arguments)\n *\n * @param results - Iterator of SingleEvaluationResults to sum\n * @returns FunctionEvaluationResult with the sum, infinity, or first error encountered\n */\nexport function performSummation(\n  results: Iterable<SingleEvaluationResult>\n): FunctionEvaluationResult {\n  let sum = 0;\n  let hasValues = false;\n\n  for (const result of results) {\n    if (result.type === \"value\") {\n      if (result.result.type === \"number\") {\n        sum += result.result.value;\n        hasValues = true;\n      } else if (result.result.type === \"infinity\") {\n        // Infinity dominates - return immediately\n        return {\n          type: \"value\",\n          result: result.result,\n        };\n      } else {\n        // Non-numeric values (strings, booleans) are ignored in summation\n      }\n    }\n  }\n\n  return {\n    type: \"value\",\n    result: { type: \"number\", value: sum },\n  };\n}\n"
  ],
  "mappings": ";AAwBO,SAAS,gBAAgB,CAC9B,SAC0B;AAAA,EAC1B,IAAI,MAAM;AAAA,EACV,IAAI,YAAY;AAAA,EAEhB,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,SAAS;AAAA,MAC3B,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,QACnC,OAAO,OAAO,OAAO;AAAA,QACrB,YAAY;AAAA,MACd,EAAO,SAAI,OAAO,OAAO,SAAS,YAAY;AAAA,QAE5C,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AAAA,IAGF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,OAAO,IAAI;AAAA,EACvC;AAAA;",
  "debugId": "ADE258FF8B38349B64756E2164756E21",
  "names": []
}