text: 'use strict';
  Object.defineProperty(exports, '__esModule', { value: true });
  var component_1 = require('../common/component');
  var button_1 = require('../mixins/button');
  var open_type_1 = require('../mixins/open-type');
  var color_1 = require('../common/color');
  component_1.VantComponent({
    mixins: [button_1.button, open_type_1.openType],
    props: {
      show: {
        type: Boolean,
        observer: function (show) {
          !show && this.stopLoading();
        },
      },
      title: String,
      message: String,
      useSlot: Boolean,
      className: String,
      customStyle: String,
      asyncClose: Boolean,
      messageAlign: String,
      overlayStyle: String,
      useTitleSlot: Boolean,
      showCancelButton: Boolean,
      closeOnClickOverlay: Boolean,
      confirmButtonOpenType: String,
      width: null,
      zIndex: {
        type: Number,
        value: 2000,
      },
      confirmButtonText: {
        type: String,
        value: '确认',
      },
      cancelButtonText: {
        type: String,
        value: '取消',
      },
      confirmButtonColor: {
        type: String,
        value: color_1.BLUE,
      },
      cancelButtonColor: {
        type: String,
        value: color_1.GRAY,
      },
      showConfirmButton: {
        type: Boolean,
        value: true,
      },
      overlay: {
        type: Boolean,
        value: true,
      },
      transition: {
        type: String,
        value: 'scale',
      },
    },
    data: {
      loading: {
        confirm: false,
        cancel: false,
      },
    },
    methods: {
      onConfirm: function () {
        this.handleAction('confirm');
      },
      onCancel: function () {
        this.handleAction('cancel');
      },
      onClickOverlay: function () {
        this.onClose('overlay');
      },
      handleAction: function (action) {
        var _a;
        if (this.data.asyncClose) {
          this.setData(((_a = {}), (_a['loading.' + action] = true), _a));
        }
        this.onClose(action);
      },
      close: function () {
        this.setData({
          show: false,
        });
      },
      stopLoading: function () {
        this.setData({
          loading: {
            confirm: false,
            cancel: false,
          },
        });
      },
      onClose: function (action) {
        if (!this.data.asyncClose) {
          this.close();
        }
        this.$emit('close', action);
        // 把 dialog 实例传递出去，可以通过 stopLoading() 在外部关闭按钮的 loading
        this.$emit(action, { dialog: this });
        var callback = this.data[action === 'confirm' ? 'onConfirm' : 'onCancel'];
        if (callback) {
          callback(this);
        }
      },
    },
  });
  