text: import VSheet from '../VSheet'; // Components
  
  import VProgressCircular from '../VProgressCircular'; // Mixins
  
  import { factory as GroupableFactory } from '../../mixins/groupable';
  import { factory as ToggleableFactory } from '../../mixins/toggleable';
  import Positionable from '../../mixins/positionable';
  import Routable from '../../mixins/routable';
  import Sizeable from '../../mixins/sizeable'; // Utilities
  
  import mixins from '../../util/mixins';
  import { breaking } from '../../util/console';
  const baseMixins = mixins(VSheet, Routable, Positionable, Sizeable, GroupableFactory('btnToggle'), ToggleableFactory('inputValue')
  /* @vue/component */
  );
  export default baseMixins.extend().extend({
    name: 'v-btn',
    props: {
      activeClass: {
        type: String,
  
        default() {
          if (!this.btnToggle) return '';
          return this.btnToggle.activeClass;
        }
  
      },
      block: Boolean,
      depressed: Boolean,
      fab: Boolean,
      icon: Boolean,
      loading: Boolean,
      outlined: Boolean,
      rounded: Boolean,
      tag: {
        type: String,
        default: 'button'
      },
      text: Boolean,
      type: {
        type: String,
        default: 'button'
      },
      value: null
    },
    data: () => ({
      proxyClass: 'v-btn--active'
    }),
    computed: {
      classes() {
        return {
          'v-btn': true,
          ...Routable.options.computed.classes.call(this),
          'v-btn--absolute': this.absolute,
          'v-btn--block': this.block,
          'v-btn--bottom': this.bottom,
          'v-btn--contained': this.contained,
          'v-btn--depressed': this.depressed || this.outlined,
          'v-btn--disabled': this.disabled,
          'v-btn--fab': this.isRound,
          'v-btn--fixed': this.fixed,
          'v-btn--flat': this.isFlat,
          'v-btn--icon': this.icon,
          'v-btn--left': this.left,
          'v-btn--loading': this.loading,
          'v-btn--outlined': this.outlined,
          'v-btn--right': this.right,
          'v-btn--round': this.isRound,
          'v-btn--rounded': this.rounded,
          'v-btn--router': this.to,
          'v-btn--text': this.text,
          'v-btn--tile': this.tile,
          'v-btn--top': this.top,
          ...this.themeClasses,
          ...this.groupClasses,
          ...this.elevationClasses,
          ...this.sizeableClasses
        };
      },
  
      contained() {
        return Boolean(!this.isFlat && !this.depressed && // Contained class only adds elevation
        // is not needed if user provides value
        !this.elevation);
      },
  
      computedRipple() {
        const defaultRipple = this.icon || this.fab ? {
          circle: true
        } : true;
        if (this.disabled) return false;else return this.ripple != null ? this.ripple : defaultRipple;
      },
  
      isFlat() {
        return Boolean(this.icon || this.text || this.outlined);
      },
  
      isRound() {
        return Boolean(this.icon || this.fab);
      },
  
      styles() {
        return { ...this.measurableStyles
        };
      }
  
    },
  
    created() {
      const breakingProps = [['flat', 'text'], ['outline', 'outlined'], ['round', 'rounded']];
      /* istanbul ignore next */
  
      breakingProps.forEach(([original, replacement]) => {
        if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this);
      });
    },
  
    methods: {
      click(e) {
        this.$emit('click', e);
        this.btnToggle && this.toggle();
      },
  
      genContent() {
        return this.$createElement('span', {
          staticClass: 'v-btn__content'
        }, this.$slots.default);
      },
  
      genLoader() {
        return this.$createElement('span', {
          class: 'v-btn__loader'
        }, this.$slots.loader || [this.$createElement(VProgressCircular, {
          props: {
            indeterminate: true,
            size: 23,
            width: 2
          }
        })]);
      }
  
    },
  
    render(h) {
      const children = [this.genContent(), this.loading && this.genLoader()];
      const setColor = !this.isFlat ? this.setBackgroundColor : this.setTextColor;
      const {
        tag,
        data
      } = this.generateRouteLink();
  
      if (tag === 'button') {
        data.attrs.type = this.type;
        data.attrs.disabled = this.disabled;
      }
  
      data.attrs.value = ['string', 'number'].includes(typeof this.value) ? this.value : JSON.stringify(this.value);
      return h(tag, setColor(this.color, data), children);
    }
  
  });
  //# sourceMappingURL=VBtn.js.map