UNPKG

rn-pendo-sdk

Version:

Pendo Mobile React Native SDK

1 lines 4.91 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ReactNativeModalsDetector=exports.ReactNativeModalDetector=exports.ReactModalDetector=exports.ModalizeDetector=exports.ModalDetectionService=exports.GorhomBottomSheetDetector=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _pendoLogger=require("./pendoLogger");var _pendoTypes=require("./pendoTypes");var ReactNativeModalsDetector=exports.ReactNativeModalsDetector=function(){function ReactNativeModalsDetector(){(0,_classCallCheck2.default)(this,ReactNativeModalsDetector);}return(0,_createClass2.default)(ReactNativeModalsDetector,[{key:"detect",value:function detect(component){try{var name=component.displayName||component.name;if(name!=='Modal'&&name!=='BottomModal'){return false;}var propTypes=component.propTypes;if(!propTypes){return false;}return'onShow'in propTypes&&'onDismiss'in propTypes;}catch(error){_pendoLogger.Logger.debug('Error detecting ReactNativeModals',error);return false;}}},{key:"getModalType",value:function getModalType(){return _pendoTypes.ModalType.ReactNativeModals;}}]);}();var ReactNativeModalDetector=exports.ReactNativeModalDetector=function(){function ReactNativeModalDetector(){(0,_classCallCheck2.default)(this,ReactNativeModalDetector);}return(0,_createClass2.default)(ReactNativeModalDetector,[{key:"detect",value:function detect(component){try{var name=component.displayName||component.name;return name==='ReactNativeModal';}catch(error){_pendoLogger.Logger.debug('Error detecting ReactNativeModal',error);return false;}}},{key:"getModalType",value:function getModalType(){return _pendoTypes.ModalType.ReactNativeModal;}}]);}();var GorhomBottomSheetDetector=exports.GorhomBottomSheetDetector=function(){function GorhomBottomSheetDetector(){(0,_classCallCheck2.default)(this,GorhomBottomSheetDetector);}return(0,_createClass2.default)(GorhomBottomSheetDetector,[{key:"detect",value:function detect(component){try{var name=component.displayName||component.name;return name==='BottomSheetModal';}catch(error){_pendoLogger.Logger.debug('Error detecting BottomSheetModal',error);return false;}}},{key:"getModalType",value:function getModalType(){return _pendoTypes.ModalType.GorhomModal;}}]);}();var ModalizeDetector=exports.ModalizeDetector=function(){function ModalizeDetector(){(0,_classCallCheck2.default)(this,ModalizeDetector);}return(0,_createClass2.default)(ModalizeDetector,[{key:"detect",value:function detect(component){try{var name=component.displayName||component.name;if(name==='Modalize'){return true;}var renderMethod=component.render;if(renderMethod&&typeof renderMethod==='function'){var renderString=renderMethod.toString();return renderString.includes('ModalizeBase');}return false;}catch(error){_pendoLogger.Logger.debug('Error detecting Modalize',error);return false;}}},{key:"getModalType",value:function getModalType(){return _pendoTypes.ModalType.Modalize;}}]);}();var ReactModalDetector=exports.ReactModalDetector=function(){function ReactModalDetector(){(0,_classCallCheck2.default)(this,ReactModalDetector);}return(0,_createClass2.default)(ReactModalDetector,[{key:"detect",value:function detect(component){try{var name=component.displayName||component.name;if(name!=='Modal'){return false;}var defaultProps=component.defaultProps;if(defaultProps&&'visible'in defaultProps&&'hardwareAccelerated'in defaultProps){return true;}var propTypes=component.propTypes;return!propTypes;}catch(error){_pendoLogger.Logger.debug('Error detecting ReactModal',error);return false;}}},{key:"getModalType",value:function getModalType(){return _pendoTypes.ModalType.ReactModal;}}]);}();var ModalDetectionService=exports.ModalDetectionService=function(){function ModalDetectionService(){(0,_classCallCheck2.default)(this,ModalDetectionService);}return(0,_createClass2.default)(ModalDetectionService,null,[{key:"detectModalType",value:function detectModalType(component){if(component==null){return _pendoTypes.ModalType.None;}if(this.detectionCache.has(component)){return this.detectionCache.get(component);}var detectedType=_pendoTypes.ModalType.None;try{for(var detector of this.detectors){if(detector.detect(component)){detectedType=detector.getModalType();break;}}}catch(error){_pendoLogger.Logger.error('Error during modal detection',error);detectedType=_pendoTypes.ModalType.None;}this.detectionCache.set(component,detectedType);return detectedType;}},{key:"clearCache",value:function clearCache(){this.detectionCache=new WeakMap();}}]);}();ModalDetectionService.detectors=[new ReactNativeModalsDetector(),new ReactNativeModalDetector(),new GorhomBottomSheetDetector(),new ModalizeDetector(),new ReactModalDetector()];ModalDetectionService.detectionCache=new WeakMap();