"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transition = void 0; // @ts-nocheck var utils_1 = require("../common/utils"); var validator_1 = require("../common/validator"); var getClassNames = function (name) { return ({ enter: "van-" + name + "-enter van-" + name + "-enter-active enter-class enter-active-class", 'enter-to': "van-" + name + "-enter-to van-" + name + "-enter-active enter-to-class enter-active-class", leave: "van-" + name + "-leave van-" + name + "-leave-active leave-class leave-active-class", 'leave-to': "van-" + name + "-leave-to van-" + name + "-leave-active leave-to-class leave-active-class", }); }; function transition(showDefaultValue) { return Behavior({ properties: { customStyle: String, // @ts-ignore show: { type: Boolean, value: showDefaultValue, observer: 'observeShow', }, // @ts-ignore duration: { type: null, value: 300, observer: 'observeDuration', }, name: { type: String, value: 'fade', }, }, data: { type: '', inited: false, display: false, }, ready: function () { if (this.data.show === true) { this.observeShow(true, false); } }, methods: { observeShow: function (value, old) { if (value === old) { return; } value ? this.enter() : this.leave(); }, enter: function () { var _this = this; var _a = this.data, duration = _a.duration, name = _a.name; var classNames = getClassNames(name); var currentDuration = validator_1.isObj(duration) ? duration.enter : duration; this.status = 'enter'; this.$emit('before-enter'); utils_1.requestAnimationFrame(function () { if (_this.status !== 'enter') { return; } _this.$emit('enter'); _this.setData({ inited: true, display: true, classes: classNames.enter, currentDuration: currentDuration, }); utils_1.requestAnimationFrame(function () { if (_this.status !== 'enter') { return; } _this.transitionEnded = false; _this.setData({ classes: classNames['enter-to'] }); }); }); }, leave: function () { var _this = this; if (!this.data.display) { return; } var _a = this.data, duration = _a.duration, name = _a.name; var classNames = getClassNames(name); var currentDuration = validator_1.isObj(duration) ? duration.leave : duration; this.status = 'leave'; this.$emit('before-leave'); utils_1.requestAnimationFrame(function () { if (_this.status !== 'leave') { return; } _this.$emit('leave'); _this.setData({ classes: classNames.leave, currentDuration: currentDuration, }); utils_1.requestAnimationFrame(function () { if (_this.status !== 'leave') { return; } _this.transitionEnded = false; setTimeout(function () { return _this.onTransitionEnd(); }, currentDuration); _this.setData({ classes: classNames['leave-to'] }); }); }); }, onTransitionEnd: function () { if (this.transitionEnded) { return; } this.transitionEnded = true; this.$emit("after-" + this.status); var _a = this.data, show = _a.show, display = _a.display; if (!show && display) { this.setData({ display: false }); } }, }, }); } exports.transition = transition;