{
  "version": 3,
  "sources": ["../../../../../src/functions/math/min/minifs.ts"],
  "sourcesContent": [
    "import {\n  type FunctionDefinition,\n  type FunctionEvaluationResult\n} from \"../../../core/types.cjs\";\nimport {\n  parseCriteriaPairs,\n  processMultiCriteriaValues,\n  validateMultiCriteriaArgs,\n} from \"../../criteria-utils.cjs\";\nimport { performMinimum } from \"./min-utils.cjs\";\n\n/**\n * MINIFS function - Returns the minimum value among cells specified by multiple criteria\n *\n * Usage: MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)\n *\n * min_range: The range of cells from which you want the minimum\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 *   MINIFS(B1:B10, A1:A10, \"Apple\") - min of B1:B10 where A1:A10 = \"Apple\"\n *   MINIFS(C1:C10, A1:A10, \"Apple\", B1:B10, \">10\") - min 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 minimum\n * - Returns error if no values match all criteria\n */\nexport const MINIFS: FunctionDefinition = {\n  name: \"MINIFS\",\n  evaluate: function (node, context): FunctionEvaluationResult {\n    // Validate arguments using utility\n    const argError = validateMultiCriteriaArgs(\"MINIFS\", node.args.length, context);\n    if (argError) {\n      return argError;\n    }\n\n    // Evaluate min range\n    const minRangeResult = this.evaluateNode(node.args[0]!, context);\n    if (minRangeResult.type === \"error\") {\n      return minRangeResult;\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 minimum utility for standard cases\n    const matchingValues = processMultiCriteriaValues(\n      this,\n      minRangeResult,\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 performMinimum(matchingValues.values, context);\n  },\n};\n"
  ],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,IAJP;AAK+B,IAA/B;AAqBO,IAAM,SAA6B;AAAA,EACxC,MAAM;AAAA,EACN,UAAU,QAAS,CAAC,MAAM,SAAmC;AAAA,IAE3D,MAAM,WAAW,gDAA0B,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,yCAAmB,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,iDACrB,MACA,gBACA,eACA,SACA,WACF;AAAA,IAEA,IAAI,eAAe,SAAS,WAAW,eAAe,SAAS,uBAAuB;AAAA,MACpF,OAAO;AAAA,IACT;AAAA,IAEA,OAAO,gCAAe,eAAe,QAAQ,OAAO;AAAA;AAExD;",
  "debugId": "DFDD5123A9D34DC964756E2164756E21",
  "names": []
}