UNPKG

rn-pendo-sdk

Version:

Pendo Mobile React Native SDK

1 lines 7.18 kB
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.WithPendoModal=WithPendoModal;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 _fiberTypes=require("./fiber-types");var _pendoLogger=require("./pendoLogger");var _pendoTypes=require("./pendoTypes");var _excluded=["visible","children"],_excluded2=["onChange","children"],_excluded3=["children"],_excluded4=["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;function WithPendoModal(WrappedComponent){var PNDModalContainer=function(_Component){function PNDModalContainer(props){var _this;(0,_classCallCheck2.default)(this,PNDModalContainer);_this=_callSuper(this,PNDModalContainer,[props]);_this.modalType=_pendoTypes.ModalType.None;_this.modalPreviousVisibility=false;_this.pndState=(0,_react.createRef)();_this.configureModalType();return _this;}(0,_inherits2.default)(PNDModalContainer,_Component);return(0,_createClass2.default)(PNDModalContainer,[{key:"configureModalType",value:function configureModalType(){if(WrappedComponent.name==='Modal'){this.modalType=_pendoTypes.ModalType.ReactModal;}else if(WrappedComponent.displayName==='BottomSheetModal'){this.modalType=_pendoTypes.ModalType.GorhomModal;this.setWrappedComponentRef=this.setWrappedComponentRef.bind(this);this.state={isVisible:false};}}},{key:"setWrappedComponentRef",value:function setWrappedComponentRef(ref){var _this$props;if(this.pndState==null){this.pndState=(0,_react.createRef)();}if(ref!=null){this.pndState.current=ref;if(this.modalType===_pendoTypes.ModalType.GorhomModal){this.pndState.current.isVisible=this.state.isVisible;}}if((_this$props=this.props)!=null&&_this$props.forwardedRef){if(typeof this.props.forwardedRef==='function'){this.props.forwardedRef(ref);}else{this.props.forwardedRef.current=ref;}}}},{key:"setModalVisibility",value:function setModalVisibility(visible){if(visible==null){return;}if(visible!==this.modalPreviousVisibility){_pendoLogger.Logger.debug(`Pendo ReactModal - setting visibility to ${visible}`);this.modalPreviousVisibility=visible;if(_common.Utils.hasPendoNativeModule(false)){ReactNativePendo.modalStateChanged(visible);}}}},{key:"setGorhomVisibility",value:function setGorhomVisibility(visible){if(visible===this.state.isVisible){_pendoLogger.Logger.debug(`Pendo ${_fiberTypes.TagFinder.getModalTypeName(this.modalType)} Modal - visibility is already ${visible}`);return;}this.pndState.current.isVisible=visible;_pendoLogger.Logger.debug(`Pendo GorhomModal - setting visibility to ${visible}`);if(_common.Utils.hasPendoNativeModule(false)){ReactNativePendo.modalStateChanged(visible);}}},{key:"componentDidUpdate",value:function componentDidUpdate(_prevProps,_prevState,_snapshot){if(this.modalType===_pendoTypes.ModalType.ReactModal){var visible=this.props.visible;this.setModalVisibility(visible);}}},{key:"componentWillUnmount",value:function componentWillUnmount(){if(this.modalType===_pendoTypes.ModalType.ReactModal){this.setModalVisibility(false);}}},{key:"render",value:function render(){try{if(this.modalType===_pendoTypes.ModalType.ReactModal){return this._renderReactModal();}else if(this.modalType===_pendoTypes.ModalType.GorhomModal){return this._renderGorhomModal();}else{return this._renderUnsupportedComponent();}}catch(e){_pendoLogger.Logger.warn(`PNDContainer failed to render`,e);return this._renderUnsupportedComponent();}}},{key:"_renderReactModal",value:function _renderReactModal(){var _this$props2=this.props,visible=_this$props2.visible,children=_this$props2.children,rest=(0,_objectWithoutProperties2.default)(_this$props2,_excluded);this.setModalVisibility(visible);return(0,_react.createElement)(WrappedComponent,Object.assign({visible:visible},rest,{modalType:this.modalType,children:children}));}},{key:"_renderGorhomModal",value:function _renderGorhomModal(){var _this2=this;var _this$props3=this.props,_onChange=_this$props3.onChange,children=_this$props3.children,rest=(0,_objectWithoutProperties2.default)(_this$props3,_excluded2);return(0,_react.createElement)(WrappedComponent,Object.assign({ref:function ref(_ref){_this2.setWrappedComponentRef(_ref);},onChange:function onChange(index){_this2.setGorhomVisibility(index>=0);if(typeof _onChange==='function'){_pendoLogger.Logger.debug('propagating onChange');_onChange(index);}},modalType:this.modalType,isVisible:this.state.isVisible},rest,{children:children}));}},{key:"_renderUnsupportedComponent",value:function _renderUnsupportedComponent(){var _this$props4=this.props,children=_this$props4.children,rest=(0,_objectWithoutProperties2.default)(_this$props4,_excluded3);return(0,_react.createElement)(WrappedComponent,Object.assign({modalType:this.modalType},rest,{children:children}));}}]);}(_react.Component);function useForwardRef(props,ref){var children=props.children,forwardedRef=props.forwardedRef,rest=(0,_objectWithoutProperties2.default)(props,_excluded4);return _react.default.createElement(PNDModalContainer,Object.assign({},rest,{forwardedRef:forwardedRef||ref}),children);}var name=(WrappedComponent==null?void 0:WrappedComponent.displayName)||WrappedComponent.name||`Component`;useForwardRef.displayName=`PNDModalContainer(${name})`;var forwardedComponent=(0,_react.forwardRef)(_common.Utils.handleError.bind(_common.Utils,useForwardRef));return forwardedComponent;}