{"version":3,"sources":["../src/mutuallyExclusiveTrueProps.js"],"names":["mutuallyExclusiveTrue","exclusiveProps","length","TypeError","every","x","propsList","join","validator","mutuallyExclusiveTrueProps","props","propName","componentName","countProps","count","prop","exclusivePropCount","reduce","Error","rest","bool","isRequired","mutuallyExclusiveTruePropsRequired"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,qBAAT,GAAkD;AAAA,oCAAhBC,cAAgB;AAAhBA,IAAAA,cAAgB;AAAA;;AAC/D,MAAIA,cAAc,CAACC,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,UAAM,IAAIC,SAAJ,CAAc,0DAAd,CAAN;AACD;;AACD,MAAI,CAACF,cAAc,CAACG,KAAf,CAAqB,UAACC,CAAD;AAAA,WAAO,OAAOA,CAAP,KAAa,QAApB;AAAA,GAArB,CAAL,EAAyD;AACvD,UAAM,IAAIF,SAAJ,CAAc,0CAAd,CAAN;AACD;;AAED,MAAMG,SAAS,GAAGL,cAAc,CAACM,IAAf,CAAoB,OAApB,CAAlB;;AAEA,MAAMC,SAAS,GAAG,SAASC,0BAAT,CAAoCC,KAApC,EAA2CC,QAA3C,EAAqDC,aAArD,EAA6E;AAC7F,QAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAQC,IAAR;AAAA,aAAkBD,KAAK,IAAIJ,KAAK,CAACK,IAAD,CAAL,GAAc,CAAd,GAAkB,CAAtB,CAAvB;AAAA,KAAnB;;AAEA,QAAMC,kBAAkB,GAAGf,cAAc,CAACgB,MAAf,CAAsBJ,UAAtB,EAAkC,CAAlC,CAA3B;;AACA,QAAIG,kBAAkB,GAAG,CAAzB,EAA4B;AAC1B,aAAO,IAAIE,KAAJ,aAAeN,aAAf,wEAA0FN,SAA1F,EAAP;AACD;;AAN4F,uCAANa,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAO7F,WAAOC,+BAAKV,KAAL,EAAYC,QAAZ,EAAsBC,aAAtB,SAAwCO,IAAxC,EAAP;AACD,GARD;;AAUAX,EAAAA,SAAS,CAACa,UAAV,GAAuB,SAASC,kCAAT,CACrBZ,KADqB,EAErBC,QAFqB,EAGrBC,aAHqB,EAKrB;AACA,QAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAQC,IAAR;AAAA,aAAkBD,KAAK,IAAIJ,KAAK,CAACK,IAAD,CAAL,GAAc,CAAd,GAAkB,CAAtB,CAAvB;AAAA,KAAnB;;AAEA,QAAMC,kBAAkB,GAAGf,cAAc,CAACgB,MAAf,CAAsBJ,UAAtB,EAAkC,CAAlC,CAA3B;;AACA,QAAIG,kBAAkB,GAAG,CAAzB,EAA4B;AAC1B,aAAO,IAAIE,KAAJ,aAAeN,aAAf,wEAA0FN,SAA1F,EAAP;AACD;;AAND,uCADGa,IACH;AADGA,MAAAA,IACH;AAAA;;AAOA,WAAOC,gBAAKC,UAAL,yBAAgBX,KAAhB,EAAuBC,QAAvB,EAAiCC,aAAjC,SAAmDO,IAAnD,EAAP;AACD,GAbD;;AAeA,SAAO,+BAAcX,SAAd,wCAAwDF,SAAxD,GAAqEL,cAArE,CAAP;AACD","sourcesContent":["import { bool } from 'prop-types';\nimport wrapValidator from './helpers/wrapValidator';\n\nexport default function mutuallyExclusiveTrue(...exclusiveProps) {\n if (exclusiveProps.length < 1) {\n throw new TypeError('at least one prop that is mutually exclusive is required');\n }\n if (!exclusiveProps.every((x) => typeof x === 'string')) {\n throw new TypeError('all exclusive true props must be strings');\n }\n\n const propsList = exclusiveProps.join(', or ');\n\n const validator = function mutuallyExclusiveTrueProps(props, propName, componentName, ...rest) {\n const countProps = (count, prop) => (count + (props[prop] ? 1 : 0));\n\n const exclusivePropCount = exclusiveProps.reduce(countProps, 0);\n if (exclusivePropCount > 1) {\n return new Error(`A ${componentName} cannot have more than one of these boolean props be true: ${propsList}`);\n }\n return bool(props, propName, componentName, ...rest);\n };\n\n validator.isRequired = function mutuallyExclusiveTruePropsRequired(\n props,\n propName,\n componentName,\n ...rest\n ) {\n const countProps = (count, prop) => (count + (props[prop] ? 1 : 0));\n\n const exclusivePropCount = exclusiveProps.reduce(countProps, 0);\n if (exclusivePropCount > 1) {\n return new Error(`A ${componentName} cannot have more than one of these boolean props be true: ${propsList}`);\n }\n return bool.isRequired(props, propName, componentName, ...rest);\n };\n\n return wrapValidator(validator, `mutuallyExclusiveTrueProps: ${propsList}`, exclusiveProps);\n}\n"],"file":"mutuallyExclusiveTrueProps.js"}