UNPKG

rn-pendo-sdk

Version:

Pendo Mobile React Native SDK

1 lines 6.92 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WithPendoReactNavigation=WithPendoReactNavigation;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _common=require("./common");var _debouncer=require("./debouncer");var _pendoBase=require("./pendoBase");var _pendoLogger=require("./pendoLogger");var _pendoTypes=require("./pendoTypes");var _excluded=["children"],_excluded2=["forwardedRef","onStateChange","onReady","children"],_excluded3=["children","forwardedRef"];function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2.default)(o),(0,_possibleConstructorReturn2.default)(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2.default)(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}var ReactNativePendo=_reactNative.NativeModules.ReactNativePendo;var PendoInitialized=false;function WithPendoReactNavigation(WrappedComponent,options){if(PendoInitialized){_pendoLogger.Logger.error('WithPendoReactNavigation was called more than once. Please make sure you only call WithPendoReactNavigation once in the application lifecycle.');}else{_pendoLogger.Logger.debug('WithPendoReactNavigation was called');}var traversalOptionsObject=_common.Utils.mergeWithDefaultTraverseOptions(options);var PNDContainer=function(_BasePNDContainer){function PNDContainer(props){(0,_classCallCheck2.default)(this,PNDContainer);return _callSuper(this,PNDContainer,[props,_pendoTypes.IntegrationType.reactNavigation,traversalOptionsObject]);}(0,_inherits2.default)(PNDContainer,_BasePNDContainer);return(0,_createClass2.default)(PNDContainer,[{key:"render",value:function render(){try{return this._render();}catch(e){_pendoLogger.Logger.warn(`PNDContainer failed to render`,e);var _this$props=this.props,children=_this$props.children,rest=(0,_objectWithoutProperties2.default)(_this$props,_excluded);return(0,_react.createElement)(WrappedComponent,Object.assign({},rest,{children:children}));}}},{key:"_render",value:function _render(){var _this=this;var _this$props2=this.props,forwardedRef=_this$props2.forwardedRef,_onStateChange=_this$props2.onStateChange,_onReady=_this$props2.onReady,children=_this$props2.children,rest=(0,_objectWithoutProperties2.default)(_this$props2,_excluded2);return(0,_react.createElement)(WrappedComponent,Object.assign({ref:function ref(_ref){_this.setWrappedComponentRef(_ref);},onStateChange:function(){var _onStateChange2=(0,_asyncToGenerator2.default)(function*(state){var _this$pndState;if(_common.Utils.hasPendoNativeModule(false)){ReactNativePendo.shouldScanForDynamicElements(false);}if(((_this$pndState=_this.pndState)==null?void 0:_this$pndState.current)!=null){var prevRouteName=_common.Utils.retroactiveScreenId(_this.getCurrentState());var currRouteName=_common.Utils.retroactiveScreenId(state);if(prevRouteName.routeName===currRouteName.routeName){_pendoLogger.Logger.debug(`Screen not changed.`);}_this.setCurrentState(state);_this.debouncer.debounce(_this.executeAnalyzer.bind(_this),traversalOptionsObject.debouncerTime,_debouncer.RequestOrigin.Internal)();if(typeof _onStateChange==='function'){if(_this.pndState.current.isReady==null||_this.pndState.current.isReady()){_pendoLogger.Logger.debug('propagating onStateChange');_onStateChange(state);}else{_pendoLogger.Logger.debug('NavigationContainer not ready. Ignoring onStateChange.');}}}});function onStateChange(_x){return _onStateChange2.apply(this,arguments);}return onStateChange;}(),onReady:function onReady(){var _this$pndState2;_pendoLogger.Logger.debug('PNDContainer onReady');if(((_this$pndState2=_this.pndState)==null?void 0:_this$pndState2.current)!=null){var state=_this.pndState.current.getRootState();_this.setCurrentState(state);_this.debouncer.debounce(_this.executeAnalyzer.bind(_this),traversalOptionsObject.firstScreenDebouncerTime,_debouncer.RequestOrigin.Internal)();if(typeof _onReady==='function'){if(_this.pndState.current.isReady==null||_this.pndState.current.isReady()){_pendoLogger.Logger.debug('propagating onReady');_onReady();}else{_pendoLogger.Logger.debug('NavigationContainer not ready. Ignoring onReady.');}}}}},rest,{children:children}));}},{key:"executeAnalyzer",value:function executeAnalyzer(event){var _this$pndState3;if(!_common.Utils.hasPendoNativeModule(false)){return;}var state=this.getCurrentState();if(state==null&&((_this$pndState3=this.pndState)==null?void 0:_this$pndState3.current)!=null){state=this.pndState.current.getRootState();}if(event===_common.Consts.kOnModalStateVisible||event===_common.Consts.kOnModalStateHidden){_pendoLogger.Logger.debug(`onModalStateChange ${event} event`);}this.analyze(this,state,event);}}]);}(_pendoBase.BasePNDContainer);function useForwardRef(props,ref){var children=props.children,forwardedRef=props.forwardedRef,rest=(0,_objectWithoutProperties2.default)(props,_excluded3);return _react.default.createElement(PNDContainer,Object.assign({},rest,{forwardedRef:forwardedRef||ref}),children);}var name=(WrappedComponent==null?void 0:WrappedComponent.displayName)||WrappedComponent.name||`Component`;useForwardRef.displayName=`PNDContainer(${name})`;var forwardedComponent=(0,_react.forwardRef)(_common.Utils.handleError.bind(_common.Utils,useForwardRef));PendoInitialized=true;return forwardedComponent;}