"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const settings_1 = require("../settings");
var LongTermTrackingPopupState;
(function (LongTermTrackingPopupState) {
    LongTermTrackingPopupState["Hidden"] = "Hidden";
    LongTermTrackingPopupState["Enter"] = "Enter";
    LongTermTrackingPopupState["Visible"] = "Visible";
    LongTermTrackingPopupState["ExitSoon"] = "ExitSoon";
    LongTermTrackingPopupState["Exiting"] = "Exiting";
})(LongTermTrackingPopupState = exports.LongTermTrackingPopupState || (exports.LongTermTrackingPopupState = {}));
class LongTermTrackingPopup extends react_1.default.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 (!settings_1.isTrackingEnabled()) {
            return null;
        }
        if (this.state.current === LongTermTrackingPopupState.Hidden) {
            return null;
        }
        return <>{this.props.children(this.state.current)}</>;
    }
}
exports.LongTermTrackingPopup = LongTermTrackingPopup;
LongTermTrackingPopup.defaultProps = {
    hideFast: false
};
//# sourceMappingURL=longTermTrackingPopup.jsx.map