UNPKG

rn-pendo-sdk

Version:

Pendo Mobile React Native SDK

1 lines 6.97 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ResetPendoRNState=ResetPendoRNState;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 _get2=_interopRequireDefault(require("@babel/runtime/helpers/get"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _react=_interopRequireWildcard(require("react"));var _common=require("./common");var _debouncer=require("./debouncer");var _pendoBase=require("./pendoBase");var _pendoLogger=require("./pendoLogger");var _pendoTypes=require("./pendoTypes");var _excluded=["forwardedRef","children"],_excluded2=["forwardedRef","onStateChange","onReady","children"],_excluded3=["children","forwardedRef"];function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap(),n=new WeakMap();return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f);}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f;})(e,t);}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;})();}function _superPropGet(t,o,e,r){var p=(0,_get2.default)((0,_getPrototypeOf2.default)(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}var PendoRNInitialized=false;function WithPendoReactNavigation(WrappedComponent,options){if(PendoRNInitialized){_pendoLogger.Logger.error('WithPendoReactNavigation was called more than once. Please make sure you only call WithPendoReactNavigation once in the application lifecycle.');return WrappedComponent;}_pendoLogger.Logger.debug('WithPendoReactNavigation was called');var traversalOptionsObject=_common.Utils.mergeWithDefaultTraverseOptions(options);var PNDRNContainer=function(_BasePNDContainer){function PNDRNContainer(props){var _this;(0,_classCallCheck2.default)(this,PNDRNContainer);_this=_callSuper(this,PNDRNContainer,[props,_pendoTypes.IntegrationType.reactNavigation,traversalOptionsObject]);_this.isRNReady=false;return _this;}(0,_inherits2.default)(PNDRNContainer,_BasePNDContainer);return(0,_createClass2.default)(PNDRNContainer,[{key:"render",value:function render(){var _this2=this;try{return this._render();}catch(e){_pendoLogger.Logger.warn(`PNDContainer failed to render`,e);var _this$props=this.props,forwardedRef=_this$props.forwardedRef,children=_this$props.children,rest=(0,_objectWithoutProperties2.default)(_this$props,_excluded);return(0,_react.createElement)(WrappedComponent,Object.assign({},rest,{ref:forwardedRef||function(ref){try{_this2.setWrappedComponentRef(ref);}catch(refError){_pendoLogger.Logger.info('Error setting ref during error recovery',refError);}},children:children}));}}},{key:"_render",value:function _render(){var _this3=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){_this3.setWrappedComponentRef(_ref);},onStateChange:function(){var _onStateChange2=(0,_asyncToGenerator2.default)(function*(state){var _this3$pndState;if(((_this3$pndState=_this3.pndState)==null?void 0:_this3$pndState.current)!=null){var prevRouteName=_common.Utils.retroactiveScreenId(_this3.getCurrentState());var currRouteName=_common.Utils.retroactiveScreenId(state);if(prevRouteName.routeName===currRouteName.routeName){_pendoLogger.Logger.debug(`Screen not changed.`);}_this3.setCurrentState(state);_this3.executeAnalyzer(traversalOptionsObject.debouncerTime,_debouncer.RequestOrigin.Internal,_common.Consts.kOnStateChange);if(typeof _onStateChange==='function'){if(_this3.pndState.current.isReady==null||_this3.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 _this3$pndState2;_pendoLogger.Logger.debug('PNDContainer onReady');if(((_this3$pndState2=_this3.pndState)==null?void 0:_this3$pndState2.current)!=null){var state=_this3.pndState.current.getRootState();_this3.setCurrentState(state);_this3.isRNReady=true;_this3.executeAnalyzer(traversalOptionsObject.firstScreenDebouncerTime,_debouncer.RequestOrigin.Internal,_common.Consts.kOnReady);if(typeof _onReady==='function'){if(_this3.pndState.current.isReady==null||_this3.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(debouncerTime,requestOrigin,event){if(!this.isRNReady){return;}_superPropGet(PNDRNContainer,"executeAnalyzer",this,3)([debouncerTime,requestOrigin,event]);}}]);}(_pendoBase.BasePNDContainer);function useForwardRef(props,ref){var children=props.children,forwardedRef=props.forwardedRef,rest=(0,_objectWithoutProperties2.default)(props,_excluded3);return _react.default.createElement(PNDRNContainer,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));PendoRNInitialized=true;return forwardedComponent;}function ResetPendoRNState(){PendoRNInitialized=false;}