import { __awaiter, __generator } from "tslib";
import { Component, triggerEventOnly, getValueFromProps, } from '../_util/simply';
import { PopupDefaultProps } from './props';
import { isOldSDKVersion } from '../_util/platform';
var isOldVersion = isOldSDKVersion();
Component(PopupDefaultProps, {
    onTapMask: function () {
        var closing = this.data.closing;
        if (closing) {
            return;
        }
        triggerEventOnly(this, 'close');
    },
    onAnimationEnd: function () {
        var closing = this.data.closing;
        if (closing) {
            this.setData({ closing: false });
        }
        var _a = getValueFromProps(this, [
            'visible',
            'duration',
            'animation',
        ]), visible = _a[0], duration = _a[1], animation = _a[2];
        var enableAnimation = animation && duration > 0;
        if (enableAnimation) {
            triggerEventOnly(this, visible ? 'afterShow' : 'afterClose');
        }
    },
}, {
    closing: false,
    isOldVersion: isOldVersion,
}, undefined, {
    deriveDataFromProps: function (nextProps) {
        return __awaiter(this, void 0, void 0, function () {
            var _a, visible, duration, animation, enableAnimation;
            return __generator(this, function (_b) {
                _a = getValueFromProps(this, [
                    'visible',
                    'duration',
                    'animation',
                ]), visible = _a[0], duration = _a[1], animation = _a[2];
                enableAnimation = animation && duration > 0;
                if (nextProps.visible !== visible &&
                    enableAnimation &&
                    !nextProps.visible &&
                    !this.data.closing) {
                    this.setData({ closing: true });
                }
                return [2 /*return*/];
            });
        });
    },
    didUpdate: function (prevProps) {
        var _a = getValueFromProps(this, [
            'visible',
            'duration',
            'animation',
        ]), visible = _a[0], duration = _a[1], animation = _a[2];
        var enableAnimation = animation && duration > 0;
        if (prevProps.visible !== visible && !enableAnimation) {
            triggerEventOnly(this, visible ? 'afterShow' : 'afterClose');
        }
    },
});