var BMapLib = (window.BMapLib = BMapLib || {});
(function() {
  var d,
    c = (d = c || { version: "1.3.8" });
  (function() {
    c.guid = "$BAIDU$";
    window[c.guid] = window[c.guid] || {};
    c.dom = c.dom || {};
    c.dom.g = function(f) {
      if ("string" == typeof f || f instanceof String) {
        return document.getElementById(f);
      } else {
        if (f && f.nodeName && (f.nodeType == 1 || f.nodeType == 9)) {
          return f;
        }
      }
      return null;
    };
    c.g = c.G = c.dom.g;
    c.dom.getDocument = function(f) {
      f = c.dom.g(f);
      return f.nodeType == 9 ? f : f.ownerDocument || f.document;
    };
    c.lang = c.lang || {};
    c.lang.isString = function(f) {
      return "[object String]" == Object.prototype.toString.call(f);
    };
    c.isString = c.lang.isString;
    c.dom._g = function(f) {
      if (c.lang.isString(f)) {
        return document.getElementById(f);
      }
      return f;
    };
    c._g = c.dom._g;
    c.browser = c.browser || {};
    if (/msie (\d+\.\d)/i.test(navigator.userAgent)) {
      c.browser.ie = c.ie = document.documentMode || +RegExp["\x241"];
    }
    c.dom.getComputedStyle = function(g, f) {
      g = c.dom._g(g);
      var i = c.dom.getDocument(g),
        h;
      if (i.defaultView && i.defaultView.getComputedStyle) {
        h = i.defaultView.getComputedStyle(g, null);
        if (h) {
          return h[f] || h.getPropertyValue(f);
        }
      }
      return "";
    };
    c.dom._styleFixer = c.dom._styleFixer || {};
    c.dom._styleFilter = c.dom._styleFilter || [];
    c.dom._styleFilter.filter = function(g, k, l) {
      for (var f = 0, j = c.dom._styleFilter, h; (h = j[f]); f++) {
        if ((h = h[l])) {
          k = h(g, k);
        }
      }
      return k;
    };
    c.string = c.string || {};
    c.string.toCamelCase = function(f) {
      if (f.indexOf("-") < 0 && f.indexOf("_") < 0) {
        return f;
      }
      return f.replace(/[-_][^-_]/g, function(g) {
        return g.charAt(1).toUpperCase();
      });
    };
    c.dom.getStyle = function(h, g) {
      var j = c.dom;
      h = j.g(h);
      g = c.string.toCamelCase(g);
      var i =
        h.style[g] ||
        (h.currentStyle ? h.currentStyle[g] : "") ||
        j.getComputedStyle(h, g);
      if (!i) {
        var f = j._styleFixer[g];
        if (f) {
          i = f.get ? f.get(h) : c.dom.getStyle(h, f);
        }
      }
      if ((f = j._styleFilter)) {
        i = f.filter(g, i, "get");
      }
      return i;
    };
    c.getStyle = c.dom.getStyle;
    if (/opera\/(\d+\.\d)/i.test(navigator.userAgent)) {
      c.browser.opera = +RegExp["\x241"];
    }
    c.browser.isWebkit = /webkit/i.test(navigator.userAgent);
    c.browser.isGecko =
      /gecko/i.test(navigator.userAgent) &&
      !/like gecko/i.test(navigator.userAgent);
    c.browser.isStrict = document.compatMode == "CSS1Compat";
    c.dom.getPosition = function(f) {
      f = c.dom.g(f);
      var o = c.dom.getDocument(f),
        i = c.browser,
        l = c.dom.getStyle,
        h =
          i.isGecko > 0 &&
          o.getBoxObjectFor &&
          l(f, "position") == "absolute" &&
          (f.style.top === "" || f.style.left === ""),
        m = { left: 0, top: 0 },
        k = i.ie && !i.isStrict ? o.body : o.documentElement,
        p,
        g;
      if (f == k) {
        return m;
      }
      if (f.getBoundingClientRect) {
        g = f.getBoundingClientRect();
        m.left =
          Math.floor(g.left) +
          Math.max(o.documentElement.scrollLeft, o.body.scrollLeft);
        m.top =
          Math.floor(g.top) +
          Math.max(o.documentElement.scrollTop, o.body.scrollTop);
        m.left -= o.documentElement.clientLeft;
        m.top -= o.documentElement.clientTop;
        var n = o.body,
          q = parseInt(l(n, "borderLeftWidth")),
          j = parseInt(l(n, "borderTopWidth"));
        if (i.ie && !i.isStrict) {
          m.left -= isNaN(q) ? 2 : q;
          m.top -= isNaN(j) ? 2 : j;
        }
      } else {
        p = f;
        do {
          m.left += p.offsetLeft;
          m.top += p.offsetTop;
          if (i.isWebkit > 0 && l(p, "position") == "fixed") {
            m.left += o.body.scrollLeft;
            m.top += o.body.scrollTop;
            break;
          }
          p = p.offsetParent;
        } while (p && p != f);
        if (i.opera > 0 || (i.isWebkit > 0 && l(f, "position") == "absolute")) {
          m.top -= o.body.offsetTop;
        }
        p = f.offsetParent;
        while (p && p != o.body) {
          m.left -= p.scrollLeft;
          if (!i.opera || p.tagName != "TR") {
            m.top -= p.scrollTop;
          }
          p = p.offsetParent;
        }
      }
      return m;
    };
    c.event = c.event || {};
    c.event._listeners = c.event._listeners || [];
    c.event.on = function(g, j, l) {
      j = j.replace(/^on/i, "");
      g = c.dom._g(g);
      var k = function(n) {
          l.call(g, n);
        },
        f = c.event._listeners,
        i = c.event._eventFilter,
        m,
        h = j;
      j = j.toLowerCase();
      if (i && i[j]) {
        m = i[j](g, j, k);
        h = m.type;
        k = m.listener;
      }
      if (g.addEventListener) {
        g.addEventListener(h, k, false);
      } else {
        if (g.attachEvent) {
          g.attachEvent("on" + h, k);
        }
      }
      f[f.length] = [g, j, l, k, h];
      return g;
    };
    c.on = c.event.on;
    (function() {
      var f = window[c.guid];
      c.lang.guid = function() {
        return "TANGRAM__" + (f._counter++).toString(36);
      };
      f._counter = f._counter || 1;
    })();
    window[c.guid]._instances = window[c.guid]._instances || {};
    c.lang.isFunction = function(f) {
      return "[object Function]" == Object.prototype.toString.call(f);
    };
    c.lang.Class = function(f) {
      this.guid = f || c.lang.guid();
      window[c.guid]._instances[this.guid] = this;
    };
    window[c.guid]._instances = window[c.guid]._instances || {};
    c.lang.Class.prototype.dispose = function() {
      delete window[c.guid]._instances[this.guid];
      for (var f in this) {
        if (!c.lang.isFunction(this[f])) {
          delete this[f];
        }
      }
      this.disposed = true;
    };
    c.lang.Class.prototype.toString = function() {
      return "[object " + (this._className || "Object") + "]";
    };
    c.lang.Event = function(f, g) {
      this.type = f;
      this.returnValue = true;
      this.target = g || null;
      this.currentTarget = null;
    };
    c.lang.Class.prototype.addEventListener = function(i, h, g) {
      if (!c.lang.isFunction(h)) {
        return;
      }
      !this.__listeners && (this.__listeners = {});
      var f = this.__listeners,
        j;
      if (typeof g == "string" && g) {
        if (/[^\w\-]/.test(g)) {
          throw "nonstandard key:" + g;
        } else {
          h.hashCode = g;
          j = g;
        }
      }
      i.indexOf("on") != 0 && (i = "on" + i);
      typeof f[i] != "object" && (f[i] = {});
      j = j || c.lang.guid();
      h.hashCode = j;
      f[i][j] = h;
    };
    c.lang.Class.prototype.removeEventListener = function(i, h) {
      if (typeof h != "undefined") {
        if (
          (c.lang.isFunction(h) && !(h = h.hashCode)) ||
          !c.lang.isString(h)
        ) {
          return;
        }
      }
      !this.__listeners && (this.__listeners = {});
      i.indexOf("on") != 0 && (i = "on" + i);
      var g = this.__listeners;
      if (!g[i]) {
        return;
      }
      if (typeof h != "undefined") {
        g[i][h] && delete g[i][h];
      } else {
        for (var f in g[i]) {
          delete g[i][f];
        }
      }
    };
    c.lang.Class.prototype.dispatchEvent = function(j, f) {
      if (c.lang.isString(j)) {
        j = new c.lang.Event(j);
      }
      !this.__listeners && (this.__listeners = {});
      f = f || {};
      for (var h in f) {
        j[h] = f[h];
      }
      var h,
        g = this.__listeners,
        k = j.type;
      j.target = j.target || this;
      j.currentTarget = this;
      k.indexOf("on") != 0 && (k = "on" + k);
      c.lang.isFunction(this[k]) && this[k].apply(this, arguments);
      if (typeof g[k] == "object") {
        for (h in g[k]) {
          g[k][h].apply(this, arguments);
        }
      }
      return j.returnValue;
    };
    c.lang.inherits = function(l, j, i) {
      var h,
        k,
        f = l.prototype,
        g = new Function();
      g.prototype = j.prototype;
      k = l.prototype = new g();
      for (h in f) {
        k[h] = f[h];
      }
      l.prototype.constructor = l;
      l.superClass = j.prototype;
      if ("string" == typeof i) {
        k._className = i;
      }
    };
    c.inherits = c.lang.inherits;
  })();
  var b = "http://api.map.baidu.com/library/TextIconOverlay/1.2/src/images/m";
  var a = "png";
  var e = (BMapLib.TextIconOverlay = function(f, h, g) {
    this._position = f;
    this._text = h;
    this._options = g || {};
    this._styles = this._options.styles || [];
    !this._styles.length && this._setupDefaultStyles();
  });
  d.lang.inherits(e, BMap.Overlay, "TextIconOverlay");
  e.prototype._setupDefaultStyles = function() {
    var h = [53, 56, 66, 78, 90];
    for (var g = 0, f; (f = h[g]); g++) {
      // this._styles.push({ url: b + g + "." + a, size: new BMap.Size(f, f) });
      this._styles.push({ url:  require(`../../assets/m${g}.png`)  , size: new BMap.Size(f, f) });
    }
  };
  e.prototype.initialize = function(f) {
    this._map = f;
    this._domElement = document.createElement("div");
    this._updateCss();
    this._updateText();
    this._updatePosition();
    this._bind();
    this._map.getPanes().markerMouseTarget.appendChild(this._domElement);
    return this._domElement;
  };
  e.prototype.draw = function() {
    this._map && this._updatePosition();
  };
  e.prototype.getText = function() {
    return this._text;
  };
  e.prototype.setText = function(f) {
    if (f && (!this._text || this._text.toString() != f.toString())) {
      this._text = f;
      this._updateText();
      this._updateCss();
      this._updatePosition();
    }
  };
  e.prototype.getPosition = function() {
    return this._position;
  };
  e.prototype.setPosition = function(f) {
    if (f && (!this._position || !this._position.equals(f))) {
      this._position = f;
      this._updatePosition();
    }
  };
  e.prototype.getStyleByText = function(i, h) {
    var g = parseInt(i);
    var f = parseInt(g / 10);
    f = Math.max(0, f);
    f = Math.min(f, h.length - 1);
    return h[f];
  };
  e.prototype._updateCss = function() {
    var f = this.getStyleByText(this._text, this._styles);
    this._domElement.style.cssText = this._buildCssText(f);
  };
  e.prototype._updateText = function() {
    if (this._domElement) {
      this._domElement.innerHTML = this._text;
    }
  };
  e.prototype._updatePosition = function() {
    if (this._domElement && this._position) {
      var f = this._domElement.style;
      var g = this._map.pointToOverlayPixel(this._position);
      g.x -= Math.ceil(parseInt(f.width) / 2);
      g.y -= Math.ceil(parseInt(f.height) / 2);
      f.left = g.x + "px";
      f.top = g.y + "px";
    }
  };
  e.prototype._buildCssText = function(g) {
    var h = g.url;
    var n = g.size;
    var k = g.anchor;
    var j = g.offset;
    var l = g.textColor || "black";
    var f = g.textSize || 10;
    var m = [];
    if (d.browser.ie < 7) {
      m.push(
        'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="' +
          h +
          '");'
      );
    } else {
      m.push("background-image:url(" + h + ");");
      var i = "0 0";
      j instanceof BMap.Size && (i = j.width + "px " + j.height + "px");
      m.push("background-position:" + i + ";");
    }
    if (n instanceof BMap.Size) {
      if (k instanceof BMap.Size) {
        if (k.height > 0 && k.height < n.height) {
          m.push(
            "height:" +
              (n.height - k.height) +
              "px; padding-top:" +
              k.height +
              "px;"
          );
        }
        if (k.width > 0 && k.width < n.width) {
          m.push(
            "width:" +
              (n.width - k.width) +
              "px; padding-left:" +
              k.width +
              "px;"
          );
        }
      } else {
        m.push("height:" + n.height + "px; line-height:" + n.height + "px;");
        m.push("width:" + n.width + "px; text-align:center;");
      }
    }
    m.push(
      "cursor:pointer; color:" +
        l +
        "; position:absolute; font-size:" +
        f +
        "px; font-family:Arial,sans-serif; font-weight:bold"
    );
    return m.join("");
  };
  e.prototype._bind = function() {
    if (!this._domElement) {
      return;
    }
    var g = this;
    var i = this._map;
    var f = d.lang.Event;
    function h(m, l) {
      var k = m.srcElement || m.target;
      var j = m.clientX || m.pageX;
      var o = m.clientY || m.pageY;
      if (m && l && j && o && k) {
        var n = d.dom.getPosition(i.getContainer());
        l.pixel = new BMap.Pixel(j - n.left, o - n.top);
        l.point = i.pixelToPoint(l.pixel);
      }
      return l;
    }
    d.event.on(this._domElement, "mouseover", function(j) {
      g.dispatchEvent(h(j, new f("onmouseover")));
    });
    d.event.on(this._domElement, "mouseout", function(j) {
      g.dispatchEvent(h(j, new f("onmouseout")));
    });
    d.event.on(this._domElement, "click", function(j) {
      g.dispatchEvent(h(j, new f("onclick")));
    });
  };
})();
export default {BMapLib}