import React from "react";
import { isTrackingEnabled } from "../settings";
export var LongTermTrackingPopupState;
(function (LongTermTrackingPopupState) {
    LongTermTrackingPopupState["Hidden"] = "Hidden";
    LongTermTrackingPopupState["Enter"] = "Enter";
    LongTermTrackingPopupState["Visible"] = "Visible";
    LongTermTrackingPopupState["ExitSoon"] = "ExitSoon";
    LongTermTrackingPopupState["Exiting"] = "Exiting";
})(LongTermTrackingPopupState || (LongTermTrackingPopupState = {}));
export class LongTermTrackingPopup extends React.Component {
    constructor() {
        super(...arguments);
        this.state = {
            visible: this.props.visible,
            current: this.props.visible
                ? LongTermTrackingPopupState.Enter
                : LongTermTrackingPopupState.Hidden
        };
    }
    static getDerivedStateFromProps(currentProps, prevState) {
        if (currentProps.visible !== prevState.visible) {
            if (currentProps.visible) {
                if (prevState.current === LongTermTrackingPopupState.Hidden) {
                    return {
                        visible: true,
                        current: LongTermTrackingPopupState.Enter
                    };
                }
            }
            else {
                if (prevState.current === LongTermTrackingPopupState.Visible ||
                    prevState.current === LongTermTrackingPopupState.Enter) {
                    return {
                        visible: false,
                        current: currentProps.hideFast
                            ? LongTermTrackingPopupState.Exiting
                            : LongTermTrackingPopupState.ExitSoon
                    };
                }
            }
        }
        return null;
    }
    componentDidUpdate(_prevProps, prevState) {
        if (this.state.current !== prevState.current) {
            if (this.state.current === LongTermTrackingPopupState.Enter) {
                this.currentTimeout = setTimeout(() => {
                    this.setState({
                        current: LongTermTrackingPopupState.Visible
                    });
                }, 500);
            }
            if (this.state.current === LongTermTrackingPopupState.ExitSoon) {
                this.currentTimeout = setTimeout(() => {
                    this.setState({
                        current: LongTermTrackingPopupState.Exiting
                    });
                }, 2500);
            }
            if (this.state.current === LongTermTrackingPopupState.Exiting) {
                this.currentTimeout = setTimeout(() => {
                    this.setState({
                        current: LongTermTrackingPopupState.Hidden
                    });
                }, 500);
            }
        }
    }
    componentWillUnmount() {
        clearTimeout(this.currentTimeout);
    }
    render() {
        if (!isTrackingEnabled()) {
            return null;
        }
        if (this.state.current === LongTermTrackingPopupState.Hidden) {
            return null;
        }
        return <>{this.props.children(this.state.current)}</>;
    }
}
LongTermTrackingPopup.defaultProps = {
    hideFast: false
};
//# sourceMappingURL=longTermTrackingPopup.jsx.map