{"version":3,"sources":["../src/uniqueArrayOf.js"],"names":["unique","uniqueArrayOfTypeValidator","type","TypeError","mapper","name","rest","length","uniqueArrayOfMapped","props","propName","propValue","values","map","args","isRequired","array","arrayValidator","uniqueValidator","validator"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,MAAM,GAAG,8BAAf;;AAEe,SAASC,0BAAT,CAAoCC,IAApC,EAAmD;AAChE,MAAI,OAAOA,IAAP,KAAgB,UAApB,EAAgC;AAC9B,UAAM,IAAIC,SAAJ,CAAc,mCAAd,CAAN;AACD;;AAED,MAAIC,MAAM,GAAG,IAAb;AACA,MAAIC,IAAI,GAAG,mBAAX;;AANgE,oCAANC,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAQhE,MAAIA,IAAI,CAACC,MAAL,KAAgB,CAApB,EAAuB;AACrB,QAAI,OAAOD,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;AAC/BF,MAAAA,MAD+B,GACrBE,IADqB;AAElC,KAFD,MAEO,IAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;AACpCD,MAAAA,IADoC,GAC5BC,IAD4B;AAEvC,KAFM,MAEA;AACL,YAAM,IAAIH,SAAJ,CAAc,gDAAd,CAAN;AACD;AACF,GARD,MAQO,IAAIG,IAAI,CAACC,MAAL,KAAgB,CAApB,EAAuB;AAC5B,QAAI,OAAOD,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAnB,IAAiC,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAxD,EAAkE;AAC9DF,MAAAA,MAD8D,GAC9CE,IAD8C;AACtDD,MAAAA,IADsD,GAC9CC,IAD8C;AAEjE,KAFD,MAEO;AACL,YAAM,IAAIH,SAAJ,CAAc,qDAAd,CAAN;AACD;AACF,GANM,MAMA,IAAIG,IAAI,CAACC,MAAL,GAAc,CAAlB,EAAqB;AAC1B,UAAM,IAAIJ,SAAJ,CAAc,gEAAd,CAAN;AACD;;AAED,WAASK,mBAAT,CAA6BC,KAA7B,EAAoCC,QAApC,EAAuD;AAAA,QACjCC,SADiC,GACnBF,KADmB,CAC5CC,QAD4C;;AAErD,QAAIC,SAAS,IAAI,IAAjB,EAAuB;AACrB,aAAO,IAAP;AACD;;AAED,QAAMC,MAAM,GAAGD,SAAS,CAACE,GAAV,CAAcT,MAAd,CAAf;;AANqD,uCAANU,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAOrD,WAAOd,MAAM,MAAN,0CAAYS,KAAZ,2BAAoBC,QAApB,EAA+BE,MAA/B,IAAyCF,QAAzC,SAAsDI,IAAtD,EAAP;AACD;;AAEDN,EAAAA,mBAAmB,CAACO,UAApB,GAAiC,SAASA,UAAT,CAAoBN,KAApB,EAA2BC,QAA3B,EAA8C;AAAA,QACzDC,SADyD,GAC3CF,KAD2C,CACpEC,QADoE;;AAAA,uCAANI,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAE7E,QAAIH,SAAS,IAAI,IAAjB,EAAuB;AACrB,aAAOK,iBAAMD,UAAN,0BAAiBN,KAAjB,EAAwBC,QAAxB,SAAqCI,IAArC,EAAP;AACD;;AACD,WAAON,mBAAmB,MAAnB,UAAoBC,KAApB,EAA2BC,QAA3B,SAAwCI,IAAxC,EAAP;AACD,GAND;;AAQA,MAAMG,cAAc,GAAG,wBAAQf,IAAR,CAAvB;AAEA,MAAMgB,eAAe,GAAGd,MAAM,GAAGI,mBAAH,GAAyBR,MAAvD;AAEA,MAAMmB,SAAS,GAAG,qBAAI,CAACF,cAAD,EAAiBC,eAAjB,CAAJ,EAAuCb,IAAvC,CAAlB;AACAc,EAAAA,SAAS,CAACJ,UAAV,GAAuB,qBAAI,CACzBG,eAAe,CAACH,UADS,EAEzBE,cAAc,CAACF,UAFU,CAAJ,YAGjBV,IAHiB,iBAAvB;AAKA,SAAOc,SAAP;AACD","sourcesContent":["import { arrayOf, array } from 'prop-types';\nimport and from './and';\nimport uniqueArray from './uniqueArray';\n\nconst unique = uniqueArray();\n\nexport default function uniqueArrayOfTypeValidator(type, ...rest) {\n if (typeof type !== 'function') {\n throw new TypeError('type must be a validator function');\n }\n\n let mapper = null;\n let name = 'uniqueArrayOfType';\n\n if (rest.length === 1) {\n if (typeof rest[0] === 'function') {\n ([mapper] = rest);\n } else if (typeof rest[0] === 'string') {\n ([name] = rest);\n } else {\n throw new TypeError('single input must either be string or function');\n }\n } else if (rest.length === 2) {\n if (typeof rest[0] === 'function' && typeof rest[1] === 'string') {\n ([mapper, name] = rest);\n } else {\n throw new TypeError('multiple inputs must be in [function, string] order');\n }\n } else if (rest.length > 2) {\n throw new TypeError('only [], [name], [mapper], and [mapper, name] are valid inputs');\n }\n\n function uniqueArrayOfMapped(props, propName, ...args) {\n const { [propName]: propValue } = props;\n if (propValue == null) {\n return null;\n }\n\n const values = propValue.map(mapper);\n return unique({ ...props, [propName]: values }, propName, ...args);\n }\n\n uniqueArrayOfMapped.isRequired = function isRequired(props, propName, ...args) {\n const { [propName]: propValue } = props;\n if (propValue == null) {\n return array.isRequired(props, propName, ...args);\n }\n return uniqueArrayOfMapped(props, propName, ...args);\n };\n\n const arrayValidator = arrayOf(type);\n\n const uniqueValidator = mapper ? uniqueArrayOfMapped : unique;\n\n const validator = and([arrayValidator, uniqueValidator], name);\n validator.isRequired = and([\n uniqueValidator.isRequired,\n arrayValidator.isRequired,\n ], `${name}.isRequired`);\n\n return validator;\n}\n"],"file":"uniqueArrayOf.js"}