{
  "version": 3,
  "sources": ["../../../../../src/functions/math/average/average-utils.ts"],
  "sourcesContent": [
    "import {\n  FormulaError,\n  type FunctionEvaluationResult,\n  type SingleEvaluationResult,\n} from \"../../../core/types.mjs\";\nimport type { EvaluationContext } from \"../../../evaluator/evaluation-context.mjs\";\n\n/**\n * Performs averaging of an iterable of SingleEvaluationResult values\n * Handles numbers, infinities, and errors according to Excel's AVERAGE behavior\n *\n * @param results - Iterable of SingleEvaluationResult to average\n * @returns FunctionEvaluationResult with the average or appropriate error\n */\nexport function performAverage(\n  results: SingleEvaluationResult[],\n  context: EvaluationContext\n): FunctionEvaluationResult {\n  let sum = 0;\n  let count = 0;\n\n  for (const result of results) {\n    if (result.type === \"error\") {\n      // Propagate errors immediately\n      return result;\n    }\n    if (result.type === \"awaiting-evaluation\") {\n      return result;\n    }\n\n    if (result.type === \"value\") {\n      if (result.result.type === \"number\") {\n        sum += result.result.value;\n        count++;\n      } else if (result.result.type === \"infinity\") {\n        // Infinity dominates - return immediately\n        return {\n          type: \"value\",\n          result: result.result,\n        };\n      }\n      // Non-numeric values (strings, booleans) are ignored\n    }\n  }\n\n  if (count === 0) {\n    return {\n      type: \"error\",\n      err: FormulaError.DIV0,\n      message: \"Cannot calculate average of empty range\",\n      errAddress: context.dependencyNode,\n    };\n  }\n\n  return {\n    type: \"value\",\n    result: { type: \"number\", value: sum / count },\n  };\n}\n"
  ],
  "mappings": ";AAAA;AAAA;AAAA;AAcO,SAAS,cAAc,CAC5B,SACA,SAC0B;AAAA,EAC1B,IAAI,MAAM;AAAA,EACV,IAAI,QAAQ;AAAA,EAEZ,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,SAAS;AAAA,MAE3B,OAAO;AAAA,IACT;AAAA,IACA,IAAI,OAAO,SAAS,uBAAuB;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,SAAS,SAAS;AAAA,MAC3B,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,QACnC,OAAO,OAAO,OAAO;AAAA,QACrB;AAAA,MACF,EAAO,SAAI,OAAO,OAAO,SAAS,YAAY;AAAA,QAE5C,OAAO;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,IAAI,UAAU,GAAG;AAAA,IACf,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,aAAa;AAAA,MAClB,SAAS;AAAA,MACT,YAAY,QAAQ;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,EAAE,MAAM,UAAU,OAAO,MAAM,MAAM;AAAA,EAC/C;AAAA;",
  "debugId": "3DDF686D3DA26D0C64756E2164756E21",
  "names": []
}