/**
 * tdesign v0.32.0
 * (c) 2021 tdesign
 * @license MIT
 */

import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import Vue from 'vue';
import { prefix } from '../config.js';
import props from './props.js';
import { renderTNodeJSX } from '../utils/render-tnode.js';
import '@babel/runtime/helpers/typeof';

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var name = "".concat(prefix, "-badge");
var _Badge = Vue.extend({
  name: "TBadge",
  props: _objectSpread({}, props),
  methods: {
    getContent: function getContent() {
      if (this.dot) return "";

      if (typeof this.count === "function") {
        return renderTNodeJSX(this, "count");
      }

      if (isNaN(Number(this.count))) {
        return this.count;
      }

      var count = Number(this.count);
      return count > this.maxCount ? "".concat(this.maxCount, "+") : count;
    },
    isSmall: function isSmall() {
      return this.size === "small";
    },
    isZero: function isZero() {
      var content = this.getContent();
      return content === 0 || content === "0";
    },
    isHidden: function isHidden() {
      return !this.showZero && this.isZero();
    },
    getOffset: function getOffset() {
      if (!this.offset) return {};

      var _this$offset = _slicedToArray(this.offset, 2),
          xOffset = _this$offset[0],
          yOffset = _this$offset[1];

      xOffset = isNaN(Number(xOffset)) ? xOffset : "".concat(xOffset, "px");
      yOffset = isNaN(Number(yOffset)) ? yOffset : "".concat(yOffset, "px");
      return {
        xOffset: xOffset,
        yOffset: yOffset
      };
    }
  },
  render: function render() {
    var _ref;

    var h = arguments[0];
    var _this$$props = this.$props,
        dot = _this$$props.dot,
        shape = _this$$props.shape,
        color = _this$$props.color;
    var content = this.getContent();
    var isHidden = this.isHidden();
    var children = this.$slots["default"];

    var _this$getOffset = this.getOffset(),
        xOffset = _this$getOffset.xOffset,
        yOffset = _this$getOffset.yOffset;

    var badgeClassNames = [(_ref = {}, _defineProperty(_ref, "".concat(name, "--dot"), !!dot), _defineProperty(_ref, "".concat(name, "--circle"), !dot && shape === "circle"), _defineProperty(_ref, "".concat(name, "--round"), shape === "round"), _defineProperty(_ref, "".concat(name, "--ribbon"), shape === "ribbon"), _defineProperty(_ref, "t-size-s", this.isSmall()), _ref)];
    var inlineStyle = {
      background: "".concat(color),
      right: xOffset,
      top: yOffset
    };
    return h("div", {
      "class": name
    }, [children || null, isHidden ? null : h("sup", {
      "class": badgeClassNames,
      "style": inlineStyle
    }, [content])]);
  }
});

export { _Badge as default };
//# sourceMappingURL=badge.js.map
