"use strict";

var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");

exports.__esModule = true;
exports.default = void 0;

require("./back-top.css");

var _base = require("../../utils/base");

var _quickItem = _interopRequireDefault(require("./quick-item"));

var _icon = _interopRequireDefault(require("../icon"));

var _vueNormalizeComponent = _interopRequireDefault(require("../../utils/vue-normalize-component.js"));

/* script */
//
//
//
//
//
//
//
//
//
//
//
//
var __vue_script__ = {
  name: (0, _base.createComponentName)('quick-link-back-top'),
  components: {
    icon: _icon.default,
    quickItem: _quickItem.default
  },
  mixins: [_base.componentMixin],

  data() {
    return {
      isShowBackTopBtn: false
    };
  },

  mounted() {
    window.addEventListener('scroll', this.handleScroll, false);
  },

  beforeDestroy() {
    window.removeEventListener('scroll', this.handleScroll, false);
  },

  methods: {
    scrollToTop() {
      this.lastTop = undefined;
      this.beginScrollToTop();
    },

    beginScrollToTop() {
      var c = document.documentElement.scrollTop || document.body.scrollTop;
      if (this.lastTop < c) return;
      this.lastTop = c;

      if (c > 20) {
        window.requestAnimationFrame(this.beginScrollToTop);
        window.scrollTo(0, c - c / 8);
      } else {
        window.scrollTo(0, 0);
      }
    },

    handleScroll() {
      this.isShowBackTopBtn = window.pageYOffset >= 100;
    }

  }
};
/* template */

var __vue_render__ = function __vue_render__() {
  var _vm = this;

  var _h = _vm.$createElement;

  var _c = _vm._self._c || _h;

  return _c("quick-item", {
    directives: [{
      name: "show",
      rawName: "v-show",
      value: _vm.isShowBackTopBtn,
      expression: "isShowBackTopBtn"
    }],
    class: _vm.bem(),
    nativeOn: {
      click: function click($event) {
        return _vm.scrollToTop($event);
      }
    }
  }, [_c("div", [_c("icon", {
    attrs: {
      name: "arrow-top"
    }
  }), _vm._v(" "), _c("span", {
    class: _vm.bem("tip")
  }, [_vm._v("回到"), _c("br"), _vm._v("顶部")])], 1)]);
};

var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */

var __vue_inject_styles__ = undefined;
/* scoped */

var __vue_scope_id__ = undefined;
/* module identifier */

var __vue_module_identifier__ = undefined;
/* functional template */

var __vue_is_functional_template__ = false;
/* component normalizer */

/* style inject */

/* style inject SSR */
var _default = (0, _vueNormalizeComponent.default)({
  render: __vue_render__,
  staticRenderFns: __vue_staticRenderFns__
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);

exports.default = _default;