text: 'use strict';
  Object.defineProperty(exports, '__esModule', { value: true });
  var utils_1 = require('../common/utils');
  var component_1 = require('../common/component');
  var button_1 = require('../mixins/button');
  var open_type_1 = require('../mixins/open-type');
  var FIT_MODE_MAP = {
    none: 'center',
    fill: 'scaleToFill',
    cover: 'aspectFill',
    contain: 'aspectFit',
    widthFix: 'widthFix',
    heightFix: 'heightFix',
  };
  component_1.VantComponent({
    mixins: [button_1.button, open_type_1.openType],
    classes: ['custom-class', 'loading-class', 'error-class', 'image-class'],
    props: {
      src: {
        type: String,
        observer: function () {
          this.setData({
            error: false,
            loading: true,
          });
        },
      },
      round: Boolean,
      width: {
        type: null,
        observer: 'setStyle',
      },
      height: {
        type: null,
        observer: 'setStyle',
      },
      radius: null,
      lazyLoad: Boolean,
      useErrorSlot: Boolean,
      useLoadingSlot: Boolean,
      showMenuByLongpress: Boolean,
      fit: {
        type: String,
        value: 'fill',
        observer: 'setMode',
      },
      showError: {
        type: Boolean,
        value: true,
      },
      showLoading: {
        type: Boolean,
        value: true,
      },
    },
    data: {
      error: false,
      loading: true,
      viewStyle: '',
    },
    mounted: function () {
      this.setMode();
      this.setStyle();
    },
    methods: {
      setMode: function () {
        this.setData({
          mode: FIT_MODE_MAP[this.data.fit],
        });
      },
      setStyle: function () {
        var _a = this.data,
          width = _a.width,
          height = _a.height,
          radius = _a.radius;
        var style = '';
        if (utils_1.isDef(width)) {
          style += 'width: ' + utils_1.addUnit(width) + ';';
        }
        if (utils_1.isDef(height)) {
          style += 'height: ' + utils_1.addUnit(height) + ';';
        }
        if (utils_1.isDef(radius)) {
          style += 'overflow: hidden;';
          style += 'border-radius: ' + utils_1.addUnit(radius) + ';';
        }
        this.setData({ viewStyle: style });
      },
      onLoad: function (event) {
        this.setData({
          loading: false,
        });
        this.$emit('load', event.detail);
      },
      onError: function (event) {
        this.setData({
          loading: false,
          error: true,
        });
        this.$emit('error', event.detail);
      },
      onClick: function (event) {
        this.$emit('click', event.detail);
      },
    },
  });
  