{"version":3,"sources":["../src/mutuallyExclusiveProps.js"],"names":["mutuallyExclusiveOfType","propType","TypeError","exclusiveProps","length","propList","join","map","reduce","acc","prop","countProps","count","validator","mutuallyExclusiveProps","props","propName","componentName","exclusivePropCount","Object","keys","filter","Error","rest","isRequired","mutuallyExclusivePropsRequired"],"mappings":";;;;;;;AAAA;;;;;;;;;;AAEe,SAASA,uBAAT,CAAiCC,QAAjC,EAA8D;AAC3E,MAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClC,UAAM,IAAIC,SAAJ,CAAc,wBAAd,CAAN;AACD;;AAH0E,oCAAhBC,cAAgB;AAAhBA,IAAAA,cAAgB;AAAA;;AAK3E,MAAIA,cAAc,CAACC,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,UAAM,IAAIF,SAAJ,CAAc,6EAAd,CAAN;AACD;;AAED,MAAMG,QAAQ,GAAGF,cAAc,CAACG,IAAf,CAAoB,OAApB,CAAjB;AAEA,MAAMC,GAAG,GAAGJ,cAAc,CAACK,MAAf,CAAsB,UAACC,GAAD,EAAMC,IAAN;AAAA,2CAAqBD,GAArB,2BAA2BC,IAA3B,EAAkC,IAAlC;AAAA,GAAtB,EAAiE,EAAjE,CAAZ;;AACA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAQF,IAAR;AAAA,WAAkBE,KAAK,IAAIL,GAAG,CAACG,IAAD,CAAH,GAAY,CAAZ,GAAgB,CAApB,CAAvB;AAAA,GAAnB;;AAEA,MAAMG,SAAS,GAAG,SAASC,sBAAT,CAAgCC,KAAhC,EAAuCC,QAAvC,EAAiDC,aAAjD,EAAyE;AACzF,QAAMC,kBAAkB,GAAGC,MAAM,CAACC,IAAP,CAAYL,KAAZ,EACxBM,MADwB,CACjB,UAACX,IAAD;AAAA,aAAUK,KAAK,CAACL,IAAD,CAAL,IAAe,IAAzB;AAAA,KADiB,EAExBF,MAFwB,CAEjBG,UAFiB,EAEL,CAFK,CAA3B;;AAGA,QAAIO,kBAAkB,GAAG,CAAzB,EAA4B;AAC1B,aAAO,IAAII,KAAJ,aAAeL,aAAf,wDAA0EZ,QAA1E,EAAP;AACD;;AANwF,uCAANkB,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAOzF,WAAOtB,QAAQ,MAAR,UAASc,KAAT,EAAgBC,QAAhB,EAA0BC,aAA1B,SAA4CM,IAA5C,EAAP;AACD,GARD;;AAUAV,EAAAA,SAAS,CAACW,UAAV,GAAuB,SAASC,8BAAT,CACrBV,KADqB,EAErBC,QAFqB,EAGrBC,aAHqB,EAKrB;AACA,QAAMC,kBAAkB,GAAGC,MAAM,CAACC,IAAP,CAAYL,KAAZ,EACxBM,MADwB,CACjB,UAACX,IAAD;AAAA,aAAUA,IAAI,KAAKM,QAAT,IAAqBD,KAAK,CAACL,IAAD,CAAL,IAAe,IAA9C;AAAA,KADiB,EAExBF,MAFwB,CAEjBG,UAFiB,EAEL,CAFK,CAA3B;;AAGA,QAAIO,kBAAkB,GAAG,CAAzB,EAA4B;AAC1B,aAAO,IAAII,KAAJ,aAAeL,aAAf,wDAA0EZ,QAA1E,EAAP;AACD;;AAND,uCADGkB,IACH;AADGA,MAAAA,IACH;AAAA;;AAOA,WAAOtB,QAAQ,MAAR,UAASc,KAAT,EAAgBC,QAAhB,EAA0BC,aAA1B,SAA4CM,IAA5C,EAAP;AACD,GAbD;;AAeA,SAAO,+BAAcV,SAAd,mCAAmDR,QAAnD,GAA+DF,cAA/D,CAAP;AACD","sourcesContent":["import wrapValidator from './helpers/wrapValidator';\n\nexport default function mutuallyExclusiveOfType(propType, ...exclusiveProps) {\n if (typeof propType !== 'function') {\n throw new TypeError('a propType is required');\n }\n\n if (exclusiveProps.length < 1) {\n throw new TypeError('at least one prop that is mutually exclusive with this propType is required');\n }\n\n const propList = exclusiveProps.join(', or ');\n\n const map = exclusiveProps.reduce((acc, prop) => ({ ...acc, [prop]: true }), {});\n const countProps = (count, prop) => (count + (map[prop] ? 1 : 0));\n\n const validator = function mutuallyExclusiveProps(props, propName, componentName, ...rest) {\n const exclusivePropCount = Object.keys(props)\n .filter((prop) => props[prop] != null)\n .reduce(countProps, 0);\n if (exclusivePropCount > 1) {\n return new Error(`A ${componentName} cannot have more than one of these props: ${propList}`);\n }\n return propType(props, propName, componentName, ...rest);\n };\n\n validator.isRequired = function mutuallyExclusivePropsRequired(\n props,\n propName,\n componentName,\n ...rest\n ) {\n const exclusivePropCount = Object.keys(props)\n .filter((prop) => prop === propName || props[prop] != null)\n .reduce(countProps, 0);\n if (exclusivePropCount > 1) {\n return new Error(`A ${componentName} cannot have more than one of these props: ${propList}`);\n }\n return propType(props, propName, componentName, ...rest);\n };\n\n return wrapValidator(validator, `mutuallyExclusiveProps:${propList}`, exclusiveProps);\n}\n"],"file":"mutuallyExclusiveProps.js"}