{"version":3,"file":"longTermTrackingPopup.jsx","sourceRoot":"","sources":["../../../components/longTermTrackingPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\n\r\nimport { isTrackingEnabled } from \"../settings\";\r\n\r\nexport enum LongTermTrackingPopupState {\r\n  Hidden = \"Hidden\",\r\n  Enter = \"Enter\",\r\n  Visible = \"Visible\",\r\n  ExitSoon = \"ExitSoon\",\r\n  Exiting = \"Exiting\"\r\n}\r\n\r\ntype PopupRenderFunction = (state: LongTermTrackingPopupState) => React.ReactNode;\r\n\r\ntype PopupProps = {\r\n  visible: boolean;\r\n  hideFast: boolean;\r\n  children: PopupRenderFunction;\r\n};\r\n\r\ntype PopupState = {\r\n  visible: boolean;\r\n  current: LongTermTrackingPopupState;\r\n};\r\n\r\nexport class LongTermTrackingPopup extends React.Component<PopupProps, PopupState> {\r\n  state: PopupState = {\r\n    visible: this.props.visible,\r\n    current: this.props.visible\r\n      ? LongTermTrackingPopupState.Enter\r\n      : LongTermTrackingPopupState.Hidden\r\n  };\r\n\r\n  static defaultProps = {\r\n    hideFast: false\r\n  };\r\n\r\n  static getDerivedStateFromProps(\r\n    currentProps: PopupProps,\r\n    prevState: PopupState\r\n  ): PopupState | null {\r\n    if (currentProps.visible !== prevState.visible) {\r\n      if (currentProps.visible) {\r\n        if (prevState.current === LongTermTrackingPopupState.Hidden) {\r\n          return {\r\n            visible: true,\r\n            current: LongTermTrackingPopupState.Enter\r\n          };\r\n        }\r\n      } else {\r\n        if (\r\n          prevState.current === LongTermTrackingPopupState.Visible ||\r\n          prevState.current === LongTermTrackingPopupState.Enter\r\n        ) {\r\n          return {\r\n            visible: false,\r\n            current: currentProps.hideFast\r\n              ? LongTermTrackingPopupState.Exiting\r\n              : LongTermTrackingPopupState.ExitSoon\r\n          };\r\n        }\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  currentTimeout!: NodeJS.Timeout;\r\n\r\n  componentDidUpdate(_prevProps: PopupProps, prevState: PopupState) {\r\n    if (this.state.current !== prevState.current) {\r\n      if (this.state.current === LongTermTrackingPopupState.Enter) {\r\n        this.currentTimeout = setTimeout(() => {\r\n          this.setState({\r\n            current: LongTermTrackingPopupState.Visible\r\n          });\r\n        }, 500);\r\n      }\r\n      if (this.state.current === LongTermTrackingPopupState.ExitSoon) {\r\n        this.currentTimeout = setTimeout(() => {\r\n          this.setState({\r\n            current: LongTermTrackingPopupState.Exiting\r\n          });\r\n        }, 2500);\r\n      }\r\n      if (this.state.current === LongTermTrackingPopupState.Exiting) {\r\n        this.currentTimeout = setTimeout(() => {\r\n          this.setState({\r\n            current: LongTermTrackingPopupState.Hidden\r\n          });\r\n        }, 500);\r\n      }\r\n    }\r\n  }\r\n\r\n  componentWillUnmount() {\r\n    clearTimeout(this.currentTimeout);\r\n  }\r\n\r\n  render() {\r\n    if (!isTrackingEnabled()) {\r\n      return null;\r\n    }\r\n    if (this.state.current === LongTermTrackingPopupState.Hidden) {\r\n      return null;\r\n    }\r\n    return <>{this.props.children(this.state.current)}</>;\r\n  }\r\n}\r\n"]}