// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from "vue";
// import Vue from "vue/dist/vue.common.js";
import { API } from "../src/axios/api/index.js";
Vue.prototype.$API = API;
import App from "./App";
import router from "./router";
import utils from "./utils/util";
import filters from "./filters/index";
import directives from "./directives/index";
import store from "./store/index.js";
import wx from "weixin-js-sdk";
import Scroll from "vue-slim-better-scroll";
import Vant from "vant";
import "vant/lib/index.css";
import "vant/lib/index.less";
import "../src/styles/vantTheme.less";

import clipboard from "clipboard";
Vue.prototype.clipboard = clipboard;
Vue.use(Scroll);
Vue.use(Vant);
import { MessageBox, Toast, Indicator } from "mint-ui";
//Vue.prototype.$message = Toast({duration:1000});

Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$prompt = MessageBox.prompt;

// 全局注册自定义组件
import VContent from "./components/common/content";
import VFooter from "./components/common/footer";
Vue.use(VContent);
Vue.use(VFooter);

Vue.use(wx);
import {
  ToastPlugin,
  XButton,
  XHeader,
  Cell,
  CellBox,
  Tab,
  TabItem,
  ViewBox,
  PopupRadio,
  Group,
  XTextarea,
  Panel,
  Scroller,
  XInput,
  Tabbar,
  TabbarItem,
  Sticky,
  XSwitch,
  Selector,
  Box,
  LoadingPlugin,
  FormPreview,
  DatetimeRange,
  ConfirmPlugin,
  Confirm,
  CheckIcon,
  Popup,
  Radio,
  PopupHeader,
  PopupPicker,
  XAddress,
  Datetime,
  Flow,
  FlowState,
  FlowLine,
  Popover,
  TransferDom,
  XDialog,
  Flexbox,
  FlexboxItem,
  Qrcode,
  Swiper,
  SwiperItem,
  Search,
  Marquee,
  MarqueeItem,
} from "vux";

import FastClick from "fastclick"; //使用 fastclick 解决移动端 300ms 点击延迟
FastClick.attach(document.body);
FastClick.prototype.focus = function (targetElement) {
  var length;

  var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0;
  var deviceIsIOS =
    /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone;
  //兼容处理:在iOS7中，有一些元素（如date、datetime、month等）在setSelectionRange会出现TypeError
  //这是因为这些元素并没有selectionStart和selectionEnd的整型数字属性，所以一旦引用就会报错，因此排除这些属性才使用setSelectionRange方法
  try {
    if (
      deviceIsIOS &&
      targetElement.setSelectionRange &&
      targetElement.type.indexOf("date") !== 0 &&
      targetElement.type !== "time" &&
      targetElement.type !== "month" &&
      targetElement.type !== "email"
    ) {
      length = targetElement.value.length;
      targetElement.setSelectionRange(length, length); //修复bug ios 11.3不弹出键盘，这里加上聚焦代码，让其强制聚焦弹出键盘
      targetElement.focus();
    } else {
      targetElement.focus();
    }
  } catch (error) {
    console.warn(error);
  }
};
if (/Android [4-6]/.test(navigator.appVersion)) {
  window.addEventListener("resize", function () {
    if (
      document.activeElement.tagName == "INPUT" ||
      document.activeElement.tagName == "TEXTAREA"
    ) {
      window.setTimeout(function () {
        document.activeElement.scrollIntoViewIfNeeded();
      }, 0);
    }
  });
}

Vue.component("x-button", XButton);
Vue.component("x-header", XHeader);
Vue.component("cell", Cell);
Vue.component("cell-box", CellBox);
Vue.component("tab", Tab);
Vue.component("tab-item", TabItem);
Vue.component("view-box", ViewBox);
Vue.component("popup-radio", PopupRadio);
Vue.component("group", Group);
Vue.component("x-textarea", XTextarea);
Vue.component("panel", Panel);
Vue.component("popup-picker", PopupPicker);
Vue.component("scroller", Scroller);
Vue.component("x-input", XInput);
Vue.component("tabbar", Tabbar);
Vue.component("tabbar-item", TabbarItem);
Vue.component("sticky", Sticky);
Vue.component("x-switch", XSwitch);
Vue.component("selector", Selector);
Vue.component("box", Box);
Vue.component("form-preview", FormPreview);
Vue.component("datetime-range", DatetimeRange);
Vue.component("confirm", Confirm);
Vue.component("check-icon", CheckIcon);
Vue.component("popup", Popup);
Vue.component("radio", Radio);
Vue.component("popup-header", PopupHeader);
Vue.component("x-address", XAddress);
Vue.component("datetime", Datetime);
Vue.component("flow", Flow);
Vue.component("flow-state", FlowState);
Vue.component("flow-line", FlowLine);
Vue.component("popover", Popover);
Vue.directive("transfer-dom", TransferDom);
Vue.component("x-dialog", XDialog);
Vue.component("flexbox", Flexbox);
Vue.component("flexbox-item", FlexboxItem);
Vue.component("qrcode", Qrcode);
Vue.component("swiper", Swiper);
Vue.component("SwiperItem", SwiperItem);
Vue.component("search", Search);
Vue.component("marquee", Marquee);
Vue.component("marquee-item", MarqueeItem);
Vue.config.productionTip = false;
Vue.use(utils);
Vue.use(filters);
Vue.use(directives);
Vue.use(LoadingPlugin);
Vue.use(ToastPlugin);
Vue.use(ConfirmPlugin);
import "mint-ui/lib/style.css";
import "./assets/css/my-mint.scss"; //全局修改mint-UI样式
import VueLazyload from "vue-lazyload";
Vue.use(VueLazyload);
new Vue({
  el: "#app",
  router,
  store,
  wx,
  render: (h) => h(App),
});
