{
  "version": 3,
  "sources": ["../../../../../src/functions/math/min/min-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 min functions\n */\nexport type ProcessInfinityResult<T> =\n  | { type: \"infinity\"; infinity: CellInfinity }\n  | { type: \"state\"; state: T };\n\n/**\n * Perform minimum calculation over an iterator of SingleEvaluationResults\n * Handles the common logic shared by MIN, MINIF, MINIFS functions\n *\n * @param results - Iterator of SingleEvaluationResults to find minimum from\n * @returns FunctionEvaluationResult with the minimum, infinity, or error\n */\nexport function performMinimum(\n  results: Iterable<SingleEvaluationResult>,\n  context: EvaluationContext\n): FunctionEvaluationResult {\n  let minValue = Infinity;\n  let hasValues = false;\n\n  for (const result of results) {\n    if (result.type === \"error\") {\n      // Propagate errors immediately\n      return result;\n    }\n\n    if (result.type === \"value\") {\n      if (result.result.type === \"number\") {\n        minValue = Math.min(minValue, result.result.value);\n        hasValues = true;\n      } else if (result.result.type === \"infinity\") {\n        if (result.result.sign === \"negative\") {\n          // Negative infinity is always the minimum - return immediately\n          return {\n            type: \"value\",\n            result: result.result,\n          };\n        }\n        // Positive infinity doesn't change the minimum\n      }\n      // Non-numeric values (strings, booleans) are ignored in minimum calculation\n    }\n  }\n\n  if (!hasValues) {\n    return {\n      type: \"error\",\n      err: FormulaError.VALUE,\n      message: \"No numeric values found\",\n      errAddress: context.dependencyNode,\n    };\n  }\n\n  return {\n    type: \"value\",\n    result: { type: \"number\", value: minValue },\n  };\n}\n\n"
  ],
  "mappings": ";AAAA;AAAA;AAAA;AAwBO,SAAS,cAAc,CAC5B,SACA,SAC0B;AAAA,EAC1B,IAAI,WAAW;AAAA,EACf,IAAI,YAAY;AAAA,EAEhB,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,SAAS;AAAA,MAE3B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,SAAS,SAAS;AAAA,MAC3B,IAAI,OAAO,OAAO,SAAS,UAAU;AAAA,QACnC,WAAW,KAAK,IAAI,UAAU,OAAO,OAAO,KAAK;AAAA,QACjD,YAAY;AAAA,MACd,EAAO,SAAI,OAAO,OAAO,SAAS,YAAY;AAAA,QAC5C,IAAI,OAAO,OAAO,SAAS,YAAY;AAAA,UAErC,OAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,OAAO;AAAA,UACjB;AAAA,QACF;AAAA,MAEF;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,IAAI,CAAC,WAAW;AAAA,IACd,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,SAAS;AAAA,EAC5C;AAAA;",
  "debugId": "C84DD77BC71D89D464756E2164756E21",
  "names": []
}