{
  "version": 3,
  "sources": ["../../../../../src/functions/math/max/maxifs.ts"],
  "sourcesContent": [
    "import {\n  type FunctionDefinition,\n  type FunctionEvaluationResult\n} from \"../../../core/types.mjs\";\nimport {\n  parseCriteriaPairs,\n  processMultiCriteriaValues,\n  validateMultiCriteriaArgs,\n} from \"../../criteria-utils.mjs\";\nimport { performMaximum } from \"./max-utils.mjs\";\n\n/**\n * MAXIFS function - Returns the maximum value among cells specified by multiple criteria\n *\n * Usage: MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)\n *\n * max_range: The range of cells from which you want the maximum\n * criteria_range1: The first range in which to evaluate criteria\n * criteria1: The criteria to apply to criteria_range1\n * criteria_range2, criteria2: Optional additional criteria pairs\n *\n * Examples:\n *   MAXIFS(B1:B10, A1:A10, \"Apple\") - max of B1:B10 where A1:A10 = \"Apple\"\n *   MAXIFS(C1:C10, A1:A10, \"Apple\", B1:B10, \">10\") - max of C1:C10 where A1:A10 = \"Apple\" AND B1:B10 > 10\n *\n * Note:\n * - All criteria must be satisfied for a value to be included\n * - Only numeric values are considered for the maximum\n * - Returns error if no values match all criteria\n */\nexport const MAXIFS: FunctionDefinition = {\n  name: \"MAXIFS\",\n  evaluate: function (node, context): FunctionEvaluationResult {\n    // Validate arguments using utility\n    const argError = validateMultiCriteriaArgs(\"MAXIFS\", node.args.length, context);\n    if (argError) {\n      return argError;\n    }\n\n    // Evaluate max range\n    const maxRangeResult = this.evaluateNode(node.args[0]!, context);\n    if (maxRangeResult.type === \"error\") {\n      return maxRangeResult;\n    }\n\n    // Parse criteria pairs using utility\n    const criteriaPairsResult = parseCriteriaPairs.call(\n      this,\n      node,\n      context,\n      this.evaluateNode,\n      1\n    );\n    if (\"type\" in criteriaPairsResult) {\n      return criteriaPairsResult;\n    }\n    const criteriaPairs = criteriaPairsResult;\n\n    // Use shared maximum utility for standard cases\n    const matchingValues = processMultiCriteriaValues(\n      this,\n      maxRangeResult,\n      criteriaPairs,\n      context,\n      \"col-major\"\n    );\n\n    if (matchingValues.type === \"error\" || matchingValues.type === \"awaiting-evaluation\") {\n      return matchingValues;\n    }\n\n    return performMaximum(matchingValues.values, context);\n  },\n};\n"
  ],
  "mappings": ";AAIA;AAAA;AAAA;AAAA;AAAA;AAKA;AAqBO,IAAM,SAA6B;AAAA,EACxC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAE3D,MAAM,WAAW,0BAA0B,UAAU,KAAK,KAAK,QAAQ,OAAO;AAAA,IAC9E,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,iBAAiB,KAAK,aAAa,KAAK,KAAK,IAAK,OAAO;AAAA,IAC/D,IAAI,eAAe,SAAS,SAAS;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,sBAAsB,mBAAmB,KAC7C,MACA,MACA,SACA,KAAK,cACL,CACF;AAAA,IACA,IAAI,UAAU,qBAAqB;AAAA,MACjC,OAAO;AAAA,IACT;AAAA,IACA,MAAM,gBAAgB;AAAA,IAGtB,MAAM,iBAAiB,2BACrB,MACA,gBACA,eACA,SACA,WACF;AAAA,IAEA,IAAI,eAAe,SAAS,WAAW,eAAe,SAAS,uBAAuB;AAAA,MACpF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,eAAe,eAAe,QAAQ,OAAO;AAAA;AAExD;",
  "debugId": "77A345BBA074DE7F64756E2164756E21",
  "names": []
}