{"version":3,"sources":["../src/ref.js"],"names":["isPrototypeOf","Object","prototype","isNewRef","prop","ownProperties","keys","length","isCallbackRef","call","Component","PureComponent","requiredRef","props","propName","componentName","propValue","TypeError","ref","rest","isRequired"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;IAEQA,a,GAAkBC,MAAM,CAACC,S,CAAzBF,a;;AAER,SAASG,QAAT,CAAkBC,IAAlB,EAAwB;AACtB,MAAI,CAAC,+BAAcA,IAAd,CAAL,EAA0B;AACxB,WAAO,KAAP;AACD;;AACD,MAAMC,aAAa,GAAGJ,MAAM,CAACK,IAAP,CAAYF,IAAZ,CAAtB;AACA,SAAOC,aAAa,CAACE,MAAd,KAAyB,CAAzB,IAA8BF,aAAa,CAAC,CAAD,CAAb,KAAqB,SAA1D;AACD;;AAED,SAASG,aAAT,CAAuBJ,IAAvB,EAA6B;AAC3B,SAAO,OAAOA,IAAP,KAAgB,UAAhB,IACF,CAACJ,aAAa,CAACS,IAAd,CAAmBC,gBAAnB,EAA8BN,IAA9B,CADC,KAED,CAACO,oBAAD,IAAkB,CAACX,aAAa,CAACS,IAAd,CAAmBE,oBAAnB,EAAkCP,IAAlC,CAFlB,CAAP;AAGD;;AAED,SAASQ,WAAT,CAAqBC,KAArB,EAA4BC,QAA5B,EAAsCC,aAAtC,EAAqD;AACnD,MAAMC,SAAS,GAAGH,KAAK,CAACC,QAAD,CAAvB;;AAEA,MAAIN,aAAa,CAACQ,SAAD,CAAb,IAA4Bb,QAAQ,CAACa,SAAD,CAAxC,EAAqD;AACnD,WAAO,IAAP;AACD;;AAED,SAAO,IAAIC,SAAJ,WAAiBH,QAAjB,iBAAgCC,aAAhC,oBAAP;AACD;;AAED,SAASG,GAAT,CAAaL,KAAb,EAAoBC,QAApB,EAA8BC,aAA9B,EAAsD;AACpD,MAAMC,SAAS,GAAGH,KAAK,CAACC,QAAD,CAAvB;;AAEA,MAAIE,SAAS,IAAI,IAAjB,EAAuB;AACrB,WAAO,IAAP;AACD;;AALmD,oCAANG,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAOpD,SAAOP,WAAW,MAAX,UAAYC,KAAZ,EAAmBC,QAAnB,EAA6BC,aAA7B,SAA+CI,IAA/C,EAAP;AACD;;AAEDD,GAAG,CAACE,UAAJ,GAAiBR,WAAjB;;eAEe;AAAA,SAAM,+BAAcM,GAAd,EAAmB,KAAnB,CAAN;AAAA,C","sourcesContent":["import { Component, PureComponent } from 'react';\nimport isPlainObject from './helpers/isPlainObject';\nimport wrapValidator from './helpers/wrapValidator';\n\nconst { isPrototypeOf } = Object.prototype;\n\nfunction isNewRef(prop) {\n if (!isPlainObject(prop)) {\n return false;\n }\n const ownProperties = Object.keys(prop);\n return ownProperties.length === 1 && ownProperties[0] === 'current';\n}\n\nfunction isCallbackRef(prop) {\n return typeof prop === 'function'\n && !isPrototypeOf.call(Component, prop)\n && (!PureComponent || !isPrototypeOf.call(PureComponent, prop));\n}\n\nfunction requiredRef(props, propName, componentName) {\n const propValue = props[propName];\n\n if (isCallbackRef(propValue) || isNewRef(propValue)) {\n return null;\n }\n\n return new TypeError(`${propName} in ${componentName} must be a ref`);\n}\n\nfunction ref(props, propName, componentName, ...rest) {\n const propValue = props[propName];\n\n if (propValue == null) {\n return null;\n }\n\n return requiredRef(props, propName, componentName, ...rest);\n}\n\nref.isRequired = requiredRef;\n\nexport default () => wrapValidator(ref, 'ref');\n"],"file":"ref.js"}