| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });var component_1 = require("../common/component");var utils_1 = require("./utils");function simpleTick(fn) {    return setTimeout(fn, 30);}(0, component_1.VantComponent)({    props: {        useSlot: Boolean,        millisecond: Boolean,        time: {            type: Number,            observer: 'reset',        },        format: {            type: String,            value: 'HH:mm:ss',        },        autoStart: {            type: Boolean,            value: true,        },    },    data: {        timeData: (0, utils_1.parseTimeData)(0),        formattedTime: '0',    },    destroyed: function () {        clearTimeout(this.tid);        this.tid = null;    },    methods: {        // 开始        start: function () {            if (this.counting) {                return;            }            this.counting = true;            this.endTime = Date.now() + this.remain;            this.tick();        },        // 暂停        pause: function () {            this.counting = false;            clearTimeout(this.tid);        },        // 重置        reset: function () {            this.pause();            this.remain = this.data.time;            this.setRemain(this.remain);            if (this.data.autoStart) {                this.start();            }        },        tick: function () {            if (this.data.millisecond) {                this.microTick();            }            else {                this.macroTick();            }        },        microTick: function () {            var _this = this;            this.tid = simpleTick(function () {                _this.setRemain(_this.getRemain());                if (_this.remain !== 0) {                    _this.microTick();                }            });        },        macroTick: function () {            var _this = this;            this.tid = simpleTick(function () {                var remain = _this.getRemain();                if (!(0, utils_1.isSameSecond)(remain, _this.remain) || remain === 0) {                    _this.setRemain(remain);                }                if (_this.remain !== 0) {                    _this.macroTick();                }            });        },        getRemain: function () {            return Math.max(this.endTime - Date.now(), 0);        },        setRemain: function (remain) {            this.remain = remain;            var timeData = (0, utils_1.parseTimeData)(remain);            if (this.data.useSlot) {                this.$emit('change', timeData);            }            this.setData({                formattedTime: (0, utils_1.parseFormat)(this.data.format, timeData),            });            if (remain === 0) {                this.pause();                this.$emit('finish');            }        },    },});
 |