vue-awesome-picker.js.map 267 KB
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///vue-awesome-picker.js","webpack:///webpack/bootstrap ea58cab0a2c754693d34","webpack:///src/lib/vue-awesome-picker.vue","webpack:///./src/lib/data/range.js","webpack:///./src/lib/index.js","webpack:///./src/lib/vue-awesome-picker.vue","webpack:///./src/lib/vue-awesome-picker.vue?069c","webpack:///./src/lib/vue-awesome-picker.vue?b093","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue-loader/lib/component-normalizer.js","webpack:///./node_modules/better-scroll/dist/bscroll.esm.js","webpack:///./src/lib/data/time.js","webpack:///./src/lib/data/date.js","webpack:///./src/lib/vue-awesome-picker.vue?82da"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","_toConsumableArray","arr","Array","isArray","arr2","length","from","__WEBPACK_IMPORTED_MODULE_0_better_scroll__","__WEBPACK_IMPORTED_MODULE_1__data_time_js__","__WEBPACK_IMPORTED_MODULE_2__data_date_js__","props","data","type","default","anchor","String","textTitle","textConfirm","textCancel","colorTitle","colorConfirm","colorCancel","swipeTime","Number","display","dataChange","pickerData","_dataGetter","pickerAnchor","_anchorGetter","wheels","watch","_setPickerData","computed","proxyData","proxyAnchor","dataType","methods","concat","_this","map","item","index","value","indexOf","show","_this2","_updatePickerData","$nextTick","wheelWrapper","$refs","forEach","_createWheel","enable","_wheelToAnchor","_destroyExtraWheels","wheel","hide","disable","_this3","refresh","children","selectedIndex","rotate","on","_cascadePickerChange","newIndex","_getCurrentValue","splice","wheelTo","_this4","j","getSelectedIndex","push","_this5","dataLength","destroy","_this6","wheelIndex","arguments","undefined","wheelData","_reloadWheel","slice","_this7","scroll","querySelector","$set","confirm","some","isInTransition","selectedValues","$emit","cancel","polyfill","unit","__WEBPACK_IMPORTED_MODULE_0__vue_awesome_picker_vue__","picker","install","Vue","component","window","use","injectStyle","ssrContext","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_vue_awesome_picker_vue__","__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_171df494_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_vue_awesome_picker_vue__","normalizeComponent","__vue_styles__","Component","content","locals","cssWithMappingToString","useSourceMap","cssMapping","btoa","sourceMapping","toComment","sources","source","sourceRoot","join","sourceMap","unescape","encodeURIComponent","JSON","stringify","list","toString","mediaQuery","alreadyImportedModules","id","addStylesToDom","styles","domStyle","stylesInDom","refs","parts","addStyle","createStyleElement","styleElement","document","createElement","head","appendChild","obj","update","remove","ssrIdKey","isProduction","noop","parentNode","removeChild","isOldIE","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","bind","applyToTag","newObj","css","media","styleSheet","cssText","replaceText","cssNode","createTextNode","childNodes","insertBefore","setAttribute","options","ssrId","firstChild","hasDocument","DEBUG","Error","listToStyles","getElementsByTagName","navigator","test","userAgent","toLowerCase","parentId","_isProduction","_options","newList","mayRemove","textStore","replacement","filter","Boolean","newStyles","part","rawScriptExports","compiledTemplate","functionalTemplate","injectStyles","scopeId","moduleIdentifier","esModule","scriptExports","render","staticRenderFns","_compiled","functional","_scopeId","hook","context","$vnode","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","existing","beforeCreate","_injectStyles","h","getNow","performance","now","timing","navigationStart","Date","extend","target","_len","rest","_key","key","isUndef","v","prefixStyle","style","vendor","charAt","toUpperCase","substr","addEvent","el","fn","capture","addEventListener","passive","removeEvent","removeEventListener","offset","left","top","offsetLeft","offsetTop","offsetParent","getRect","SVGElement","rect","getBoundingClientRect","width","height","offsetWidth","offsetHeight","preventDefaultException","exceptions","tap","e","eventName","ev","createEvent","initEvent","pageX","pageY","dispatchEvent","click","event","bubbles","cancelable","posSrc","eventSource","changedTouches","screenX","screenY","clientX","clientY","MouseEvent","forwardedTouchEvent","_constructed","prepend","before","child","momentum","current","start","time","lowerMargin","wrapperSize","distance","speed","Math","abs","deceleration","itemHeight","swipeBounceTime","duration","rate","destination","round","max","min","warn","msg","console","error","assert","condition","createScrollbar","direction","scrollbar","indicator","className","Indicator","scroller","wrapper","wrapperStyle","indicatorStyle","fade","visible","opacity","sizeRatioX","sizeRatioY","maxPosX","maxPosY","x","y","interactive","_addDOMEvents","BScroll","scrollerStyle","_init","slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","_i","Symbol","iterator","next","done","err","TypeError","toConsumableArray","inBrowser","ua","isWeChatDevTools","isAndroid","elementStyle","transformNames","webkit","Moz","O","ms","standard","transform","hasPerspective","hasTouch","hasTransform","hasTransition","transitionTimingFunction","transitionDuration","transitionProperty","transitionDelay","transformOrigin","transitionEnd","TOUCH_EVENT","eventType","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","DEFAULT_OPTIONS","startX","startY","scrollX","scrollY","freeScroll","directionLockThreshold","eventPassthrough","bounce","bounceTime","momentumLimitTime","momentumLimitDistance","flickLimitTime","flickLimitDistance","resizePolling","probeType","preventDefault","tagName","HWCompositing","useTransition","useTransform","bindToWrapper","disableMouse","disableTouch","observeDOM","autoBlur","snap","pullDownRefresh","pullUpLoad","mouseWheel","ease","swipe","t","swipeBounce","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","callback","setTimeout","interval","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","clearTimeout","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_RIGHT","handleEvent","_start","_move","_end","transitionTime","_calculate","updatePosition","hold","fadeTimeout","indicatorHeight","_height","translateZ","indicatorWidth","_width","easing","_removeDOMEvents","point","touches","stopPropagation","initiated","moved","lastPointX","lastPointY","startTime","_handleMoveEvents","trigger","deltaX","deltaY","newX","newY","_pos","snapOption","_snapOption$easing","_nearestSnap","directionX","directionY","currentPage","scrollTo","wrapperHeight","clientHeight","scrollerHeight","maxScrollY","wrapperWidth","clientWidth","scrollerWidth","maxScrollX","eventOperation","_handleDOMEvents","_handleOptions","_events","_initExtFeatures","_watchTransition","_initDOMObserver","_handleAutoBlur","_initSnap","_initScrollbar","_initPullUp","_initPullDown","_initWheel","_initMouseWheel","me","set","newVal","pointerEvents","pulling","activeElement","blur","MutationObserver","timer","observer","mutations","_shouldNotRefresh","immediateRefresh","deferredRefresh","mutation","config","attributes","childList","subtree","observe","disconnect","_checkDOMUpdate","outsideBoundaries","stopFromTransition","check","destroyed","scrollerRect","newWidth","newHeight","oldWidth","oldHeight","_resize","_transitionEnd","enabled","_onMouseWheel","wrapperRect","items","hasHorizontalScroll","hasVerticalScroll","endTime","wrapperOffset","resetPosition","_eventType","button","distX","distY","movingDirectionX","movingDirectionY","directionLocked","_transitionTime","stop","absStartX","absStartY","pointX","pointY","absDistX","absDistY","timestamp","_translate","scrollLeft","documentElement","pageXOffset","body","scrollTop","pageYOffset","pX","pY","_checkPullDown","_checkClick","flick","momentumX","momentumY","adjustTime","snapSpeed","preventClick","wheelWrapperClass","_offset","scrollToElement","resizeTimeout","_startProbe","probe","pos","getComputedPosition","probeTimer","_transitionProperty","indicators","_transitionTimingFunction","_i2","_options$wheel$rotate","deg","_i3","_animate","destX","destY","easingFn","step","destTime","isAnimating","animateTimer","scrollBy","offsetX","offsetY","nodeType","wheelItemClass","easeing","roundX","roundY","matrix","getComputedStyle","split","replace","once","magic","off","apply","count","events","len","eventsCopy","_event","loop","cloneNode","querySelectorAll","pages","stepX","stepY","cx","cy","initPage","_goToPage","snapThreshold","threshold","snapThresholdX","snapThresholdY","listenFlick","_children","posX","posY","goToPage","prev","getCurrentPage","_options$scrollbar","_options$scrollbar$fa","_options$scrollbar$in","_insertScrollBar","_removeScrollBars","_options$pullDownRefr","_options$pullDownRefr2","_options$pullDownRefr3","finishPullDown","pullupWatching","_watchPullUp","checkToEnd","_options$pullUpLoad$t","finishPullUp","_handleMouseWheelEvent","mouseWheelTimer","firstWheelOpreation","_options$mouseWheel","_options$mouseWheel$s","_options$mouseWheel$i","invert","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","detail","Version","__WEBPACK_IMPORTED_MODULE_0__range__","isLeapYear","getDays","endDay","UNIT_DAY","day","dateAnchor","dateData","yearData","monthData","cascadeMonthData","month","year","date","getFullYear","getMonth","getDate","_vm","_h","$createElement","_c","_self","attrs","directives","rawName","expression","staticClass","_v","color","ref","_l","esExports"],"mappings":"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","file":"vue-awesome-picker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"VueAwesomePicker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueAwesomePicker\"] = factory();\n\telse\n\t\troot[\"VueAwesomePicker\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"VueAwesomePicker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueAwesomePicker\"] = factory();\n\telse\n\t\troot[\"VueAwesomePicker\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_better_scroll__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__data_time_js__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__data_date_js__ = __webpack_require__(12);\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\nvar DATA_NORMAL = 'normal';\nvar DATA_CASCADE = 'cascade';\n\nvar TYPE_NORMAL = 'normal';\nvar TYPE_TIME = 'time';\nvar TYPE_DATE = 'date';\n\nvar TEXT_TITLE = '';\nvar TEXT_CONFIRM = '确定';\nvar TEXT_CANCEL = '取消';\n\nvar COLOR_TITLE = '#000000';\nvar COLOR_CONFIRM = '#42b983';\nvar COLOR_CANCEL = '#999999';\n\nvar EVENT_CONFIRM = 'confirm';\nvar EVENT_CANCEL = 'cancel';\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n  name: 'awesome-picker',\n  props: {\n    data: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    anchor: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    type: {\n      type: String,\n      default: TYPE_NORMAL\n    },\n    textTitle: {\n      type: String,\n      default: TEXT_TITLE\n    },\n    textConfirm: {\n      type: String,\n      default: TEXT_CONFIRM\n    },\n    textCancel: {\n      type: String,\n      default: TEXT_CANCEL\n    },\n    colorTitle: {\n      type: String,\n      default: COLOR_TITLE\n    },\n    colorConfirm: {\n      type: String,\n      default: COLOR_CONFIRM\n    },\n    colorCancel: {\n      type: String,\n      default: COLOR_CANCEL\n    },\n    swipeTime: {\n      type: Number,\n      default: 1800\n    }\n  },\n  data: function data() {\n    return {\n      display: false,\n      dataChange: false,\n      pickerData: this._dataGetter(),\n      pickerAnchor: this._anchorGetter(),\n      wheels: []\n    };\n  },\n\n  watch: {\n    data: function data() {\n      this._setPickerData();\n    }\n  },\n  computed: {\n    proxyData: function proxyData() {\n      return this._dataGetter();\n    },\n    proxyAnchor: function proxyAnchor() {\n      return this._anchorGetter();\n    },\n    dataType: function dataType() {\n      return !Array.isArray(this.proxyData[0]) ? DATA_CASCADE : DATA_NORMAL;\n    }\n  },\n  methods: {\n    _dataGetter: function _dataGetter() {\n      var data = null;\n      switch (this.type) {\n        case TYPE_TIME:\n          data = __WEBPACK_IMPORTED_MODULE_1__data_time_js__[\"a\" /* default */];break;\n        case TYPE_DATE:\n          data = __WEBPACK_IMPORTED_MODULE_2__data_date_js__[\"b\" /* dateData */];break;\n        case TYPE_NORMAL:\n        default:\n          data = this.data;break;\n      }\n      return [].concat(_toConsumableArray(data));\n    },\n    _anchorGetter: function _anchorGetter() {\n      var _this = this;\n\n      var anchor = [];\n      if (this.anchor.length) {\n        anchor = this.anchor;\n      } else {\n        switch (this.type) {\n          case TYPE_DATE:\n            anchor = __WEBPACK_IMPORTED_MODULE_2__data_date_js__[\"a\" /* dateAnchor */];break;\n          default:\n            anchor = this.anchor;break;\n        }\n      }\n\n      anchor = anchor.map(function (item, i) {\n        var index = 0;\n        if (item.index) {\n          index = item.index;\n        } else if (item.value) {\n          index = _this.pickerData && _this.pickerData[i] && _this.pickerData[i].indexOf(item.value) > -1 ? _this.pickerData[i].indexOf(item.value) : 0;\n        } else {\n          index = item;\n        }\n        return index;\n      });\n      return [].concat(_toConsumableArray(anchor));\n    },\n    show: function show() {\n      var _this2 = this;\n\n      this.display = true;\n      if (!this.wheels.length || this.dataChange) {\n        this.dataType === DATA_CASCADE && this._updatePickerData();\n        this.$nextTick(function () {\n          var wheelWrapper = _this2.$refs.wheelWrapper;\n          _this2.pickerData.forEach(function (item, index) {\n            _this2._createWheel(wheelWrapper, index).enable();\n          });\n          _this2._wheelToAnchor(_this2.proxyAnchor);\n\n          _this2.dataChange && _this2._destroyExtraWheels();\n          _this2.dataChange = false;\n        });\n      } else {\n        this.wheels.forEach(function (wheel) {\n          wheel.enable();\n        });\n      }\n    },\n    hide: function hide() {\n      this.wheels.forEach(function (wheel) {\n        wheel.disable();\n      });\n      this.display = false;\n    },\n    _createWheel: function _createWheel(wheelWrapper, i) {\n      var _this3 = this;\n\n      if (!this.wheels[i]) {\n        var wheel = this.wheels[i] = new __WEBPACK_IMPORTED_MODULE_0_better_scroll__[\"a\" /* default */](wheelWrapper.children[i], {\n          wheel: {\n            selectedIndex: 0,\n            rotate: 25\n          },\n          swipeTime: this.swipeTime\n        });\n        wheel.on('scrollEnd', function () {\n          _this3._cascadePickerChange(i);\n        });\n      } else {\n        this.wheels[i].refresh();\n      }\n      return this.wheels[i];\n    },\n    _cascadePickerChange: function _cascadePickerChange(i) {\n      if (this.dataType !== DATA_CASCADE) {\n        return;\n      }\n      var newIndex = this._getCurrentValue()[i].index;\n      if (newIndex !== this.pickerAnchor[i]) {\n        this.pickerAnchor.splice(i, 1, newIndex);\n        this._updatePickerData(i + 1);\n      }\n    },\n    _wheelToAnchor: function _wheelToAnchor(data) {\n      this.wheels.forEach(function (wheel, i) {\n        wheel.wheelTo(data[i] || 0);\n      });\n    },\n    _getCurrentValue: function _getCurrentValue() {\n      var _this4 = this;\n\n      var value = [];\n      this.wheels.forEach(function (wheel, i) {\n        var j = wheel.getSelectedIndex();\n        value.push({\n          index: j,\n          value: _this4.pickerData[i][j]\n        });\n      });\n      return value;\n    },\n    _setPickerData: function _setPickerData() {\n      var _this5 = this;\n\n      this.pickerData = this._dataGetter();\n      this.pickerAnchor = this._anchorGetter();\n      if (this.display) {\n        this.$nextTick(function () {\n          var wheelWrapper = _this5.$refs.wheelWrapper;\n          _this5.pickerData.forEach(function (item, i) {\n            _this5._createWheel(wheelWrapper, i);\n          });\n          _this5._wheelToAnchor(_this5.proxyAnchor);\n          _this5._destroyExtraWheels();\n        });\n      } else {\n        this.dataChange = true;\n      }\n    },\n    _destroyExtraWheels: function _destroyExtraWheels() {\n      var dataLength = this.pickerData.length;\n      if (dataLength < this.wheels.length) {\n        var extraWheels = this.wheels.splice(dataLength);\n        extraWheels.forEach(function (wheel) {\n          wheel.destroy();\n        });\n      }\n    },\n    _updatePickerData: function _updatePickerData() {\n      var _this6 = this;\n\n      var wheelIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n      var data = [].concat(_toConsumableArray(this.proxyData));\n      var i = 0;\n      while (data) {\n        if (i >= wheelIndex) {\n          (function () {\n            var wheelData = [];\n            data.forEach(function (item) {\n              wheelData.push(item.value);\n            });\n            _this6.pickerData[i] = wheelData;\n            _this6.pickerAnchor[i] = wheelIndex === 0 ? _this6.pickerAnchor[i] < data.length ? _this6.pickerAnchor[i] || 0 : 0 : _this6._reloadWheel(i, wheelData);\n          })();\n        }\n        data = data.length ? data[this.pickerAnchor[i]].children : null;\n        i++;\n      }\n      this.pickerData = this.pickerData.slice(0, i);\n    },\n    _reloadWheel: function _reloadWheel(index, data) {\n      var _this7 = this;\n\n      var wheelWrapper = this.$refs.wheelWrapper;\n      var scroll = wheelWrapper.children[index].querySelector('.wheel-scroll');\n      var wheel = this.wheels ? this.wheels[index] : false;\n      var dist = 0;\n      if (scroll && wheel) {\n        this.$set(this.pickerData, index, data);\n        this.pickerAnchor[index] = dist;\n        this.$nextTick(function () {\n          wheel = _this7._createWheel(wheelWrapper, index);\n          wheel.wheelTo(dist);\n        });\n      }\n      return dist;\n    },\n    confirm: function confirm() {\n      var isInTransition = this.wheels.some(function (wheel) {\n        return wheel.isInTransition;\n      });\n      if (isInTransition) {\n        return;\n      }\n      var selectedValues = this._getCurrentValue();\n      this.$emit(EVENT_CONFIRM, selectedValues);\n      this.hide();\n    },\n    cancel: function cancel() {\n      this.$emit(EVENT_CANCEL);\n      this.hide();\n    }\n  }\n});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (n, m) {\n  var polyfill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var unit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n\n  var arr = [];\n  for (var i = n; i <= m; i++) {\n    var value = (polyfill && i < 10 ? '0' + i : i) + unit;\n    arr.push(value);\n  }\n  return arr;\n});\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__vue_awesome_picker_vue__ = __webpack_require__(3);\n\nvar picker = {\n  install: function install(Vue) {\n    Vue.component(__WEBPACK_IMPORTED_MODULE_0__vue_awesome_picker_vue__[\"a\" /* default */].name, __WEBPACK_IMPORTED_MODULE_0__vue_awesome_picker_vue__[\"a\" /* default */]);\n  }\n};\nif (typeof window !== 'undefined' && window.Vue) {\n  window.Vue.use(picker);\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (picker);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_vue_awesome_picker_vue__ = __webpack_require__(0);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_171df494_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_vue_awesome_picker_vue__ = __webpack_require__(13);\nfunction injectStyle (ssrContext) {\n  __webpack_require__(4)\n}\nvar normalizeComponent = __webpack_require__(9)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-171df494\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n  __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_vue_awesome_picker_vue__[\"a\" /* default */],\n  __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_171df494_hasScoped_true_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_vue_awesome_picker_vue__[\"a\" /* default */],\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(5);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(7)(\"3d9c1580\", content, true, {});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(6)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".fade-enter[data-v-171df494],.fade-leave-to[data-v-171df494]{opacity:0}.fade-enter-active[data-v-171df494],.fade-leave-active[data-v-171df494]{transition:all .3s ease}.slide-enter[data-v-171df494],.slide-leave-to[data-v-171df494]{opacity:.5;transform:translate3d(0,270px,0)}.slide-enter-active[data-v-171df494],.slide-leave-active[data-v-171df494]{transition:all .3s ease}.mask[data-v-171df494]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:rgba(0,0,0,.2)}.picker[data-v-171df494]{position:fixed;left:0;right:0;bottom:0;height:270px;z-index:10000;background:#fff}.picker-title[data-v-171df494]{position:relative;height:44px;color:#333}.picker-title[data-v-171df494]:after{content:\\\"\\\";display:block;border-bottom:1px solid #ebebeb;left:0;right:0;transform:scaleY(.5)}.picker-title span[data-v-171df494]{position:absolute;height:44px;line-height:44px;padding:0 12px;font-size:14px}.picker-title .pt-cancel[data-v-171df494]{left:0;color:#999}.picker-title .pt-submit[data-v-171df494]{right:0;color:#42b983}.picker-title h4[data-v-171df494]{margin:0;font-size:16px;font-weight:400;height:44px;line-height:44px;text-align:center}.picker-panel[data-v-171df494]{position:relative;height:226px;padding:24px 12px;box-sizing:border-box}.picker-panel .picker-mask-bottom[data-v-171df494],.picker-panel .picker-mask-top[data-v-171df494]{position:absolute;left:0;right:0;height:72px;background:#fff;transform:translateZ(0);z-index:1;pointer-events:none}.picker-panel .picker-mask-top[data-v-171df494]{top:24px;background:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.5))}.picker-panel .picker-mask-top[data-v-171df494]:after{content:\\\"\\\";display:block;position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid #ebebeb;transform:scaleY(.5)}.picker-panel .picker-mask-bottom[data-v-171df494]{bottom:24px;background:linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.5))}.picker-panel .picker-mask-bottom[data-v-171df494]:before{content:\\\"\\\";display:block;position:absolute;left:0;right:0;top:0;border-bottom:1px solid #ebebeb;transform:scaleY(.5)}.picker-wheel-wrapper[data-v-171df494]{display:flex;align-items:stretch;height:100%}.picker-wheel-wrapper .picker-wheel[data-v-171df494]{flex:1;overflow:hidden}.picker-wheel-wrapper .wheel-scroll[data-v-171df494]{margin-top:72px}.picker-wheel-wrapper .wheel-scroll .wheel-item[data-v-171df494]{height:34px;line-height:34px;font-size:17px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\nvar listToStyles = __webpack_require__(8)\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n  rawScriptExports,\n  compiledTemplate,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier /* server only */\n) {\n  var esModule\n  var scriptExports = rawScriptExports = rawScriptExports || {}\n\n  // ES6 modules interop\n  var type = typeof rawScriptExports.default\n  if (type === 'object' || type === 'function') {\n    esModule = rawScriptExports\n    scriptExports = rawScriptExports.default\n  }\n\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (compiledTemplate) {\n    options.render = compiledTemplate.render\n    options.staticRenderFns = compiledTemplate.staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = injectStyles\n  }\n\n  if (hook) {\n    var functional = options.functional\n    var existing = functional\n      ? options.render\n      : options.beforeCreate\n\n    if (!functional) {\n      // inject component registration as beforeCreate hook\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    } else {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return existing(h, context)\n      }\n    }\n  }\n\n  return {\n    esModule: esModule,\n    exports: scriptExports,\n    options: options\n  }\n}\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/*!\n * better-normal-scroll v1.8.4\n * (c) 2016-2018 ustbhuangyi\n * Released under the MIT License.\n */\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\nfunction eventMixin(BScroll) {\n  BScroll.prototype.on = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    if (!this._events[type]) {\n      this._events[type] = [];\n    }\n\n    this._events[type].push([fn, context]);\n  };\n\n  BScroll.prototype.once = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    function magic() {\n      this.off(type, magic);\n\n      fn.apply(context, arguments);\n    }\n    // To expose the corresponding function method in order to execute the off method\n    magic.fn = fn;\n\n    this.on(type, magic);\n  };\n\n  BScroll.prototype.off = function (type, fn) {\n    var _events = this._events[type];\n    if (!_events) {\n      return;\n    }\n\n    var count = _events.length;\n    while (count--) {\n      if (_events[count][0] === fn || _events[count][0] && _events[count][0].fn === fn) {\n        _events[count][0] = undefined;\n      }\n    }\n  };\n\n  BScroll.prototype.trigger = function (type) {\n    var events = this._events[type];\n    if (!events) {\n      return;\n    }\n\n    var len = events.length;\n    var eventsCopy = [].concat(toConsumableArray(events));\n    for (var i = 0; i < len; i++) {\n      var event = eventsCopy[i];\n\n      var _event = slicedToArray(event, 2),\n          fn = _event[0],\n          context = _event[1];\n\n      if (fn) {\n        fn.apply(context, [].slice.call(arguments, 1));\n      }\n    }\n  };\n}\n\n// ssr support\nvar inBrowser = typeof window !== 'undefined';\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\nvar isWeChatDevTools = ua && /wechatdevtools/.test(ua);\nvar isAndroid = ua && ua.indexOf('android') > 0;\n\nfunction getNow() {\n  return window.performance && window.performance.now ? window.performance.now() + window.performance.timing.navigationStart : +new Date();\n}\n\nfunction extend(target) {\n  for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  for (var i = 0; i < rest.length; i++) {\n    var source = rest[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nfunction isUndef(v) {\n  return v === undefined || v === null;\n}\n\nvar elementStyle = inBrowser && document.createElement('div').style;\n\nvar vendor = function () {\n  if (!inBrowser) {\n    return false;\n  }\n  var transformNames = {\n    webkit: 'webkitTransform',\n    Moz: 'MozTransform',\n    O: 'OTransform',\n    ms: 'msTransform',\n    standard: 'transform'\n  };\n\n  for (var key in transformNames) {\n    if (elementStyle[transformNames[key]] !== undefined) {\n      return key;\n    }\n  }\n\n  return false;\n}();\n\nfunction prefixStyle(style) {\n  if (vendor === false) {\n    return false;\n  }\n\n  if (vendor === 'standard') {\n    if (style === 'transitionEnd') {\n      return 'transitionend';\n    }\n    return style;\n  }\n\n  return vendor + style.charAt(0).toUpperCase() + style.substr(1);\n}\n\nfunction addEvent(el, type, fn, capture) {\n  el.addEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction removeEvent(el, type, fn, capture) {\n  el.removeEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction offset(el) {\n  var left = 0;\n  var top = 0;\n\n  while (el) {\n    left -= el.offsetLeft;\n    top -= el.offsetTop;\n    el = el.offsetParent;\n  }\n\n  return {\n    left: left,\n    top: top\n  };\n}\n\nvar transform = prefixStyle('transform');\n\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\n// fix issue #361\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\nvar hasTransform = transform !== false;\nvar hasTransition = inBrowser && prefixStyle('transition') in elementStyle;\n\nvar style = {\n  transform: transform,\n  transitionTimingFunction: prefixStyle('transitionTimingFunction'),\n  transitionDuration: prefixStyle('transitionDuration'),\n  transitionProperty: prefixStyle('transitionProperty'),\n  transitionDelay: prefixStyle('transitionDelay'),\n  transformOrigin: prefixStyle('transformOrigin'),\n  transitionEnd: prefixStyle('transitionEnd')\n};\n\nvar TOUCH_EVENT = 1;\nvar MOUSE_EVENT = 2;\n\nvar eventType = {\n  touchstart: TOUCH_EVENT,\n  touchmove: TOUCH_EVENT,\n  touchend: TOUCH_EVENT,\n\n  mousedown: MOUSE_EVENT,\n  mousemove: MOUSE_EVENT,\n  mouseup: MOUSE_EVENT\n};\n\nfunction getRect(el) {\n  if (el instanceof window.SVGElement) {\n    var rect = el.getBoundingClientRect();\n    return {\n      top: rect.top,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  } else {\n    return {\n      top: el.offsetTop,\n      left: el.offsetLeft,\n      width: el.offsetWidth,\n      height: el.offsetHeight\n    };\n  }\n}\n\nfunction preventDefaultException(el, exceptions) {\n  for (var i in exceptions) {\n    if (exceptions[i].test(el[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction tap(e, eventName) {\n  var ev = document.createEvent('Event');\n  ev.initEvent(eventName, true, true);\n  ev.pageX = e.pageX;\n  ev.pageY = e.pageY;\n  e.target.dispatchEvent(ev);\n}\n\nfunction click(e) {\n  var eventSource = void 0;\n  if (e.type === 'mouseup' || e.type === 'mousecancel') {\n    eventSource = e;\n  } else if (e.type === 'touchend' || e.type === 'touchcancel') {\n    eventSource = e.changedTouches[0];\n  }\n  var posSrc = {};\n  if (eventSource) {\n    posSrc.screenX = eventSource.screenX || 0;\n    posSrc.screenY = eventSource.screenY || 0;\n    posSrc.clientX = eventSource.clientX || 0;\n    posSrc.clientY = eventSource.clientY || 0;\n  }\n  var ev = void 0;\n  var event = 'click';\n  var bubbles = true;\n  var cancelable = true;\n  if (typeof MouseEvent !== 'undefined') {\n    try {\n      ev = new MouseEvent(event, extend({\n        bubbles: bubbles,\n        cancelable: cancelable\n      }, posSrc));\n    } catch (e) {\n      createEvent();\n    }\n  } else {\n    createEvent();\n  }\n\n  function createEvent() {\n    ev = document.createEvent('Event');\n    ev.initEvent(event, bubbles, cancelable);\n    extend(ev, posSrc);\n  }\n\n  // forwardedTouchEvent set to true in case of the conflict with fastclick\n  ev.forwardedTouchEvent = true;\n  ev._constructed = true;\n  e.target.dispatchEvent(ev);\n}\n\nfunction prepend(el, target) {\n  if (target.firstChild) {\n    before(el, target.firstChild);\n  } else {\n    target.appendChild(el);\n  }\n}\n\nfunction before(el, target) {\n  target.parentNode.insertBefore(el, target);\n}\n\nfunction removeChild(el, child) {\n  el.removeChild(child);\n}\n\nvar DEFAULT_OPTIONS = {\n  startX: 0,\n  startY: 0,\n  scrollX: false,\n  scrollY: true,\n  freeScroll: false,\n  directionLockThreshold: 5,\n  eventPassthrough: '',\n  click: false,\n  tap: false,\n  bounce: true,\n  bounceTime: 800,\n  momentum: true,\n  momentumLimitTime: 300,\n  momentumLimitDistance: 15,\n  swipeTime: 2500,\n  swipeBounceTime: 500,\n  deceleration: 0.001,\n  flickLimitTime: 200,\n  flickLimitDistance: 100,\n  resizePolling: 60,\n  probeType: 0,\n  preventDefault: true,\n  preventDefaultException: {\n    tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/\n  },\n  HWCompositing: true,\n  useTransition: true,\n  useTransform: true,\n  bindToWrapper: false,\n  disableMouse: hasTouch,\n  disableTouch: !hasTouch,\n  observeDOM: true,\n  autoBlur: true,\n  /**\n   * for picker\n   * wheel: {\n   *   selectedIndex: 0,\n   *   rotate: 25,\n   *   adjustTime: 400\n   *   wheelWrapperClass: 'wheel-scroll',\n   *   wheelItemClass: 'wheel-item'\n   * }\n   */\n  wheel: false,\n  /**\n   * for slide\n   * snap: {\n   *   loop: false,\n   *   el: domEl,\n   *   threshold: 0.1,\n   *   stepX: 100,\n   *   stepY: 100,\n   *   speed: 400,\n   *   easing: {\n   *     style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n   *     fn: function (t) {\n   *       return t * (2 - t)\n   *     }\n   *   }\n   *   listenFlick: true\n   * }\n   */\n  snap: false,\n  /**\n   * for scrollbar\n   * scrollbar: {\n   *   fade: true,\n   *   interactive: false\n   * }\n   */\n  scrollbar: false,\n  /**\n   * for pull down and refresh\n   * pullDownRefresh: {\n   *   threshold: 50,\n   *   stop: 20\n   * }\n   */\n  pullDownRefresh: false,\n  /**\n   * for pull up and load\n   * pullUpLoad: {\n   *   threshold: 50\n   * }\n   */\n  pullUpLoad: false,\n  /**\n   * for mouse wheel\n   * mouseWheel:{\n   *   speed: 20,\n   *   invert: false\n   * }\n   */\n  mouseWheel: false\n};\n\nfunction initMixin(BScroll) {\n  BScroll.prototype._init = function (el, options) {\n    this._handleOptions(options);\n\n    // init private custom events\n    this._events = {};\n\n    this.x = 0;\n    this.y = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n\n    this._addDOMEvents();\n\n    this._initExtFeatures();\n\n    this._watchTransition();\n\n    if (this.options.observeDOM) {\n      this._initDOMObserver();\n    }\n\n    if (this.options.autoBlur) {\n      this._handleAutoBlur();\n    }\n\n    this.refresh();\n\n    if (!this.options.snap) {\n      this.scrollTo(this.options.startX, this.options.startY);\n    }\n\n    this.enable();\n  };\n\n  BScroll.prototype._handleOptions = function (options) {\n    this.options = extend({}, DEFAULT_OPTIONS, options);\n\n    this.translateZ = this.options.HWCompositing && hasPerspective ? ' translateZ(0)' : '';\n\n    this.options.useTransition = this.options.useTransition && hasTransition;\n    this.options.useTransform = this.options.useTransform && hasTransform;\n\n    this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n    // If you want eventPassthrough I have to lock one of the axes\n    this.options.scrollX = this.options.eventPassthrough === 'horizontal' ? false : this.options.scrollX;\n    this.options.scrollY = this.options.eventPassthrough === 'vertical' ? false : this.options.scrollY;\n\n    // With eventPassthrough we also need lockDirection mechanism\n    this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n    this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n    if (this.options.tap === true) {\n      this.options.tap = 'tap';\n    }\n  };\n\n  BScroll.prototype._addDOMEvents = function () {\n    var eventOperation = addEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._removeDOMEvents = function () {\n    var eventOperation = removeEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._handleDOMEvents = function (eventOperation) {\n    var target = this.options.bindToWrapper ? this.wrapper : window;\n    eventOperation(window, 'orientationchange', this);\n    eventOperation(window, 'resize', this);\n\n    if (this.options.click) {\n      eventOperation(this.wrapper, 'click', this, true);\n    }\n\n    if (!this.options.disableMouse) {\n      eventOperation(this.wrapper, 'mousedown', this);\n      eventOperation(target, 'mousemove', this);\n      eventOperation(target, 'mousecancel', this);\n      eventOperation(target, 'mouseup', this);\n    }\n\n    if (hasTouch && !this.options.disableTouch) {\n      eventOperation(this.wrapper, 'touchstart', this);\n      eventOperation(target, 'touchmove', this);\n      eventOperation(target, 'touchcancel', this);\n      eventOperation(target, 'touchend', this);\n    }\n\n    eventOperation(this.scroller, style.transitionEnd, this);\n  };\n\n  BScroll.prototype._initExtFeatures = function () {\n    if (this.options.snap) {\n      this._initSnap();\n    }\n    if (this.options.scrollbar) {\n      this._initScrollbar();\n    }\n    if (this.options.pullUpLoad) {\n      this._initPullUp();\n    }\n    if (this.options.pullDownRefresh) {\n      this._initPullDown();\n    }\n    if (this.options.wheel) {\n      this._initWheel();\n    }\n    if (this.options.mouseWheel) {\n      this._initMouseWheel();\n    }\n  };\n\n  BScroll.prototype._watchTransition = function () {\n    if (typeof Object.defineProperty !== 'function') {\n      return;\n    }\n    var me = this;\n    var isInTransition = false;\n    Object.defineProperty(this, 'isInTransition', {\n      get: function get() {\n        return isInTransition;\n      },\n      set: function set(newVal) {\n        isInTransition = newVal;\n        // fix issue #359\n        var el = me.scroller.children.length ? me.scroller.children : [me.scroller];\n        var pointerEvents = isInTransition && !me.pulling ? 'none' : 'auto';\n        for (var i = 0; i < el.length; i++) {\n          el[i].style.pointerEvents = pointerEvents;\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._handleAutoBlur = function () {\n    this.on('beforeScrollStart', function () {\n      var activeElement = document.activeElement;\n      if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA')) {\n        activeElement.blur();\n      }\n    });\n  };\n\n  BScroll.prototype._initDOMObserver = function () {\n    var _this = this;\n\n    if (typeof MutationObserver !== 'undefined') {\n      var timer = void 0;\n      var observer = new MutationObserver(function (mutations) {\n        // don't do any refresh during the transition, or outside of the boundaries\n        if (_this._shouldNotRefresh()) {\n          return;\n        }\n        var immediateRefresh = false;\n        var deferredRefresh = false;\n        for (var i = 0; i < mutations.length; i++) {\n          var mutation = mutations[i];\n          if (mutation.type !== 'attributes') {\n            immediateRefresh = true;\n            break;\n          } else {\n            if (mutation.target !== _this.scroller) {\n              deferredRefresh = true;\n              break;\n            }\n          }\n        }\n        if (immediateRefresh) {\n          _this.refresh();\n        } else if (deferredRefresh) {\n          // attributes changes too often\n          clearTimeout(timer);\n          timer = setTimeout(function () {\n            if (!_this._shouldNotRefresh()) {\n              _this.refresh();\n            }\n          }, 60);\n        }\n      });\n      var config = {\n        attributes: true,\n        childList: true,\n        subtree: true\n      };\n      observer.observe(this.scroller, config);\n\n      this.on('destroy', function () {\n        observer.disconnect();\n      });\n    } else {\n      this._checkDOMUpdate();\n    }\n  };\n\n  BScroll.prototype._shouldNotRefresh = function () {\n    var outsideBoundaries = this.x > 0 || this.x < this.maxScrollX || this.y > 0 || this.y < this.maxScrollY;\n\n    return this.isInTransition || this.stopFromTransition || outsideBoundaries;\n  };\n\n  BScroll.prototype._checkDOMUpdate = function () {\n    var scrollerRect = getRect(this.scroller);\n    var oldWidth = scrollerRect.width;\n    var oldHeight = scrollerRect.height;\n\n    function check() {\n      if (this.destroyed) {\n        return;\n      }\n      scrollerRect = getRect(this.scroller);\n      var newWidth = scrollerRect.width;\n      var newHeight = scrollerRect.height;\n\n      if (oldWidth !== newWidth || oldHeight !== newHeight) {\n        this.refresh();\n      }\n      oldWidth = newWidth;\n      oldHeight = newHeight;\n\n      next.call(this);\n    }\n\n    function next() {\n      var _this2 = this;\n\n      setTimeout(function () {\n        check.call(_this2);\n      }, 1000);\n    }\n\n    next.call(this);\n  };\n\n  BScroll.prototype.handleEvent = function (e) {\n    switch (e.type) {\n      case 'touchstart':\n      case 'mousedown':\n        this._start(e);\n        break;\n      case 'touchmove':\n      case 'mousemove':\n        this._move(e);\n        break;\n      case 'touchend':\n      case 'mouseup':\n      case 'touchcancel':\n      case 'mousecancel':\n        this._end(e);\n        break;\n      case 'orientationchange':\n      case 'resize':\n        this._resize();\n        break;\n      case 'transitionend':\n      case 'webkitTransitionEnd':\n      case 'oTransitionEnd':\n      case 'MSTransitionEnd':\n        this._transitionEnd(e);\n        break;\n      case 'click':\n        if (this.enabled && !e._constructed) {\n          if (!preventDefaultException(e.target, this.options.preventDefaultException)) {\n            e.preventDefault();\n            e.stopPropagation();\n          }\n        }\n        break;\n      case 'wheel':\n      case 'DOMMouseScroll':\n      case 'mousewheel':\n        this._onMouseWheel(e);\n        break;\n    }\n  };\n\n  BScroll.prototype.refresh = function () {\n    var wrapperRect = getRect(this.wrapper);\n    this.wrapperWidth = wrapperRect.width;\n    this.wrapperHeight = wrapperRect.height;\n\n    var scrollerRect = getRect(this.scroller);\n    this.scrollerWidth = scrollerRect.width;\n    this.scrollerHeight = scrollerRect.height;\n\n    var wheel = this.options.wheel;\n    if (wheel) {\n      this.items = this.scroller.children;\n      this.options.itemHeight = this.itemHeight = this.items.length ? this.scrollerHeight / this.items.length : 0;\n      if (this.selectedIndex === undefined) {\n        this.selectedIndex = wheel.selectedIndex || 0;\n      }\n      this.options.startY = -this.selectedIndex * this.itemHeight;\n      this.maxScrollX = 0;\n      this.maxScrollY = -this.itemHeight * (this.items.length - 1);\n    } else {\n      this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n      this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n    }\n\n    this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;\n    this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;\n\n    if (!this.hasHorizontalScroll) {\n      this.maxScrollX = 0;\n      this.scrollerWidth = this.wrapperWidth;\n    }\n\n    if (!this.hasVerticalScroll) {\n      this.maxScrollY = 0;\n      this.scrollerHeight = this.wrapperHeight;\n    }\n\n    this.endTime = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.wrapperOffset = offset(this.wrapper);\n\n    this.trigger('refresh');\n\n    this.resetPosition();\n  };\n\n  BScroll.prototype.enable = function () {\n    this.enabled = true;\n  };\n\n  BScroll.prototype.disable = function () {\n    this.enabled = false;\n  };\n}\n\nvar ease = {\n\t// easeOutQuint\n\tswipe: {\n\t\tstyle: 'cubic-bezier(0.23, 1, 0.32, 1)',\n\t\tfn: function fn(t) {\n\t\t\treturn 1 + --t * t * t * t * t;\n\t\t}\n\t},\n\t// easeOutQuard\n\tswipeBounce: {\n\t\tstyle: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n\t\tfn: function fn(t) {\n\t\t\treturn t * (2 - t);\n\t\t}\n\t},\n\t// easeOutQuart\n\tbounce: {\n\t\tstyle: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n\t\tfn: function fn(t) {\n\t\t\treturn 1 - --t * t * t * t;\n\t\t}\n\t}\n};\n\nfunction momentum(current, start, time, lowerMargin, wrapperSize, options) {\n  var distance = current - start;\n  var speed = Math.abs(distance) / time;\n\n  var deceleration = options.deceleration,\n      itemHeight = options.itemHeight,\n      swipeBounceTime = options.swipeBounceTime,\n      wheel = options.wheel,\n      swipeTime = options.swipeTime;\n\n  var duration = swipeTime;\n  var rate = wheel ? 4 : 15;\n\n  var destination = current + speed / deceleration * (distance < 0 ? -1 : 1);\n\n  if (wheel && itemHeight) {\n    destination = Math.round(destination / itemHeight) * itemHeight;\n  }\n\n  if (destination < lowerMargin) {\n    destination = wrapperSize ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - wrapperSize / rate * speed) : lowerMargin;\n    duration = swipeBounceTime;\n  } else if (destination > 0) {\n    destination = wrapperSize ? Math.min(wrapperSize / 4, wrapperSize / rate * speed) : 0;\n    duration = swipeBounceTime;\n  }\n\n  return {\n    destination: Math.round(destination),\n    duration: duration\n  };\n}\n\nvar DEFAULT_INTERVAL = 100 / 60;\n\nfunction noop() {}\n\nvar requestAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||\n  // if all else fails, use setTimeout\n  function (callback) {\n    return window.setTimeout(callback, (callback.interval || DEFAULT_INTERVAL) / 2); // make interval as precise as possible.\n  };\n}();\n\nvar cancelAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || function (id) {\n    window.clearTimeout(id);\n  };\n}();\n\nvar DIRECTION_UP = 1;\nvar DIRECTION_DOWN = -1;\nvar DIRECTION_LEFT = 1;\nvar DIRECTION_RIGHT = -1;\n\nfunction warn(msg) {\n  console.error('[BScroll warn]: ' + msg);\n}\n\nfunction assert(condition, msg) {\n  if (!condition) {\n    throw new Error('[BScroll] ' + msg);\n  }\n}\n\nfunction coreMixin(BScroll) {\n  BScroll.prototype._start = function (e) {\n    var _eventType = eventType[e.type];\n    if (_eventType !== TOUCH_EVENT) {\n      if (e.button !== 0) {\n        return;\n      }\n    }\n    if (!this.enabled || this.destroyed || this.initiated && this.initiated !== _eventType) {\n      return;\n    }\n    this.initiated = _eventType;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n\n    this.moved = false;\n    this.distX = 0;\n    this.distY = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.movingDirectionX = 0;\n    this.movingDirectionY = 0;\n    this.directionLocked = 0;\n\n    this._transitionTime();\n    this.startTime = getNow();\n\n    if (this.options.wheel) {\n      this.target = e.target;\n    }\n\n    this.stop();\n\n    var point = e.touches ? e.touches[0] : e;\n\n    this.startX = this.x;\n    this.startY = this.y;\n    this.absStartX = this.x;\n    this.absStartY = this.y;\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.trigger('beforeScrollStart');\n  };\n\n  BScroll.prototype._move = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n\n    if (this.options.preventDefault) {\n      e.preventDefault();\n    }\n\n    var point = e.touches ? e.touches[0] : e;\n    var deltaX = point.pageX - this.pointX;\n    var deltaY = point.pageY - this.pointY;\n\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.distX += deltaX;\n    this.distY += deltaY;\n\n    var absDistX = Math.abs(this.distX);\n    var absDistY = Math.abs(this.distY);\n\n    var timestamp = getNow();\n\n    // We need to move at least momentumLimitDistance pixels for the scrolling to initiate\n    if (timestamp - this.endTime > this.options.momentumLimitTime && absDistY < this.options.momentumLimitDistance && absDistX < this.options.momentumLimitDistance) {\n      return;\n    }\n\n    // If you are scrolling in one direction lock the other\n    if (!this.directionLocked && !this.options.freeScroll) {\n      if (absDistX > absDistY + this.options.directionLockThreshold) {\n        this.directionLocked = 'h'; // lock horizontally\n      } else if (absDistY >= absDistX + this.options.directionLockThreshold) {\n        this.directionLocked = 'v'; // lock vertically\n      } else {\n        this.directionLocked = 'n'; // no lock\n      }\n    }\n\n    if (this.directionLocked === 'h') {\n      if (this.options.eventPassthrough === 'vertical') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'horizontal') {\n        this.initiated = false;\n        return;\n      }\n      deltaY = 0;\n    } else if (this.directionLocked === 'v') {\n      if (this.options.eventPassthrough === 'horizontal') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'vertical') {\n        this.initiated = false;\n        return;\n      }\n      deltaX = 0;\n    }\n\n    deltaX = this.hasHorizontalScroll ? deltaX : 0;\n    deltaY = this.hasVerticalScroll ? deltaY : 0;\n    this.movingDirectionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.movingDirectionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    var newX = this.x + deltaX;\n    var newY = this.y + deltaY;\n\n    // Slow down or stop if outside of the boundaries\n    if (newX > 0 || newX < this.maxScrollX) {\n      if (this.options.bounce) {\n        newX = this.x + deltaX / 3;\n      } else {\n        newX = newX > 0 ? 0 : this.maxScrollX;\n      }\n    }\n    if (newY > 0 || newY < this.maxScrollY) {\n      if (this.options.bounce) {\n        newY = this.y + deltaY / 3;\n      } else {\n        newY = newY > 0 ? 0 : this.maxScrollY;\n      }\n    }\n\n    if (!this.moved) {\n      this.moved = true;\n      this.trigger('scrollStart');\n    }\n\n    this._translate(newX, newY);\n\n    if (timestamp - this.startTime > this.options.momentumLimitTime) {\n      this.startTime = timestamp;\n      this.startX = this.x;\n      this.startY = this.y;\n\n      if (this.options.probeType === 1) {\n        this.trigger('scroll', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n\n    if (this.options.probeType > 1) {\n      this.trigger('scroll', {\n        x: this.x,\n        y: this.y\n      });\n    }\n\n    var scrollLeft = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;\n    var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n\n    var pX = this.pointX - scrollLeft;\n    var pY = this.pointY - scrollTop;\n\n    if (pX > document.documentElement.clientWidth - this.options.momentumLimitDistance || pX < this.options.momentumLimitDistance || pY < this.options.momentumLimitDistance || pY > document.documentElement.clientHeight - this.options.momentumLimitDistance) {\n      this._end(e);\n    }\n  };\n\n  BScroll.prototype._end = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n    this.initiated = false;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n\n    this.trigger('touchEnd', {\n      x: this.x,\n      y: this.y\n    });\n\n    this.isInTransition = false;\n\n    // ensures that the last position is rounded\n    var newX = Math.round(this.x);\n    var newY = Math.round(this.y);\n\n    var deltaX = newX - this.absStartX;\n    var deltaY = newY - this.absStartY;\n    this.directionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.directionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    // if configure pull down refresh, check it first\n    if (this.options.pullDownRefresh && this._checkPullDown()) {\n      return;\n    }\n\n    // check if it is a click operation\n    if (this._checkClick(e)) {\n      this.trigger('scrollCancel');\n      return;\n    }\n\n    // reset if we are outside of the boundaries\n    if (this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      return;\n    }\n\n    this.scrollTo(newX, newY);\n\n    this.endTime = getNow();\n    var duration = this.endTime - this.startTime;\n    var absDistX = Math.abs(newX - this.startX);\n    var absDistY = Math.abs(newY - this.startY);\n\n    // flick\n    if (this._events.flick && duration < this.options.flickLimitTime && absDistX < this.options.flickLimitDistance && absDistY < this.options.flickLimitDistance) {\n      this.trigger('flick');\n      return;\n    }\n\n    var time = 0;\n    // start momentum animation if needed\n    if (this.options.momentum && duration < this.options.momentumLimitTime && (absDistY > this.options.momentumLimitDistance || absDistX > this.options.momentumLimitDistance)) {\n      var momentumX = this.hasHorizontalScroll ? momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options) : { destination: newX, duration: 0 };\n      var momentumY = this.hasVerticalScroll ? momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options) : { destination: newY, duration: 0 };\n      newX = momentumX.destination;\n      newY = momentumY.destination;\n      time = Math.max(momentumX.duration, momentumY.duration);\n      this.isInTransition = true;\n    } else {\n      if (this.options.wheel) {\n        newY = Math.round(newY / this.itemHeight) * this.itemHeight;\n        time = this.options.wheel.adjustTime || 400;\n      }\n    }\n\n    var easing = ease.swipe;\n    if (this.options.snap) {\n      var snap = this._nearestSnap(newX, newY);\n      this.currentPage = snap;\n      time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(newX - snap.x), 1000), Math.min(Math.abs(newY - snap.y), 1000)), 300);\n      newX = snap.x;\n      newY = snap.y;\n\n      this.directionX = 0;\n      this.directionY = 0;\n      easing = this.options.snap.easing || ease.bounce;\n    }\n\n    if (newX !== this.x || newY !== this.y) {\n      // change easing function when scroller goes out of the boundaries\n      if (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) {\n        easing = ease.swipeBounce;\n      }\n      this.scrollTo(newX, newY, time, easing);\n      return;\n    }\n\n    if (this.options.wheel) {\n      this.selectedIndex = Math.round(Math.abs(this.y / this.itemHeight));\n    }\n    this.trigger('scrollEnd', {\n      x: this.x,\n      y: this.y\n    });\n  };\n\n  BScroll.prototype._checkClick = function (e) {\n    // when in the process of pulling down, it should not prevent click\n    var preventClick = this.stopFromTransition && !this.pulling;\n    this.stopFromTransition = false;\n\n    // we scrolled less than 15 pixels\n    if (!this.moved) {\n      if (this.options.wheel) {\n        if (this.target && this.target.className === this.options.wheel.wheelWrapperClass) {\n          var index = Math.abs(Math.round(this.y / this.itemHeight));\n          var _offset = Math.round((this.pointY + offset(this.target).top - this.itemHeight / 2) / this.itemHeight);\n          this.target = this.items[index + _offset];\n        }\n        this.scrollToElement(this.target, this.options.wheel.adjustTime || 400, true, true, ease.swipe);\n        return true;\n      } else {\n        if (!preventClick) {\n          if (this.options.tap) {\n            tap(e, this.options.tap);\n          }\n\n          if (this.options.click && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n            click(e);\n          }\n          return true;\n        }\n        return false;\n      }\n    }\n    return false;\n  };\n\n  BScroll.prototype._resize = function () {\n    var _this = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    // fix a scroll problem under Android condition\n    if (isAndroid) {\n      this.wrapper.scrollTop = 0;\n    }\n    clearTimeout(this.resizeTimeout);\n    this.resizeTimeout = setTimeout(function () {\n      _this.refresh();\n    }, this.options.resizePolling);\n  };\n\n  BScroll.prototype._startProbe = function () {\n    cancelAnimationFrame(this.probeTimer);\n    this.probeTimer = requestAnimationFrame(probe);\n\n    var me = this;\n\n    function probe() {\n      var pos = me.getComputedPosition();\n      me.trigger('scroll', pos);\n      if (!me.isInTransition) {\n        me.trigger('scrollEnd', pos);\n        return;\n      }\n      me.probeTimer = requestAnimationFrame(probe);\n    }\n  };\n\n  BScroll.prototype._transitionProperty = function () {\n    var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n    this.scrollerStyle[style.transitionProperty] = property;\n  };\n\n  BScroll.prototype._transitionTime = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    this.scrollerStyle[style.transitionDuration] = time + 'ms';\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionDuration] = time + 'ms';\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i = 0; _i < this.indicators.length; _i++) {\n        this.indicators[_i].transitionTime(time);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionTimingFunction = function (easing) {\n    this.scrollerStyle[style.transitionTimingFunction] = easing;\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionTimingFunction] = easing;\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i2 = 0; _i2 < this.indicators.length; _i2++) {\n        this.indicators[_i2].transitionTimingFunction(easing);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionEnd = function (e) {\n    if (e.target !== this.scroller || !this.isInTransition) {\n      return;\n    }\n\n    this._transitionTime();\n    if (!this.pulling && !this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      this.isInTransition = false;\n      if (this.options.probeType !== 3) {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n  };\n\n  BScroll.prototype._translate = function (x, y) {\n    assert(!isUndef(x) && !isUndef(y), 'Oops! translate x or y is null or undefined. please check your code.');\n    if (this.options.useTransform) {\n      this.scrollerStyle[style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n    } else {\n      x = Math.round(x);\n      y = Math.round(y);\n      this.scrollerStyle.left = x + 'px';\n      this.scrollerStyle.top = y + 'px';\n    }\n\n    if (this.options.wheel) {\n      var _options$wheel$rotate = this.options.wheel.rotate,\n          rotate = _options$wheel$rotate === undefined ? 25 : _options$wheel$rotate;\n\n      for (var i = 0; i < this.items.length; i++) {\n        var deg = rotate * (y / this.itemHeight + i);\n        this.items[i].style[style.transform] = 'rotateX(' + deg + 'deg)';\n      }\n    }\n\n    this.x = x;\n    this.y = y;\n\n    if (this.indicators) {\n      for (var _i3 = 0; _i3 < this.indicators.length; _i3++) {\n        this.indicators[_i3].updatePosition();\n      }\n    }\n  };\n\n  BScroll.prototype._animate = function (destX, destY, duration, easingFn) {\n    var me = this;\n    var startX = this.x;\n    var startY = this.y;\n    var startTime = getNow();\n    var destTime = startTime + duration;\n\n    function step() {\n      var now = getNow();\n\n      if (now >= destTime) {\n        me.isAnimating = false;\n        me._translate(destX, destY);\n\n        if (!me.pulling && !me.resetPosition(me.options.bounceTime)) {\n          me.trigger('scrollEnd', {\n            x: me.x,\n            y: me.y\n          });\n        }\n        return;\n      }\n      now = (now - startTime) / duration;\n      var easing = easingFn(now);\n      var newX = (destX - startX) * easing + startX;\n      var newY = (destY - startY) * easing + startY;\n\n      me._translate(newX, newY);\n\n      if (me.isAnimating) {\n        me.animateTimer = requestAnimationFrame(step);\n      }\n\n      if (me.options.probeType === 3) {\n        me.trigger('scroll', {\n          x: me.x,\n          y: me.y\n        });\n      }\n    }\n\n    this.isAnimating = true;\n    cancelAnimationFrame(this.animateTimer);\n    step();\n  };\n\n  BScroll.prototype.scrollBy = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n    x = this.x + x;\n    y = this.y + y;\n\n    this.scrollTo(x, y, time, easing);\n  };\n\n  BScroll.prototype.scrollTo = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n    this.isInTransition = this.options.useTransition && time > 0 && (x !== this.x || y !== this.y);\n\n    if (!time || this.options.useTransition) {\n      this._transitionProperty();\n      this._transitionTimingFunction(easing.style);\n      this._transitionTime(time);\n      this._translate(x, y);\n\n      if (time && this.options.probeType === 3) {\n        this._startProbe();\n      }\n\n      if (this.options.wheel) {\n        if (y > 0) {\n          this.selectedIndex = 0;\n        } else if (y < this.maxScrollY) {\n          this.selectedIndex = this.items.length - 1;\n        } else {\n          this.selectedIndex = Math.round(Math.abs(y / this.itemHeight));\n        }\n      }\n    } else {\n      this._animate(x, y, time, easing.fn);\n    }\n  };\n\n  BScroll.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\n    if (!el) {\n      return;\n    }\n    el = el.nodeType ? el : this.scroller.querySelector(el);\n\n    if (this.options.wheel && el.className !== this.options.wheel.wheelItemClass) {\n      return;\n    }\n\n    var pos = offset(el);\n    pos.left -= this.wrapperOffset.left;\n    pos.top -= this.wrapperOffset.top;\n\n    // if offsetX/Y are true we center the element to the screen\n    if (offsetX === true) {\n      offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n    }\n    if (offsetY === true) {\n      offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n    }\n\n    pos.left -= offsetX || 0;\n    pos.top -= offsetY || 0;\n    pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n    pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n    if (this.options.wheel) {\n      pos.top = Math.round(pos.top / this.itemHeight) * this.itemHeight;\n    }\n\n    this.scrollTo(pos.left, pos.top, time, easing);\n  };\n\n  BScroll.prototype.resetPosition = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    var easeing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ease.bounce;\n\n    var x = this.x;\n    var roundX = Math.round(x);\n    if (!this.hasHorizontalScroll || roundX > 0) {\n      x = 0;\n    } else if (roundX < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    var y = this.y;\n    var roundY = Math.round(y);\n    if (!this.hasVerticalScroll || roundY > 0) {\n      y = 0;\n    } else if (roundY < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    if (x === this.x && y === this.y) {\n      return false;\n    }\n\n    this.scrollTo(x, y, time, easeing);\n\n    return true;\n  };\n\n  BScroll.prototype.getComputedPosition = function () {\n    var matrix = window.getComputedStyle(this.scroller, null);\n    var x = void 0;\n    var y = void 0;\n\n    if (this.options.useTransform) {\n      matrix = matrix[style.transform].split(')')[0].split(', ');\n      x = +(matrix[12] || matrix[4]);\n      y = +(matrix[13] || matrix[5]);\n    } else {\n      x = +matrix.left.replace(/[^-\\d.]/g, '');\n      y = +matrix.top.replace(/[^-\\d.]/g, '');\n    }\n\n    return {\n      x: x,\n      y: y\n    };\n  };\n\n  BScroll.prototype.stop = function () {\n    if (this.options.useTransition && this.isInTransition) {\n      this.isInTransition = false;\n      var pos = this.getComputedPosition();\n      this._translate(pos.x, pos.y);\n      if (this.options.wheel) {\n        this.target = this.items[Math.round(-pos.y / this.itemHeight)];\n      } else {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n      this.stopFromTransition = true;\n    } else if (!this.options.useTransition && this.isAnimating) {\n      this.isAnimating = false;\n      this.trigger('scrollEnd', {\n        x: this.x,\n        y: this.y\n      });\n      this.stopFromTransition = true;\n    }\n  };\n\n  BScroll.prototype.destroy = function () {\n    this.destroyed = true;\n    this.trigger('destroy');\n\n    this._removeDOMEvents();\n    // remove custom events\n    this._events = {};\n  };\n}\n\nfunction snapMixin(BScroll) {\n  BScroll.prototype._initSnap = function () {\n    var _this = this;\n\n    this.currentPage = {};\n    var snap = this.options.snap;\n\n    if (snap.loop) {\n      var children = this.scroller.children;\n      if (children.length > 0) {\n        prepend(children[children.length - 1].cloneNode(true), this.scroller);\n        this.scroller.appendChild(children[1].cloneNode(true));\n      }\n    }\n\n    var el = snap.el;\n    if (typeof el === 'string') {\n      el = this.scroller.querySelectorAll(el);\n    }\n\n    this.on('refresh', function () {\n      _this.pages = [];\n\n      if (!_this.wrapperWidth || !_this.wrapperHeight || !_this.scrollerWidth || !_this.scrollerHeight) {\n        return;\n      }\n\n      var stepX = snap.stepX || _this.wrapperWidth;\n      var stepY = snap.stepY || _this.wrapperHeight;\n\n      var x = 0;\n      var y = void 0;\n      var cx = void 0;\n      var cy = void 0;\n      var i = 0;\n      var l = void 0;\n      var m = 0;\n      var n = void 0;\n      var rect = void 0;\n      if (!el) {\n        cx = Math.round(stepX / 2);\n        cy = Math.round(stepY / 2);\n\n        while (x > -_this.scrollerWidth) {\n          _this.pages[i] = [];\n          l = 0;\n          y = 0;\n\n          while (y > -_this.scrollerHeight) {\n            _this.pages[i][l] = {\n              x: Math.max(x, _this.maxScrollX),\n              y: Math.max(y, _this.maxScrollY),\n              width: stepX,\n              height: stepY,\n              cx: x - cx,\n              cy: y - cy\n            };\n\n            y -= stepY;\n            l++;\n          }\n\n          x -= stepX;\n          i++;\n        }\n      } else {\n        l = el.length;\n        n = -1;\n\n        for (; i < l; i++) {\n          rect = getRect(el[i]);\n          if (i === 0 || rect.left <= getRect(el[i - 1]).left) {\n            m = 0;\n            n++;\n          }\n\n          if (!_this.pages[m]) {\n            _this.pages[m] = [];\n          }\n\n          x = Math.max(-rect.left, _this.maxScrollX);\n          y = Math.max(-rect.top, _this.maxScrollY);\n          cx = x - Math.round(rect.width / 2);\n          cy = y - Math.round(rect.height / 2);\n\n          _this.pages[m][n] = {\n            x: x,\n            y: y,\n            width: rect.width,\n            height: rect.height,\n            cx: cx,\n            cy: cy\n          };\n\n          if (x > _this.maxScrollX) {\n            m++;\n          }\n        }\n      }\n\n      var initPage = snap.loop ? 1 : 0;\n      _this._goToPage(_this.currentPage.pageX || initPage, _this.currentPage.pageY || 0, 0);\n\n      // Update snap threshold if needed\n      var snapThreshold = snap.threshold;\n      if (snapThreshold % 1 === 0) {\n        _this.snapThresholdX = snapThreshold;\n        _this.snapThresholdY = snapThreshold;\n      } else {\n        _this.snapThresholdX = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].width * snapThreshold);\n        _this.snapThresholdY = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].height * snapThreshold);\n      }\n    });\n\n    this.on('scrollEnd', function () {\n      if (snap.loop) {\n        if (_this.currentPage.pageX === 0) {\n          _this._goToPage(_this.pages.length - 2, _this.currentPage.pageY, 0);\n        }\n        if (_this.currentPage.pageX === _this.pages.length - 1) {\n          _this._goToPage(1, _this.currentPage.pageY, 0);\n        }\n      }\n    });\n\n    if (snap.listenFlick !== false) {\n      this.on('flick', function () {\n        var time = snap.speed || Math.max(Math.max(Math.min(Math.abs(_this.x - _this.startX), 1000), Math.min(Math.abs(_this.y - _this.startY), 1000)), 300);\n\n        _this._goToPage(_this.currentPage.pageX + _this.directionX, _this.currentPage.pageY + _this.directionY, time);\n      });\n    }\n\n    this.on('destroy', function () {\n      if (snap.loop) {\n        var _children = _this.scroller.children;\n        if (_children.length > 2) {\n          removeChild(_this.scroller, _children[_children.length - 1]);\n          removeChild(_this.scroller, _children[0]);\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._nearestSnap = function (x, y) {\n    if (!this.pages.length) {\n      return { x: 0, y: 0, pageX: 0, pageY: 0 };\n    }\n\n    var i = 0;\n    // Check if we exceeded the snap threshold\n    if (Math.abs(x - this.absStartX) <= this.snapThresholdX && Math.abs(y - this.absStartY) <= this.snapThresholdY) {\n      return this.currentPage;\n    }\n\n    if (x > 0) {\n      x = 0;\n    } else if (x < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    if (y > 0) {\n      y = 0;\n    } else if (y < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    var l = this.pages.length;\n    for (; i < l; i++) {\n      if (x >= this.pages[i][0].cx) {\n        x = this.pages[i][0].x;\n        break;\n      }\n    }\n\n    l = this.pages[i].length;\n\n    var m = 0;\n    for (; m < l; m++) {\n      if (y >= this.pages[0][m].cy) {\n        y = this.pages[0][m].y;\n        break;\n      }\n    }\n\n    if (i === this.currentPage.pageX) {\n      i += this.directionX;\n\n      if (i < 0) {\n        i = 0;\n      } else if (i >= this.pages.length) {\n        i = this.pages.length - 1;\n      }\n\n      x = this.pages[i][0].x;\n    }\n\n    if (m === this.currentPage.pageY) {\n      m += this.directionY;\n\n      if (m < 0) {\n        m = 0;\n      } else if (m >= this.pages[0].length) {\n        m = this.pages[0].length - 1;\n      }\n\n      y = this.pages[0][m].y;\n    }\n\n    return {\n      x: x,\n      y: y,\n      pageX: i,\n      pageY: m\n    };\n  };\n\n  BScroll.prototype._goToPage = function (x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var time = arguments[2];\n    var easing = arguments[3];\n\n    var snap = this.options.snap;\n\n    if (!snap || !this.pages) {\n      return;\n    }\n\n    easing = easing || snap.easing || ease.bounce;\n\n    if (x >= this.pages.length) {\n      x = this.pages.length - 1;\n    } else if (x < 0) {\n      x = 0;\n    }\n\n    if (!this.pages[x]) {\n      return;\n    }\n\n    if (y >= this.pages[x].length) {\n      y = this.pages[x].length - 1;\n    } else if (y < 0) {\n      y = 0;\n    }\n\n    var posX = this.pages[x][y].x;\n    var posY = this.pages[x][y].y;\n\n    time = time === undefined ? snap.speed || Math.max(Math.max(Math.min(Math.abs(posX - this.x), 1000), Math.min(Math.abs(posY - this.y), 1000)), 300) : time;\n\n    this.currentPage = {\n      x: posX,\n      y: posY,\n      pageX: x,\n      pageY: y\n    };\n    this.scrollTo(posX, posY, time, easing);\n  };\n\n  BScroll.prototype.goToPage = function (x, y, time, easing) {\n    var snap = this.options.snap;\n    if (snap) {\n      if (snap.loop) {\n        var len = this.pages.length - 2;\n        if (x >= len) {\n          x = len - 1;\n        } else if (x < 0) {\n          x = 0;\n        }\n        x += 1;\n      }\n      this._goToPage(x, y, time, easing);\n    }\n  };\n\n  BScroll.prototype.next = function (time, easing) {\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x++;\n    if (x >= this.pages.length && this.hasVerticalScroll) {\n      x = 0;\n      y++;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.prev = function (time, easing) {\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x--;\n    if (x < 0 && this.hasVerticalScroll) {\n      x = 0;\n      y--;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.getCurrentPage = function () {\n    var snap = this.options.snap;\n    if (snap) {\n      if (snap.loop) {\n        var currentPage = extend({}, this.currentPage, {\n          pageX: this.currentPage.pageX - 1\n        });\n        return currentPage;\n      }\n      return this.currentPage;\n    }\n    return null;\n  };\n}\n\nfunction wheelMixin(BScroll) {\n  BScroll.prototype.wheelTo = function () {\n    var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    if (this.options.wheel) {\n      this.y = -index * this.itemHeight;\n      this.scrollTo(0, this.y);\n    }\n  };\n\n  BScroll.prototype.getSelectedIndex = function () {\n    return this.options.wheel && this.selectedIndex;\n  };\n\n  BScroll.prototype._initWheel = function () {\n    var wheel = this.options.wheel;\n    if (!wheel.wheelWrapperClass) {\n      wheel.wheelWrapperClass = 'wheel-scroll';\n    }\n    if (!wheel.wheelItemClass) {\n      wheel.wheelItemClass = 'wheel-item';\n    }\n    if (wheel.selectedIndex === undefined) {\n      wheel.selectedIndex = 0;\n      warn('wheel option selectedIndex is required!');\n    }\n  };\n}\n\nvar INDICATOR_MIN_LEN = 8;\n\nfunction scrollbarMixin(BScroll) {\n  BScroll.prototype._initScrollbar = function () {\n    var _this = this;\n\n    var _options$scrollbar = this.options.scrollbar,\n        _options$scrollbar$fa = _options$scrollbar.fade,\n        fade = _options$scrollbar$fa === undefined ? true : _options$scrollbar$fa,\n        _options$scrollbar$in = _options$scrollbar.interactive,\n        interactive = _options$scrollbar$in === undefined ? false : _options$scrollbar$in;\n\n    this.indicators = [];\n    var indicator = void 0;\n\n    if (this.options.scrollX) {\n      indicator = {\n        el: createScrollbar('horizontal'),\n        direction: 'horizontal',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    if (this.options.scrollY) {\n      indicator = {\n        el: createScrollbar('vertical'),\n        direction: 'vertical',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    this.on('refresh', function () {\n      for (var i = 0; i < _this.indicators.length; i++) {\n        _this.indicators[i].refresh();\n      }\n    });\n\n    if (fade) {\n      this.on('scrollEnd', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollCancel', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true);\n        }\n      });\n\n      this.on('beforeScrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true, true);\n        }\n      });\n    }\n\n    this.on('destroy', function () {\n      _this._removeScrollBars();\n    });\n  };\n\n  BScroll.prototype._insertScrollBar = function (scrollbar) {\n    this.wrapper.appendChild(scrollbar);\n  };\n\n  BScroll.prototype._removeScrollBars = function () {\n    for (var i = 0; i < this.indicators.length; i++) {\n      this.indicators[i].destroy();\n    }\n  };\n}\n\nfunction createScrollbar(direction) {\n  var scrollbar = document.createElement('div');\n  var indicator = document.createElement('div');\n\n  scrollbar.style.cssText = 'position:absolute;z-index:9999;pointerEvents:none';\n  indicator.style.cssText = 'box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px;';\n\n  indicator.className = 'bscroll-indicator';\n\n  if (direction === 'horizontal') {\n    scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n    indicator.style.height = '100%';\n    scrollbar.className = 'bscroll-horizontal-scrollbar';\n  } else {\n    scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n    indicator.style.width = '100%';\n    scrollbar.className = 'bscroll-vertical-scrollbar';\n  }\n\n  scrollbar.style.cssText += ';overflow:hidden';\n  scrollbar.appendChild(indicator);\n\n  return scrollbar;\n}\n\nfunction Indicator(scroller, options) {\n  this.wrapper = options.el;\n  this.wrapperStyle = this.wrapper.style;\n  this.indicator = this.wrapper.children[0];\n  this.indicatorStyle = this.indicator.style;\n  this.scroller = scroller;\n  this.direction = options.direction;\n  if (options.fade) {\n    this.visible = 0;\n    this.wrapperStyle.opacity = '0';\n  } else {\n    this.visible = 1;\n  }\n\n  this.sizeRatioX = 1;\n  this.sizeRatioY = 1;\n  this.maxPosX = 0;\n  this.maxPosY = 0;\n  this.x = 0;\n  this.y = 0;\n\n  if (options.interactive) {\n    this._addDOMEvents();\n  }\n}\n\nIndicator.prototype.handleEvent = function (e) {\n  switch (e.type) {\n    case 'touchstart':\n    case 'mousedown':\n      this._start(e);\n      break;\n    case 'touchmove':\n    case 'mousemove':\n      this._move(e);\n      break;\n    case 'touchend':\n    case 'mouseup':\n    case 'touchcancel':\n    case 'mousecancel':\n      this._end(e);\n      break;\n  }\n};\n\nIndicator.prototype.refresh = function () {\n  this.transitionTime();\n  this._calculate();\n  this.updatePosition();\n};\n\nIndicator.prototype.fade = function (visible, hold) {\n  var _this2 = this;\n\n  if (hold && !this.visible) {\n    return;\n  }\n\n  var time = visible ? 250 : 500;\n\n  visible = visible ? '1' : '0';\n\n  this.wrapperStyle[style.transitionDuration] = time + 'ms';\n\n  clearTimeout(this.fadeTimeout);\n  this.fadeTimeout = setTimeout(function () {\n    _this2.wrapperStyle.opacity = visible;\n    _this2.visible = +visible;\n  }, 0);\n};\n\nIndicator.prototype.updatePosition = function () {\n  if (this.direction === 'vertical') {\n    var y = Math.round(this.sizeRatioY * this.scroller.y);\n\n    if (y < 0) {\n      this.transitionTime(500);\n      var height = Math.max(this.indicatorHeight + y * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = height + 'px';\n      y = 0;\n    } else if (y > this.maxPosY) {\n      this.transitionTime(500);\n      var _height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = _height + 'px';\n      y = this.maxPosY + this.indicatorHeight - _height;\n    } else {\n      this.indicatorStyle.height = this.indicatorHeight + 'px';\n    }\n    this.y = y;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateY(' + y + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.top = y + 'px';\n    }\n  } else {\n    var x = Math.round(this.sizeRatioX * this.scroller.x);\n\n    if (x < 0) {\n      this.transitionTime(500);\n      var width = Math.max(this.indicatorWidth + x * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = width + 'px';\n      x = 0;\n    } else if (x > this.maxPosX) {\n      this.transitionTime(500);\n      var _width = Math.max(this.indicatorWidth - (x - this.maxPosX) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = _width + 'px';\n      x = this.maxPosX + this.indicatorWidth - _width;\n    } else {\n      this.indicatorStyle.width = this.indicatorWidth + 'px';\n    }\n\n    this.x = x;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateX(' + x + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.left = x + 'px';\n    }\n  }\n};\n\nIndicator.prototype.transitionTime = function () {\n  var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n  this.indicatorStyle[style.transitionDuration] = time + 'ms';\n};\n\nIndicator.prototype.transitionTimingFunction = function (easing) {\n  this.indicatorStyle[style.transitionTimingFunction] = easing;\n};\n\nIndicator.prototype.destroy = function () {\n  this._removeDOMEvents();\n  this.wrapper.parentNode.removeChild(this.wrapper);\n};\n\nIndicator.prototype._start = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this.transitionTime();\n\n  this.initiated = true;\n  this.moved = false;\n  this.lastPointX = point.pageX;\n  this.lastPointY = point.pageY;\n\n  this.startTime = getNow();\n\n  this._handleMoveEvents(addEvent);\n  this.scroller.trigger('beforeScrollStart');\n};\n\nIndicator.prototype._move = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  if (!this.moved) {\n    this.scroller.trigger('scrollStart');\n  }\n\n  this.moved = true;\n\n  var deltaX = point.pageX - this.lastPointX;\n  this.lastPointX = point.pageX;\n\n  var deltaY = point.pageY - this.lastPointY;\n  this.lastPointY = point.pageY;\n\n  var newX = this.x + deltaX;\n  var newY = this.y + deltaY;\n\n  this._pos(newX, newY);\n};\n\nIndicator.prototype._end = function (e) {\n  if (!this.initiated) {\n    return;\n  }\n  this.initiated = false;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this._handleMoveEvents(removeEvent);\n\n  var snapOption = this.scroller.options.snap;\n  if (snapOption) {\n    var speed = snapOption.speed,\n        _snapOption$easing = snapOption.easing,\n        easing = _snapOption$easing === undefined ? ease.bounce : _snapOption$easing;\n\n    var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n    var time = speed || Math.max(Math.max(Math.min(Math.abs(this.scroller.x - snap.x), 1000), Math.min(Math.abs(this.scroller.y - snap.y), 1000)), 300);\n\n    if (this.scroller.x !== snap.x || this.scroller.y !== snap.y) {\n      this.scroller.directionX = 0;\n      this.scroller.directionY = 0;\n      this.scroller.currentPage = snap;\n      this.scroller.scrollTo(snap.x, snap.y, time, easing);\n    }\n  }\n\n  if (this.moved) {\n    this.scroller.trigger('scrollEnd', {\n      x: this.scroller.x,\n      y: this.scroller.y\n    });\n  }\n};\n\nIndicator.prototype._pos = function (x, y) {\n  if (x < 0) {\n    x = 0;\n  } else if (x > this.maxPosX) {\n    x = this.maxPosX;\n  }\n\n  if (y < 0) {\n    y = 0;\n  } else if (y > this.maxPosY) {\n    y = this.maxPosY;\n  }\n\n  x = Math.round(x / this.sizeRatioX);\n  y = Math.round(y / this.sizeRatioY);\n\n  this.scroller.scrollTo(x, y);\n  this.scroller.trigger('scroll', {\n    x: this.scroller.x,\n    y: this.scroller.y\n  });\n};\n\nIndicator.prototype._calculate = function () {\n  if (this.direction === 'vertical') {\n    var wrapperHeight = this.wrapper.clientHeight;\n    this.indicatorHeight = Math.max(Math.round(wrapperHeight * wrapperHeight / (this.scroller.scrollerHeight || wrapperHeight || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.height = this.indicatorHeight + 'px';\n\n    this.maxPosY = wrapperHeight - this.indicatorHeight;\n\n    this.sizeRatioY = this.maxPosY / this.scroller.maxScrollY;\n  } else {\n    var wrapperWidth = this.wrapper.clientWidth;\n    this.indicatorWidth = Math.max(Math.round(wrapperWidth * wrapperWidth / (this.scroller.scrollerWidth || wrapperWidth || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.width = this.indicatorWidth + 'px';\n\n    this.maxPosX = wrapperWidth - this.indicatorWidth;\n\n    this.sizeRatioX = this.maxPosX / this.scroller.maxScrollX;\n  }\n};\n\nIndicator.prototype._addDOMEvents = function () {\n  var eventOperation = addEvent;\n  this._handleDOMEvents(eventOperation);\n};\n\nIndicator.prototype._removeDOMEvents = function () {\n  var eventOperation = removeEvent;\n  this._handleDOMEvents(eventOperation);\n  this._handleMoveEvents(eventOperation);\n};\n\nIndicator.prototype._handleMoveEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(window, 'touchmove', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(window, 'mousemove', this);\n  }\n};\n\nIndicator.prototype._handleDOMEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(this.indicator, 'touchstart', this);\n    eventOperation(window, 'touchend', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(this.indicator, 'mousedown', this);\n    eventOperation(window, 'mouseup', this);\n  }\n};\n\nfunction pullDownMixin(BScroll) {\n  BScroll.prototype._initPullDown = function () {\n    // must watch scroll in real time\n    this.options.probeType = 3;\n  };\n\n  BScroll.prototype._checkPullDown = function () {\n    var _options$pullDownRefr = this.options.pullDownRefresh,\n        _options$pullDownRefr2 = _options$pullDownRefr.threshold,\n        threshold = _options$pullDownRefr2 === undefined ? 90 : _options$pullDownRefr2,\n        _options$pullDownRefr3 = _options$pullDownRefr.stop,\n        stop = _options$pullDownRefr3 === undefined ? 40 : _options$pullDownRefr3;\n\n    // check if a real pull down action\n\n    if (this.directionY !== DIRECTION_DOWN || this.y < threshold) {\n      return false;\n    }\n\n    if (!this.pulling) {\n      this.pulling = true;\n      this.trigger('pullingDown');\n    }\n    this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n\n    return this.pulling;\n  };\n\n  BScroll.prototype.finishPullDown = function () {\n    this.pulling = false;\n    this.resetPosition(this.options.bounceTime, ease.bounce);\n  };\n}\n\nfunction pullUpMixin(BScroll) {\n  BScroll.prototype._initPullUp = function () {\n    // must watch scroll in real time\n    this.options.probeType = 3;\n\n    this.pullupWatching = false;\n    this._watchPullUp();\n  };\n\n  BScroll.prototype._watchPullUp = function () {\n    this.pullupWatching = true;\n    var _options$pullUpLoad$t = this.options.pullUpLoad.threshold,\n        threshold = _options$pullUpLoad$t === undefined ? 0 : _options$pullUpLoad$t;\n\n\n    this.on('scroll', checkToEnd);\n\n    function checkToEnd(pos) {\n      var _this = this;\n\n      if (this.movingDirectionY === DIRECTION_UP && pos.y <= this.maxScrollY + threshold) {\n        // reset pullupWatching status after scroll end.\n        this.once('scrollEnd', function () {\n          _this.pullupWatching = false;\n        });\n        this.trigger('pullingUp');\n        this.off('scroll', checkToEnd);\n      }\n    }\n  };\n\n  BScroll.prototype.finishPullUp = function () {\n    var _this2 = this;\n\n    if (this.pullupWatching) {\n      this.once('scrollEnd', function () {\n        _this2._watchPullUp();\n      });\n    } else {\n      this._watchPullUp();\n    }\n  };\n}\n\nfunction mouseWheelMixin(BScroll) {\n  BScroll.prototype._initMouseWheel = function () {\n    var _this = this;\n\n    this._handleMouseWheelEvent(addEvent);\n\n    this.on('destroy', function () {\n      clearTimeout(_this.mouseWheelTimer);\n      _this._handleMouseWheelEvent(removeEvent);\n    });\n\n    this.firstWheelOpreation = true;\n  };\n\n  BScroll.prototype._handleMouseWheelEvent = function (eventOperation) {\n    eventOperation(this.wrapper, 'wheel', this);\n    eventOperation(this.wrapper, 'mousewheel', this);\n    eventOperation(this.wrapper, 'DOMMouseScroll', this);\n  };\n\n  BScroll.prototype._onMouseWheel = function (e) {\n    var _this2 = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    e.preventDefault();\n\n    if (this.firstWheelOpreation) {\n      this.trigger('scrollStart');\n    }\n    this.firstWheelOpreation = false;\n\n    clearTimeout(this.mouseWheelTimer);\n    this.mouseWheelTimer = setTimeout(function () {\n      if (!_this2.options.snap) {\n        _this2.trigger('scrollEnd', {\n          x: _this2.x,\n          y: _this2.y\n        });\n      }\n      _this2.firstWheelOpreation = true;\n    }, 400);\n\n    var _options$mouseWheel = this.options.mouseWheel,\n        _options$mouseWheel$s = _options$mouseWheel.speed,\n        speed = _options$mouseWheel$s === undefined ? 20 : _options$mouseWheel$s,\n        _options$mouseWheel$i = _options$mouseWheel.invert,\n        invert = _options$mouseWheel$i === undefined ? false : _options$mouseWheel$i;\n\n    var wheelDeltaX = void 0;\n    var wheelDeltaY = void 0;\n\n    switch (true) {\n      case 'deltaX' in e:\n        if (e.deltaMode === 1) {\n          wheelDeltaX = -e.deltaX * speed;\n          wheelDeltaY = -e.deltaY * speed;\n        } else {\n          wheelDeltaX = -e.deltaX;\n          wheelDeltaY = -e.deltaY;\n        }\n        break;\n      case 'wheelDeltaX' in e:\n        wheelDeltaX = e.wheelDeltaX / 120 * speed;\n        wheelDeltaY = e.wheelDeltaY / 120 * speed;\n        break;\n      case 'wheelDelta' in e:\n        wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * speed;\n        break;\n      case 'detail' in e:\n        wheelDeltaX = wheelDeltaY = -e.detail / 3 * speed;\n        break;\n      default:\n        return;\n    }\n\n    var direction = invert ? -1 : 1;\n    wheelDeltaX *= direction;\n    wheelDeltaY *= direction;\n\n    if (!this.hasVerticalScroll) {\n      wheelDeltaX = wheelDeltaY;\n      wheelDeltaY = 0;\n    }\n\n    var newX = void 0;\n    var newY = void 0;\n    if (this.options.snap) {\n      newX = this.currentPage.pageX;\n      newY = this.currentPage.pageY;\n\n      if (wheelDeltaX > 0) {\n        newX--;\n      } else if (wheelDeltaX < 0) {\n        newX++;\n      }\n\n      if (wheelDeltaY > 0) {\n        newY--;\n      } else if (wheelDeltaY < 0) {\n        newY++;\n      }\n\n      this._goToPage(newX, newY);\n      return;\n    }\n\n    newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n    newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n    this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n    this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n    if (newX > 0) {\n      newX = 0;\n    } else if (newX < this.maxScrollX) {\n      newX = this.maxScrollX;\n    }\n\n    if (newY > 0) {\n      newY = 0;\n    } else if (newY < this.maxScrollY) {\n      newY = this.maxScrollY;\n    }\n\n    this.scrollTo(newX, newY);\n    this.trigger('scroll', {\n      x: this.x,\n      y: this.y\n    });\n  };\n}\n\nfunction BScroll(el, options) {\n  this.wrapper = typeof el === 'string' ? document.querySelector(el) : el;\n  if (!this.wrapper) {\n    warn('can not resolve the wrapper dom');\n  }\n  this.scroller = this.wrapper.children[0];\n  if (!this.scroller) {\n    warn('the wrapper need at least one child element to be scroller');\n  }\n  // cache style for better performance\n  this.scrollerStyle = this.scroller.style;\n\n  this._init(el, options);\n}\n\ninitMixin(BScroll);\ncoreMixin(BScroll);\neventMixin(BScroll);\nsnapMixin(BScroll);\nwheelMixin(BScroll);\nscrollbarMixin(BScroll);\npullDownMixin(BScroll);\npullUpMixin(BScroll);\nmouseWheelMixin(BScroll);\n\nBScroll.Version = '1.8.4';\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (BScroll);\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__range__ = __webpack_require__(1);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ([Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(0, 23, true, '点'), Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(0, 59, true, '分'), Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(0, 59, true, '秒')]);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return dateAnchor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return dateData; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__range__ = __webpack_require__(1);\n\n\nvar START_YEAR = 1900;\nvar END_YEAR = 2100;\n\nvar UNIT_YEAR = '年';\nvar UNIT_MONTH = '月';\nvar UNIT_DAY = '日';\n\nfunction isLeapYear(y) {\n  return y % 4 === 0 && (y % 100 !== 0 || y % 400 === 0);\n};\n\nfunction getDays(y, m) {\n  y = Number(y);\n  m = Number(m);\n  var endDay = null;\n  switch (m) {\n    case 2:\n      endDay = isLeapYear(y) ? 29 : 28;break;\n    case 1:\n    case 3:\n    case 5:\n    case 7:\n    case 8:\n    case 10:\n    case 12:\n      endDay = 31;break;\n    case 4:\n    case 6:\n    case 9:\n    case 11:\n    default:\n      endDay = 30;break;\n  }\n  var days = Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(1, endDay, false, UNIT_DAY);\n  return days.map(function (day) {\n    return { value: day };\n  });\n};\n\nvar yearData = Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(START_YEAR, END_YEAR, false, UNIT_YEAR);\nvar monthData = Object(__WEBPACK_IMPORTED_MODULE_0__range__[\"a\" /* default */])(1, 12, false, UNIT_MONTH);\n\nvar cascadeMonthData = monthData.map(function (month) {\n  return {\n    value: month,\n    children: []\n  };\n});\n\nvar dateData = yearData.map(function (year) {\n  var item = {\n    value: year,\n    children: cascadeMonthData.slice()\n  };\n  item.children.forEach(function (month) {\n    month.children = getDays(year.slice(0, -1), month.value.slice(0, -1));\n  });\n  return item;\n});\n\nvar date = new Date();\nvar dateAnchor = [{ value: '' + date.getFullYear() + UNIT_YEAR }, { value: '' + (date.getMonth() + 1) + UNIT_MONTH }, { value: '' + date.getDate() + UNIT_DAY }];\n\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":_vm.hide}})]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"picker\"},[_c('div',{staticClass:\"picker-title\"},[_c('span',{staticClass:\"pt-cancel\",style:({ color: _vm.colorCancel }),on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.textCancel))]),_vm._v(\" \"),_c('span',{staticClass:\"pt-submit\",style:({ color: _vm.colorConfirm }),on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.textConfirm))]),_vm._v(\" \"),_c('h4',{style:({ color: _vm.colorTitle })},[_vm._v(_vm._s(_vm.textTitle))])]),_vm._v(\" \"),_c('div',{staticClass:\"picker-panel\"},[_c('div',{staticClass:\"picker-mask-top\"}),_vm._v(\" \"),_c('div',{staticClass:\"picker-mask-bottom\"}),_vm._v(\" \"),_c('div',{ref:\"wheelWrapper\",staticClass:\"picker-wheel-wrapper\"},_vm._l((_vm.pickerData),function(wheel,index){return _c('div',{key:index,staticClass:\"picker-wheel\"},[_c('ul',{staticClass:\"wheel-scroll\"},_vm._l((wheel),function(item,index){return _c('li',{key:index,staticClass:\"wheel-item\"},[_vm._v(_vm._s(item))])}))])}))])])])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// vue-awesome-picker.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ea58cab0a2c754693d34","<template>\n  <div>\n    <transition name=\"fade\">\n      <div class=\"mask\" v-show=\"display\" @click=\"hide\"></div>\n    </transition>\n    <transition name=\"slide\">\n      <div class=\"picker\" v-show=\"display\">\n      <div class=\"picker-title\">\n        <span class=\"pt-cancel\" @click=\"cancel\" :style=\"{ color: colorCancel }\">{{textCancel}}</span>\n        <span class=\"pt-submit\" @click=\"confirm\" :style=\"{ color: colorConfirm }\">{{textConfirm}}</span>\n        <h4 :style=\"{ color: colorTitle }\">{{textTitle}}</h4>\n      </div>\n      <div class=\"picker-panel\">\n        <div class=\"picker-mask-top\"></div>\n        <div class=\"picker-mask-bottom\"></div>\n        <div class=\"picker-wheel-wrapper\" ref=\"wheelWrapper\">\n          <div class=\"picker-wheel\" v-for=\"(wheel, index) in pickerData\" :key=\"index\">\n            <ul class=\"wheel-scroll\">\n              <li class=\"wheel-item\" v-for=\"(item, index) in wheel\" :key=\"index\">{{item}}</li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n    </transition>\n  </div>\n</template>\n\n<script>\nimport BScroll from 'better-scroll'\nimport timeData from './data/time.js'\nimport { dateData, dateAnchor } from './data/date.js'\n\nconst DATA_NORMAL = 'normal'\nconst DATA_CASCADE = 'cascade'\n\nconst TYPE_NORMAL = 'normal'\nconst TYPE_TIME = 'time'\nconst TYPE_DATE = 'date'\n\nconst TEXT_TITLE = ''\nconst TEXT_CONFIRM = '确定'\nconst TEXT_CANCEL = '取消'\n\nconst COLOR_TITLE = '#000000'\nconst COLOR_CONFIRM = '#42b983'\nconst COLOR_CANCEL = '#999999'\n\nconst EVENT_CONFIRM = 'confirm'\nconst EVENT_CANCEL = 'cancel'\n\nexport default {\n  name: 'awesome-picker',\n  props: {\n    data: {\n      type: Array,\n      default () {\n        return []\n      }\n    },\n    anchor: {\n      type: Array,\n      default () {\n        return []\n      }\n    },\n    type: {\n      type: String,\n      default: TYPE_NORMAL\n    },\n    textTitle: {\n      type: String,\n      default: TEXT_TITLE\n    },\n    textConfirm: {\n      type: String,\n      default: TEXT_CONFIRM\n    },\n    textCancel: {\n      type: String,\n      default: TEXT_CANCEL\n    },\n    colorTitle: {\n      type: String,\n      default: COLOR_TITLE\n    },\n    colorConfirm: {\n      type: String,\n      default: COLOR_CONFIRM\n    },\n    colorCancel: {\n      type: String,\n      default: COLOR_CANCEL\n    },\n    swipeTime: {\n      type: Number,\n      default: 1800\n    }\n  },\n  data () {\n    return {\n      display: false,\n      dataChange: false,\n      pickerData: this._dataGetter(),\n      pickerAnchor: this._anchorGetter(),\n      wheels: []\n    }\n  },\n  watch: {\n    data () {\n      this._setPickerData()\n    }\n  },\n  computed: {\n    proxyData () {\n      return this._dataGetter()\n    },\n    proxyAnchor () {\n      return this._anchorGetter()\n    },\n    dataType () {\n      return !Array.isArray(this.proxyData[0]) ? DATA_CASCADE : DATA_NORMAL\n    }\n  },\n  methods: {\n    _dataGetter () {\n      let data = null\n      switch (this.type) {\n        case TYPE_TIME:\n          data = timeData; break\n        case TYPE_DATE:\n          data = dateData; break\n        case TYPE_NORMAL:\n        default:\n          data = this.data; break\n      }\n      return [...data]\n    },\n\n    _anchorGetter () {\n      let anchor = []\n      if (this.anchor.length) {\n        anchor = this.anchor\n      } else {\n        switch (this.type) {\n          case TYPE_DATE:\n            anchor = dateAnchor; break\n          default:\n            anchor = this.anchor; break\n        }\n      }\n\n      anchor = anchor.map((item, i) => {\n        let index = 0\n        if (item.index) {\n          index = item.index\n        } else if (item.value) {\n          index = this.pickerData && this.pickerData[i] && this.pickerData[i].indexOf(item.value) > -1\n            ? this.pickerData[i].indexOf(item.value) : 0\n        } else {\n          index = item\n        }\n        return index\n      })\n      return [...anchor]\n    },\n\n    show () {\n      this.display = true\n      if (!this.wheels.length || this.dataChange) {\n        this.dataType === DATA_CASCADE && this._updatePickerData()\n        this.$nextTick(() => {\n          const wheelWrapper = this.$refs.wheelWrapper\n          this.pickerData.forEach((item, index) => {\n            this._createWheel(wheelWrapper, index).enable()\n          })\n          this._wheelToAnchor(this.proxyAnchor)\n\n          this.dataChange && this._destroyExtraWheels()\n          this.dataChange = false\n        })\n      } else {\n        this.wheels.forEach((wheel) => {\n          wheel.enable()\n        })\n      }\n    },\n\n    hide () {\n      this.wheels.forEach((wheel) => {\n        wheel.disable()\n      })\n      this.display = false\n    },\n\n    _createWheel (wheelWrapper, i) {\n      if (!this.wheels[i]) {\n        const wheel = this.wheels[i] = new BScroll(wheelWrapper.children[i], {\n          wheel: {\n            selectedIndex: 0,\n            rotate: 25\n          },\n          swipeTime: this.swipeTime\n        })\n        wheel.on('scrollEnd', () => {\n          this._cascadePickerChange(i)\n        })\n      } else {\n        this.wheels[i].refresh()\n      }\n      return this.wheels[i]\n    },\n\n    _cascadePickerChange (i) {\n      if (this.dataType !== DATA_CASCADE) {\n        return\n      }\n      const newIndex = this._getCurrentValue()[i].index\n      if (newIndex !== this.pickerAnchor[i]) {\n        this.pickerAnchor.splice(i, 1, newIndex)\n        this._updatePickerData(i + 1)\n      }\n    },\n\n    _wheelToAnchor (data) {\n      this.wheels.forEach((wheel, i) => {\n        wheel.wheelTo(data[i] || 0)\n      })\n    },\n\n    _getCurrentValue () {\n      const value = []\n      this.wheels.forEach((wheel, i) => {\n        const j = wheel.getSelectedIndex()\n        value.push({\n          index: j,\n          value: this.pickerData[i][j]\n        })\n      })\n      return value\n    },\n\n    _setPickerData () {\n      this.pickerData = this._dataGetter()\n      this.pickerAnchor = this._anchorGetter()\n      if (this.display) {\n        this.$nextTick(() => {\n          const wheelWrapper = this.$refs.wheelWrapper\n          this.pickerData.forEach((item, i) => {\n            this._createWheel(wheelWrapper, i)\n          })\n          this._wheelToAnchor(this.proxyAnchor)\n          this._destroyExtraWheels()\n        })\n      } else {\n        this.dataChange = true\n      }\n    },\n\n    _destroyExtraWheels () {\n      const dataLength = this.pickerData.length\n      if (dataLength < this.wheels.length) {\n        const extraWheels = this.wheels.splice(dataLength)\n        extraWheels.forEach((wheel) => {\n          wheel.destroy()\n        })\n      }\n    },\n\n    _updatePickerData (wheelIndex = 0) {\n      let data = [...this.proxyData]\n      let i = 0\n      while (data) {\n        if (i >= wheelIndex) {\n          let wheelData = []\n          data.forEach((item) => {\n            wheelData.push(item.value)\n          })\n          this.pickerData[i] = wheelData\n          this.pickerAnchor[i] = wheelIndex === 0\n            ? (this.pickerAnchor[i] < data.length ? this.pickerAnchor[i] || 0 : 0)\n            : this._reloadWheel(i, wheelData)\n        }\n        data = data.length ? data[this.pickerAnchor[i]].children : null\n        i++\n      }\n      this.pickerData = this.pickerData.slice(0, i)\n    },\n\n    _reloadWheel (index, data) {\n      const wheelWrapper = this.$refs.wheelWrapper\n      let scroll = wheelWrapper.children[index].querySelector('.wheel-scroll')\n      let wheel = this.wheels ? this.wheels[index] : false\n      let dist = 0\n      if (scroll && wheel) {\n        this.$set(this.pickerData, index, data)\n        this.pickerAnchor[index] = dist\n        this.$nextTick(() => {\n          wheel = this._createWheel(wheelWrapper, index)\n          wheel.wheelTo(dist)\n        })\n      }\n      return dist\n    },\n\n    confirm () {\n      const isInTransition = this.wheels.some((wheel) => {\n        return wheel.isInTransition\n      })\n      if (isInTransition) {\n        return\n      }\n      const selectedValues = this._getCurrentValue()\n      this.$emit(EVENT_CONFIRM, selectedValues)\n      this.hide()\n    },\n\n    cancel () {\n      this.$emit(EVENT_CANCEL)\n      this.hide()\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n  /* fade */\n  .fade-enter, .fade-leave-to {\n    opacity: 0;\n  }\n\n  .fade-enter-active, .fade-leave-active {\n    transition: all .3s ease;\n  }\n\n  /* slide */\n  .slide-enter, .slide-leave-to {\n    opacity: 0.5;\n    transform: translate3d(0, 270px, 0)\n  }\n\n  .slide-enter-active, .slide-leave-active {\n    transition: all .3s ease;\n  }\n\n  .mask {\n    position: fixed;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 9999;\n    background: rgba(0,0,0,.2);\n  }\n\n  .picker {\n    position: fixed;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    height: 270px;\n    z-index: 10000;\n    background: #fff;\n  }\n\n  .picker-title {\n    position: relative;\n    height: 44px;\n    color: #333;\n\n    &:after {\n      content: '';\n      display: block;\n      border-bottom: 1px solid #ebebeb;\n      left: 0;\n      right: 0;\n      transform: scaleY(.5);\n    }\n\n    span {\n      position: absolute;\n      height: 44px;\n      line-height: 44px;\n      padding: 0 12px;\n      font-size: 14px;\n    }\n\n    .pt-cancel {\n      left: 0;\n      color: #999;\n    }\n\n    .pt-submit {\n      right: 0;\n      color: #42b983;\n    }\n\n    h4 {\n      margin: 0;\n      font-size: 16px;\n      font-weight: normal;\n      height: 44px;\n      line-height: 44px;\n      text-align: center;\n    }\n  }\n\n  .picker-panel {\n    position: relative;\n    height: 226px;\n    padding: 24px 12px;\n    box-sizing: border-box;\n\n    .picker-mask-top, .picker-mask-bottom {\n      position: absolute;\n      left: 0;\n      right: 0;\n      height: 72px;\n      background: #fff;\n      transform: translateZ(0);\n      z-index: 1;\n      pointer-events: none;\n    }\n\n    .picker-mask-top {\n      top: 24px;\n      background: linear-gradient(to bottom, rgba(255,255,255,.9), rgba(255,255,255,.5));\n\n      &:after {\n        content: '';\n        display: block;\n        position: absolute;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        border-bottom: 1px solid #ebebeb;\n        transform: scaleY(.5);\n      }\n    }\n\n    .picker-mask-bottom {\n      bottom: 24px;\n      background: linear-gradient(to top, rgba(255,255,255,.9), rgba(255,255,255,.5));\n\n      &:before {\n        content: '';\n        display: block;\n        position: absolute;\n        left: 0;\n        right: 0;\n        top: 0;\n        border-bottom: 1px solid #ebebeb;\n        transform: scaleY(.5);\n      }\n    }\n  }\n\n  .picker-wheel-wrapper {\n    display: flex;\n    align-items: stretch;\n    height: 100%;\n\n    .picker-wheel {\n      flex: 1;\n      overflow: hidden;\n    }\n\n    .wheel-scroll {\n      margin-top: 72px;\n\n      .wheel-item {\n        height: 34px;\n        line-height: 34px;\n        font-size: 17px;\n        text-align: center;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        color: #333;\n      }\n    }\n  }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/lib/vue-awesome-picker.vue","export default function (n, m, polyfill = false, unit = '') {\n  let arr = []\n  for (let i = n; i <= m; i++) {\n    let value = (polyfill && i < 10 ? '0' + i : i) + unit\n    arr.push(value)\n  }\n  return arr\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/data/range.js","import AwesomePicker from './vue-awesome-picker.vue'\nconst picker = {\n  install (Vue) {\n    Vue.component(AwesomePicker.name, AwesomePicker)\n  }\n}\nif (typeof window !== 'undefined' && window.Vue) {\n  window.Vue.use(picker)\n}\nexport default picker\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/index.js","function injectStyle (ssrContext) {\n  require(\"!!vue-style-loader!css-loader!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-171df494\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!sass-loader!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./vue-awesome-picker.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./vue-awesome-picker.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./vue-awesome-picker.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-171df494\\\",\\\"hasScoped\\\":true,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./vue-awesome-picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-171df494\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_template__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/lib/vue-awesome-picker.vue\n// module id = 3\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-171df494\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/sass-loader/lib/loader.js!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./vue-awesome-picker.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = require(\"!../../node_modules/vue-style-loader/lib/addStylesClient.js\")(\"3d9c1580\", content, true, {});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader!./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-171df494\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/lib/vue-awesome-picker.vue\n// module id = 4\n// module chunks = 0","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fade-enter[data-v-171df494],.fade-leave-to[data-v-171df494]{opacity:0}.fade-enter-active[data-v-171df494],.fade-leave-active[data-v-171df494]{transition:all .3s ease}.slide-enter[data-v-171df494],.slide-leave-to[data-v-171df494]{opacity:.5;transform:translate3d(0,270px,0)}.slide-enter-active[data-v-171df494],.slide-leave-active[data-v-171df494]{transition:all .3s ease}.mask[data-v-171df494]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:rgba(0,0,0,.2)}.picker[data-v-171df494]{position:fixed;left:0;right:0;bottom:0;height:270px;z-index:10000;background:#fff}.picker-title[data-v-171df494]{position:relative;height:44px;color:#333}.picker-title[data-v-171df494]:after{content:\\\"\\\";display:block;border-bottom:1px solid #ebebeb;left:0;right:0;transform:scaleY(.5)}.picker-title span[data-v-171df494]{position:absolute;height:44px;line-height:44px;padding:0 12px;font-size:14px}.picker-title .pt-cancel[data-v-171df494]{left:0;color:#999}.picker-title .pt-submit[data-v-171df494]{right:0;color:#42b983}.picker-title h4[data-v-171df494]{margin:0;font-size:16px;font-weight:400;height:44px;line-height:44px;text-align:center}.picker-panel[data-v-171df494]{position:relative;height:226px;padding:24px 12px;box-sizing:border-box}.picker-panel .picker-mask-bottom[data-v-171df494],.picker-panel .picker-mask-top[data-v-171df494]{position:absolute;left:0;right:0;height:72px;background:#fff;transform:translateZ(0);z-index:1;pointer-events:none}.picker-panel .picker-mask-top[data-v-171df494]{top:24px;background:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.5))}.picker-panel .picker-mask-top[data-v-171df494]:after{content:\\\"\\\";display:block;position:absolute;left:0;right:0;bottom:0;border-bottom:1px solid #ebebeb;transform:scaleY(.5)}.picker-panel .picker-mask-bottom[data-v-171df494]{bottom:24px;background:linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.5))}.picker-panel .picker-mask-bottom[data-v-171df494]:before{content:\\\"\\\";display:block;position:absolute;left:0;right:0;top:0;border-bottom:1px solid #ebebeb;transform:scaleY(.5)}.picker-wheel-wrapper[data-v-171df494]{display:flex;align-items:stretch;height:100%}.picker-wheel-wrapper .picker-wheel[data-v-171df494]{flex:1;overflow:hidden}.picker-wheel-wrapper .wheel-scroll[data-v-171df494]{margin-top:72px}.picker-wheel-wrapper .wheel-scroll .wheel-item[data-v-171df494]{height:34px;line-height:34px;font-size:17px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}\", \"\"]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-171df494\",\"scoped\":true,\"hasInlineConfig\":false}!./node_modules/sass-loader/lib/loader.js!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/lib/vue-awesome-picker.vue\n// module id = 5\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 6\n// module chunks = 0","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\nvar listToStyles = require('./listToStyles')\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/addStylesClient.js\n// module id = 7\n// module chunks = 0","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/listToStyles.js\n// module id = 8\n// module chunks = 0","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n  rawScriptExports,\n  compiledTemplate,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier /* server only */\n) {\n  var esModule\n  var scriptExports = rawScriptExports = rawScriptExports || {}\n\n  // ES6 modules interop\n  var type = typeof rawScriptExports.default\n  if (type === 'object' || type === 'function') {\n    esModule = rawScriptExports\n    scriptExports = rawScriptExports.default\n  }\n\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (compiledTemplate) {\n    options.render = compiledTemplate.render\n    options.staticRenderFns = compiledTemplate.staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = injectStyles\n  }\n\n  if (hook) {\n    var functional = options.functional\n    var existing = functional\n      ? options.render\n      : options.beforeCreate\n\n    if (!functional) {\n      // inject component registration as beforeCreate hook\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    } else {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functioal component in vue file\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return existing(h, context)\n      }\n    }\n  }\n\n  return {\n    esModule: esModule,\n    exports: scriptExports,\n    options: options\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/component-normalizer.js\n// module id = 9\n// module chunks = 0","/*!\n * better-normal-scroll v1.8.4\n * (c) 2016-2018 ustbhuangyi\n * Released under the MIT License.\n */\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\nfunction eventMixin(BScroll) {\n  BScroll.prototype.on = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    if (!this._events[type]) {\n      this._events[type] = [];\n    }\n\n    this._events[type].push([fn, context]);\n  };\n\n  BScroll.prototype.once = function (type, fn) {\n    var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this;\n\n    function magic() {\n      this.off(type, magic);\n\n      fn.apply(context, arguments);\n    }\n    // To expose the corresponding function method in order to execute the off method\n    magic.fn = fn;\n\n    this.on(type, magic);\n  };\n\n  BScroll.prototype.off = function (type, fn) {\n    var _events = this._events[type];\n    if (!_events) {\n      return;\n    }\n\n    var count = _events.length;\n    while (count--) {\n      if (_events[count][0] === fn || _events[count][0] && _events[count][0].fn === fn) {\n        _events[count][0] = undefined;\n      }\n    }\n  };\n\n  BScroll.prototype.trigger = function (type) {\n    var events = this._events[type];\n    if (!events) {\n      return;\n    }\n\n    var len = events.length;\n    var eventsCopy = [].concat(toConsumableArray(events));\n    for (var i = 0; i < len; i++) {\n      var event = eventsCopy[i];\n\n      var _event = slicedToArray(event, 2),\n          fn = _event[0],\n          context = _event[1];\n\n      if (fn) {\n        fn.apply(context, [].slice.call(arguments, 1));\n      }\n    }\n  };\n}\n\n// ssr support\nvar inBrowser = typeof window !== 'undefined';\nvar ua = inBrowser && navigator.userAgent.toLowerCase();\nvar isWeChatDevTools = ua && /wechatdevtools/.test(ua);\nvar isAndroid = ua && ua.indexOf('android') > 0;\n\nfunction getNow() {\n  return window.performance && window.performance.now ? window.performance.now() + window.performance.timing.navigationStart : +new Date();\n}\n\nfunction extend(target) {\n  for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    rest[_key - 1] = arguments[_key];\n  }\n\n  for (var i = 0; i < rest.length; i++) {\n    var source = rest[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target;\n}\n\nfunction isUndef(v) {\n  return v === undefined || v === null;\n}\n\nvar elementStyle = inBrowser && document.createElement('div').style;\n\nvar vendor = function () {\n  if (!inBrowser) {\n    return false;\n  }\n  var transformNames = {\n    webkit: 'webkitTransform',\n    Moz: 'MozTransform',\n    O: 'OTransform',\n    ms: 'msTransform',\n    standard: 'transform'\n  };\n\n  for (var key in transformNames) {\n    if (elementStyle[transformNames[key]] !== undefined) {\n      return key;\n    }\n  }\n\n  return false;\n}();\n\nfunction prefixStyle(style) {\n  if (vendor === false) {\n    return false;\n  }\n\n  if (vendor === 'standard') {\n    if (style === 'transitionEnd') {\n      return 'transitionend';\n    }\n    return style;\n  }\n\n  return vendor + style.charAt(0).toUpperCase() + style.substr(1);\n}\n\nfunction addEvent(el, type, fn, capture) {\n  el.addEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction removeEvent(el, type, fn, capture) {\n  el.removeEventListener(type, fn, { passive: false, capture: !!capture });\n}\n\nfunction offset(el) {\n  var left = 0;\n  var top = 0;\n\n  while (el) {\n    left -= el.offsetLeft;\n    top -= el.offsetTop;\n    el = el.offsetParent;\n  }\n\n  return {\n    left: left,\n    top: top\n  };\n}\n\nvar transform = prefixStyle('transform');\n\nvar hasPerspective = inBrowser && prefixStyle('perspective') in elementStyle;\n// fix issue #361\nvar hasTouch = inBrowser && ('ontouchstart' in window || isWeChatDevTools);\nvar hasTransform = transform !== false;\nvar hasTransition = inBrowser && prefixStyle('transition') in elementStyle;\n\nvar style = {\n  transform: transform,\n  transitionTimingFunction: prefixStyle('transitionTimingFunction'),\n  transitionDuration: prefixStyle('transitionDuration'),\n  transitionProperty: prefixStyle('transitionProperty'),\n  transitionDelay: prefixStyle('transitionDelay'),\n  transformOrigin: prefixStyle('transformOrigin'),\n  transitionEnd: prefixStyle('transitionEnd')\n};\n\nvar TOUCH_EVENT = 1;\nvar MOUSE_EVENT = 2;\n\nvar eventType = {\n  touchstart: TOUCH_EVENT,\n  touchmove: TOUCH_EVENT,\n  touchend: TOUCH_EVENT,\n\n  mousedown: MOUSE_EVENT,\n  mousemove: MOUSE_EVENT,\n  mouseup: MOUSE_EVENT\n};\n\nfunction getRect(el) {\n  if (el instanceof window.SVGElement) {\n    var rect = el.getBoundingClientRect();\n    return {\n      top: rect.top,\n      left: rect.left,\n      width: rect.width,\n      height: rect.height\n    };\n  } else {\n    return {\n      top: el.offsetTop,\n      left: el.offsetLeft,\n      width: el.offsetWidth,\n      height: el.offsetHeight\n    };\n  }\n}\n\nfunction preventDefaultException(el, exceptions) {\n  for (var i in exceptions) {\n    if (exceptions[i].test(el[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction tap(e, eventName) {\n  var ev = document.createEvent('Event');\n  ev.initEvent(eventName, true, true);\n  ev.pageX = e.pageX;\n  ev.pageY = e.pageY;\n  e.target.dispatchEvent(ev);\n}\n\nfunction click(e) {\n  var eventSource = void 0;\n  if (e.type === 'mouseup' || e.type === 'mousecancel') {\n    eventSource = e;\n  } else if (e.type === 'touchend' || e.type === 'touchcancel') {\n    eventSource = e.changedTouches[0];\n  }\n  var posSrc = {};\n  if (eventSource) {\n    posSrc.screenX = eventSource.screenX || 0;\n    posSrc.screenY = eventSource.screenY || 0;\n    posSrc.clientX = eventSource.clientX || 0;\n    posSrc.clientY = eventSource.clientY || 0;\n  }\n  var ev = void 0;\n  var event = 'click';\n  var bubbles = true;\n  var cancelable = true;\n  if (typeof MouseEvent !== 'undefined') {\n    try {\n      ev = new MouseEvent(event, extend({\n        bubbles: bubbles,\n        cancelable: cancelable\n      }, posSrc));\n    } catch (e) {\n      createEvent();\n    }\n  } else {\n    createEvent();\n  }\n\n  function createEvent() {\n    ev = document.createEvent('Event');\n    ev.initEvent(event, bubbles, cancelable);\n    extend(ev, posSrc);\n  }\n\n  // forwardedTouchEvent set to true in case of the conflict with fastclick\n  ev.forwardedTouchEvent = true;\n  ev._constructed = true;\n  e.target.dispatchEvent(ev);\n}\n\nfunction prepend(el, target) {\n  if (target.firstChild) {\n    before(el, target.firstChild);\n  } else {\n    target.appendChild(el);\n  }\n}\n\nfunction before(el, target) {\n  target.parentNode.insertBefore(el, target);\n}\n\nfunction removeChild(el, child) {\n  el.removeChild(child);\n}\n\nvar DEFAULT_OPTIONS = {\n  startX: 0,\n  startY: 0,\n  scrollX: false,\n  scrollY: true,\n  freeScroll: false,\n  directionLockThreshold: 5,\n  eventPassthrough: '',\n  click: false,\n  tap: false,\n  bounce: true,\n  bounceTime: 800,\n  momentum: true,\n  momentumLimitTime: 300,\n  momentumLimitDistance: 15,\n  swipeTime: 2500,\n  swipeBounceTime: 500,\n  deceleration: 0.001,\n  flickLimitTime: 200,\n  flickLimitDistance: 100,\n  resizePolling: 60,\n  probeType: 0,\n  preventDefault: true,\n  preventDefaultException: {\n    tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/\n  },\n  HWCompositing: true,\n  useTransition: true,\n  useTransform: true,\n  bindToWrapper: false,\n  disableMouse: hasTouch,\n  disableTouch: !hasTouch,\n  observeDOM: true,\n  autoBlur: true,\n  /**\n   * for picker\n   * wheel: {\n   *   selectedIndex: 0,\n   *   rotate: 25,\n   *   adjustTime: 400\n   *   wheelWrapperClass: 'wheel-scroll',\n   *   wheelItemClass: 'wheel-item'\n   * }\n   */\n  wheel: false,\n  /**\n   * for slide\n   * snap: {\n   *   loop: false,\n   *   el: domEl,\n   *   threshold: 0.1,\n   *   stepX: 100,\n   *   stepY: 100,\n   *   speed: 400,\n   *   easing: {\n   *     style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n   *     fn: function (t) {\n   *       return t * (2 - t)\n   *     }\n   *   }\n   *   listenFlick: true\n   * }\n   */\n  snap: false,\n  /**\n   * for scrollbar\n   * scrollbar: {\n   *   fade: true,\n   *   interactive: false\n   * }\n   */\n  scrollbar: false,\n  /**\n   * for pull down and refresh\n   * pullDownRefresh: {\n   *   threshold: 50,\n   *   stop: 20\n   * }\n   */\n  pullDownRefresh: false,\n  /**\n   * for pull up and load\n   * pullUpLoad: {\n   *   threshold: 50\n   * }\n   */\n  pullUpLoad: false,\n  /**\n   * for mouse wheel\n   * mouseWheel:{\n   *   speed: 20,\n   *   invert: false\n   * }\n   */\n  mouseWheel: false\n};\n\nfunction initMixin(BScroll) {\n  BScroll.prototype._init = function (el, options) {\n    this._handleOptions(options);\n\n    // init private custom events\n    this._events = {};\n\n    this.x = 0;\n    this.y = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n\n    this._addDOMEvents();\n\n    this._initExtFeatures();\n\n    this._watchTransition();\n\n    if (this.options.observeDOM) {\n      this._initDOMObserver();\n    }\n\n    if (this.options.autoBlur) {\n      this._handleAutoBlur();\n    }\n\n    this.refresh();\n\n    if (!this.options.snap) {\n      this.scrollTo(this.options.startX, this.options.startY);\n    }\n\n    this.enable();\n  };\n\n  BScroll.prototype._handleOptions = function (options) {\n    this.options = extend({}, DEFAULT_OPTIONS, options);\n\n    this.translateZ = this.options.HWCompositing && hasPerspective ? ' translateZ(0)' : '';\n\n    this.options.useTransition = this.options.useTransition && hasTransition;\n    this.options.useTransform = this.options.useTransform && hasTransform;\n\n    this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;\n\n    // If you want eventPassthrough I have to lock one of the axes\n    this.options.scrollX = this.options.eventPassthrough === 'horizontal' ? false : this.options.scrollX;\n    this.options.scrollY = this.options.eventPassthrough === 'vertical' ? false : this.options.scrollY;\n\n    // With eventPassthrough we also need lockDirection mechanism\n    this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;\n    this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;\n\n    if (this.options.tap === true) {\n      this.options.tap = 'tap';\n    }\n  };\n\n  BScroll.prototype._addDOMEvents = function () {\n    var eventOperation = addEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._removeDOMEvents = function () {\n    var eventOperation = removeEvent;\n    this._handleDOMEvents(eventOperation);\n  };\n\n  BScroll.prototype._handleDOMEvents = function (eventOperation) {\n    var target = this.options.bindToWrapper ? this.wrapper : window;\n    eventOperation(window, 'orientationchange', this);\n    eventOperation(window, 'resize', this);\n\n    if (this.options.click) {\n      eventOperation(this.wrapper, 'click', this, true);\n    }\n\n    if (!this.options.disableMouse) {\n      eventOperation(this.wrapper, 'mousedown', this);\n      eventOperation(target, 'mousemove', this);\n      eventOperation(target, 'mousecancel', this);\n      eventOperation(target, 'mouseup', this);\n    }\n\n    if (hasTouch && !this.options.disableTouch) {\n      eventOperation(this.wrapper, 'touchstart', this);\n      eventOperation(target, 'touchmove', this);\n      eventOperation(target, 'touchcancel', this);\n      eventOperation(target, 'touchend', this);\n    }\n\n    eventOperation(this.scroller, style.transitionEnd, this);\n  };\n\n  BScroll.prototype._initExtFeatures = function () {\n    if (this.options.snap) {\n      this._initSnap();\n    }\n    if (this.options.scrollbar) {\n      this._initScrollbar();\n    }\n    if (this.options.pullUpLoad) {\n      this._initPullUp();\n    }\n    if (this.options.pullDownRefresh) {\n      this._initPullDown();\n    }\n    if (this.options.wheel) {\n      this._initWheel();\n    }\n    if (this.options.mouseWheel) {\n      this._initMouseWheel();\n    }\n  };\n\n  BScroll.prototype._watchTransition = function () {\n    if (typeof Object.defineProperty !== 'function') {\n      return;\n    }\n    var me = this;\n    var isInTransition = false;\n    Object.defineProperty(this, 'isInTransition', {\n      get: function get() {\n        return isInTransition;\n      },\n      set: function set(newVal) {\n        isInTransition = newVal;\n        // fix issue #359\n        var el = me.scroller.children.length ? me.scroller.children : [me.scroller];\n        var pointerEvents = isInTransition && !me.pulling ? 'none' : 'auto';\n        for (var i = 0; i < el.length; i++) {\n          el[i].style.pointerEvents = pointerEvents;\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._handleAutoBlur = function () {\n    this.on('beforeScrollStart', function () {\n      var activeElement = document.activeElement;\n      if (activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA')) {\n        activeElement.blur();\n      }\n    });\n  };\n\n  BScroll.prototype._initDOMObserver = function () {\n    var _this = this;\n\n    if (typeof MutationObserver !== 'undefined') {\n      var timer = void 0;\n      var observer = new MutationObserver(function (mutations) {\n        // don't do any refresh during the transition, or outside of the boundaries\n        if (_this._shouldNotRefresh()) {\n          return;\n        }\n        var immediateRefresh = false;\n        var deferredRefresh = false;\n        for (var i = 0; i < mutations.length; i++) {\n          var mutation = mutations[i];\n          if (mutation.type !== 'attributes') {\n            immediateRefresh = true;\n            break;\n          } else {\n            if (mutation.target !== _this.scroller) {\n              deferredRefresh = true;\n              break;\n            }\n          }\n        }\n        if (immediateRefresh) {\n          _this.refresh();\n        } else if (deferredRefresh) {\n          // attributes changes too often\n          clearTimeout(timer);\n          timer = setTimeout(function () {\n            if (!_this._shouldNotRefresh()) {\n              _this.refresh();\n            }\n          }, 60);\n        }\n      });\n      var config = {\n        attributes: true,\n        childList: true,\n        subtree: true\n      };\n      observer.observe(this.scroller, config);\n\n      this.on('destroy', function () {\n        observer.disconnect();\n      });\n    } else {\n      this._checkDOMUpdate();\n    }\n  };\n\n  BScroll.prototype._shouldNotRefresh = function () {\n    var outsideBoundaries = this.x > 0 || this.x < this.maxScrollX || this.y > 0 || this.y < this.maxScrollY;\n\n    return this.isInTransition || this.stopFromTransition || outsideBoundaries;\n  };\n\n  BScroll.prototype._checkDOMUpdate = function () {\n    var scrollerRect = getRect(this.scroller);\n    var oldWidth = scrollerRect.width;\n    var oldHeight = scrollerRect.height;\n\n    function check() {\n      if (this.destroyed) {\n        return;\n      }\n      scrollerRect = getRect(this.scroller);\n      var newWidth = scrollerRect.width;\n      var newHeight = scrollerRect.height;\n\n      if (oldWidth !== newWidth || oldHeight !== newHeight) {\n        this.refresh();\n      }\n      oldWidth = newWidth;\n      oldHeight = newHeight;\n\n      next.call(this);\n    }\n\n    function next() {\n      var _this2 = this;\n\n      setTimeout(function () {\n        check.call(_this2);\n      }, 1000);\n    }\n\n    next.call(this);\n  };\n\n  BScroll.prototype.handleEvent = function (e) {\n    switch (e.type) {\n      case 'touchstart':\n      case 'mousedown':\n        this._start(e);\n        break;\n      case 'touchmove':\n      case 'mousemove':\n        this._move(e);\n        break;\n      case 'touchend':\n      case 'mouseup':\n      case 'touchcancel':\n      case 'mousecancel':\n        this._end(e);\n        break;\n      case 'orientationchange':\n      case 'resize':\n        this._resize();\n        break;\n      case 'transitionend':\n      case 'webkitTransitionEnd':\n      case 'oTransitionEnd':\n      case 'MSTransitionEnd':\n        this._transitionEnd(e);\n        break;\n      case 'click':\n        if (this.enabled && !e._constructed) {\n          if (!preventDefaultException(e.target, this.options.preventDefaultException)) {\n            e.preventDefault();\n            e.stopPropagation();\n          }\n        }\n        break;\n      case 'wheel':\n      case 'DOMMouseScroll':\n      case 'mousewheel':\n        this._onMouseWheel(e);\n        break;\n    }\n  };\n\n  BScroll.prototype.refresh = function () {\n    var wrapperRect = getRect(this.wrapper);\n    this.wrapperWidth = wrapperRect.width;\n    this.wrapperHeight = wrapperRect.height;\n\n    var scrollerRect = getRect(this.scroller);\n    this.scrollerWidth = scrollerRect.width;\n    this.scrollerHeight = scrollerRect.height;\n\n    var wheel = this.options.wheel;\n    if (wheel) {\n      this.items = this.scroller.children;\n      this.options.itemHeight = this.itemHeight = this.items.length ? this.scrollerHeight / this.items.length : 0;\n      if (this.selectedIndex === undefined) {\n        this.selectedIndex = wheel.selectedIndex || 0;\n      }\n      this.options.startY = -this.selectedIndex * this.itemHeight;\n      this.maxScrollX = 0;\n      this.maxScrollY = -this.itemHeight * (this.items.length - 1);\n    } else {\n      this.maxScrollX = this.wrapperWidth - this.scrollerWidth;\n      this.maxScrollY = this.wrapperHeight - this.scrollerHeight;\n    }\n\n    this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;\n    this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;\n\n    if (!this.hasHorizontalScroll) {\n      this.maxScrollX = 0;\n      this.scrollerWidth = this.wrapperWidth;\n    }\n\n    if (!this.hasVerticalScroll) {\n      this.maxScrollY = 0;\n      this.scrollerHeight = this.wrapperHeight;\n    }\n\n    this.endTime = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.wrapperOffset = offset(this.wrapper);\n\n    this.trigger('refresh');\n\n    this.resetPosition();\n  };\n\n  BScroll.prototype.enable = function () {\n    this.enabled = true;\n  };\n\n  BScroll.prototype.disable = function () {\n    this.enabled = false;\n  };\n}\n\nvar ease = {\n\t// easeOutQuint\n\tswipe: {\n\t\tstyle: 'cubic-bezier(0.23, 1, 0.32, 1)',\n\t\tfn: function fn(t) {\n\t\t\treturn 1 + --t * t * t * t * t;\n\t\t}\n\t},\n\t// easeOutQuard\n\tswipeBounce: {\n\t\tstyle: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n\t\tfn: function fn(t) {\n\t\t\treturn t * (2 - t);\n\t\t}\n\t},\n\t// easeOutQuart\n\tbounce: {\n\t\tstyle: 'cubic-bezier(0.165, 0.84, 0.44, 1)',\n\t\tfn: function fn(t) {\n\t\t\treturn 1 - --t * t * t * t;\n\t\t}\n\t}\n};\n\nfunction momentum(current, start, time, lowerMargin, wrapperSize, options) {\n  var distance = current - start;\n  var speed = Math.abs(distance) / time;\n\n  var deceleration = options.deceleration,\n      itemHeight = options.itemHeight,\n      swipeBounceTime = options.swipeBounceTime,\n      wheel = options.wheel,\n      swipeTime = options.swipeTime;\n\n  var duration = swipeTime;\n  var rate = wheel ? 4 : 15;\n\n  var destination = current + speed / deceleration * (distance < 0 ? -1 : 1);\n\n  if (wheel && itemHeight) {\n    destination = Math.round(destination / itemHeight) * itemHeight;\n  }\n\n  if (destination < lowerMargin) {\n    destination = wrapperSize ? Math.max(lowerMargin - wrapperSize / 4, lowerMargin - wrapperSize / rate * speed) : lowerMargin;\n    duration = swipeBounceTime;\n  } else if (destination > 0) {\n    destination = wrapperSize ? Math.min(wrapperSize / 4, wrapperSize / rate * speed) : 0;\n    duration = swipeBounceTime;\n  }\n\n  return {\n    destination: Math.round(destination),\n    duration: duration\n  };\n}\n\nvar DEFAULT_INTERVAL = 100 / 60;\n\nfunction noop() {}\n\nvar requestAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||\n  // if all else fails, use setTimeout\n  function (callback) {\n    return window.setTimeout(callback, (callback.interval || DEFAULT_INTERVAL) / 2); // make interval as precise as possible.\n  };\n}();\n\nvar cancelAnimationFrame = function () {\n  if (!inBrowser) {\n    /* istanbul ignore if */\n    return noop;\n  }\n  return window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || function (id) {\n    window.clearTimeout(id);\n  };\n}();\n\nvar DIRECTION_UP = 1;\nvar DIRECTION_DOWN = -1;\nvar DIRECTION_LEFT = 1;\nvar DIRECTION_RIGHT = -1;\n\nfunction warn(msg) {\n  console.error('[BScroll warn]: ' + msg);\n}\n\nfunction assert(condition, msg) {\n  if (!condition) {\n    throw new Error('[BScroll] ' + msg);\n  }\n}\n\nfunction coreMixin(BScroll) {\n  BScroll.prototype._start = function (e) {\n    var _eventType = eventType[e.type];\n    if (_eventType !== TOUCH_EVENT) {\n      if (e.button !== 0) {\n        return;\n      }\n    }\n    if (!this.enabled || this.destroyed || this.initiated && this.initiated !== _eventType) {\n      return;\n    }\n    this.initiated = _eventType;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n\n    this.moved = false;\n    this.distX = 0;\n    this.distY = 0;\n    this.directionX = 0;\n    this.directionY = 0;\n    this.movingDirectionX = 0;\n    this.movingDirectionY = 0;\n    this.directionLocked = 0;\n\n    this._transitionTime();\n    this.startTime = getNow();\n\n    if (this.options.wheel) {\n      this.target = e.target;\n    }\n\n    this.stop();\n\n    var point = e.touches ? e.touches[0] : e;\n\n    this.startX = this.x;\n    this.startY = this.y;\n    this.absStartX = this.x;\n    this.absStartY = this.y;\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.trigger('beforeScrollStart');\n  };\n\n  BScroll.prototype._move = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n\n    if (this.options.preventDefault) {\n      e.preventDefault();\n    }\n\n    var point = e.touches ? e.touches[0] : e;\n    var deltaX = point.pageX - this.pointX;\n    var deltaY = point.pageY - this.pointY;\n\n    this.pointX = point.pageX;\n    this.pointY = point.pageY;\n\n    this.distX += deltaX;\n    this.distY += deltaY;\n\n    var absDistX = Math.abs(this.distX);\n    var absDistY = Math.abs(this.distY);\n\n    var timestamp = getNow();\n\n    // We need to move at least momentumLimitDistance pixels for the scrolling to initiate\n    if (timestamp - this.endTime > this.options.momentumLimitTime && absDistY < this.options.momentumLimitDistance && absDistX < this.options.momentumLimitDistance) {\n      return;\n    }\n\n    // If you are scrolling in one direction lock the other\n    if (!this.directionLocked && !this.options.freeScroll) {\n      if (absDistX > absDistY + this.options.directionLockThreshold) {\n        this.directionLocked = 'h'; // lock horizontally\n      } else if (absDistY >= absDistX + this.options.directionLockThreshold) {\n        this.directionLocked = 'v'; // lock vertically\n      } else {\n        this.directionLocked = 'n'; // no lock\n      }\n    }\n\n    if (this.directionLocked === 'h') {\n      if (this.options.eventPassthrough === 'vertical') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'horizontal') {\n        this.initiated = false;\n        return;\n      }\n      deltaY = 0;\n    } else if (this.directionLocked === 'v') {\n      if (this.options.eventPassthrough === 'horizontal') {\n        e.preventDefault();\n      } else if (this.options.eventPassthrough === 'vertical') {\n        this.initiated = false;\n        return;\n      }\n      deltaX = 0;\n    }\n\n    deltaX = this.hasHorizontalScroll ? deltaX : 0;\n    deltaY = this.hasVerticalScroll ? deltaY : 0;\n    this.movingDirectionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.movingDirectionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    var newX = this.x + deltaX;\n    var newY = this.y + deltaY;\n\n    // Slow down or stop if outside of the boundaries\n    if (newX > 0 || newX < this.maxScrollX) {\n      if (this.options.bounce) {\n        newX = this.x + deltaX / 3;\n      } else {\n        newX = newX > 0 ? 0 : this.maxScrollX;\n      }\n    }\n    if (newY > 0 || newY < this.maxScrollY) {\n      if (this.options.bounce) {\n        newY = this.y + deltaY / 3;\n      } else {\n        newY = newY > 0 ? 0 : this.maxScrollY;\n      }\n    }\n\n    if (!this.moved) {\n      this.moved = true;\n      this.trigger('scrollStart');\n    }\n\n    this._translate(newX, newY);\n\n    if (timestamp - this.startTime > this.options.momentumLimitTime) {\n      this.startTime = timestamp;\n      this.startX = this.x;\n      this.startY = this.y;\n\n      if (this.options.probeType === 1) {\n        this.trigger('scroll', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n\n    if (this.options.probeType > 1) {\n      this.trigger('scroll', {\n        x: this.x,\n        y: this.y\n      });\n    }\n\n    var scrollLeft = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;\n    var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n\n    var pX = this.pointX - scrollLeft;\n    var pY = this.pointY - scrollTop;\n\n    if (pX > document.documentElement.clientWidth - this.options.momentumLimitDistance || pX < this.options.momentumLimitDistance || pY < this.options.momentumLimitDistance || pY > document.documentElement.clientHeight - this.options.momentumLimitDistance) {\n      this._end(e);\n    }\n  };\n\n  BScroll.prototype._end = function (e) {\n    if (!this.enabled || this.destroyed || eventType[e.type] !== this.initiated) {\n      return;\n    }\n    this.initiated = false;\n\n    if (this.options.preventDefault && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n      e.preventDefault();\n    }\n\n    this.trigger('touchEnd', {\n      x: this.x,\n      y: this.y\n    });\n\n    this.isInTransition = false;\n\n    // ensures that the last position is rounded\n    var newX = Math.round(this.x);\n    var newY = Math.round(this.y);\n\n    var deltaX = newX - this.absStartX;\n    var deltaY = newY - this.absStartY;\n    this.directionX = deltaX > 0 ? DIRECTION_RIGHT : deltaX < 0 ? DIRECTION_LEFT : 0;\n    this.directionY = deltaY > 0 ? DIRECTION_DOWN : deltaY < 0 ? DIRECTION_UP : 0;\n\n    // if configure pull down refresh, check it first\n    if (this.options.pullDownRefresh && this._checkPullDown()) {\n      return;\n    }\n\n    // check if it is a click operation\n    if (this._checkClick(e)) {\n      this.trigger('scrollCancel');\n      return;\n    }\n\n    // reset if we are outside of the boundaries\n    if (this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      return;\n    }\n\n    this.scrollTo(newX, newY);\n\n    this.endTime = getNow();\n    var duration = this.endTime - this.startTime;\n    var absDistX = Math.abs(newX - this.startX);\n    var absDistY = Math.abs(newY - this.startY);\n\n    // flick\n    if (this._events.flick && duration < this.options.flickLimitTime && absDistX < this.options.flickLimitDistance && absDistY < this.options.flickLimitDistance) {\n      this.trigger('flick');\n      return;\n    }\n\n    var time = 0;\n    // start momentum animation if needed\n    if (this.options.momentum && duration < this.options.momentumLimitTime && (absDistY > this.options.momentumLimitDistance || absDistX > this.options.momentumLimitDistance)) {\n      var momentumX = this.hasHorizontalScroll ? momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options) : { destination: newX, duration: 0 };\n      var momentumY = this.hasVerticalScroll ? momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options) : { destination: newY, duration: 0 };\n      newX = momentumX.destination;\n      newY = momentumY.destination;\n      time = Math.max(momentumX.duration, momentumY.duration);\n      this.isInTransition = true;\n    } else {\n      if (this.options.wheel) {\n        newY = Math.round(newY / this.itemHeight) * this.itemHeight;\n        time = this.options.wheel.adjustTime || 400;\n      }\n    }\n\n    var easing = ease.swipe;\n    if (this.options.snap) {\n      var snap = this._nearestSnap(newX, newY);\n      this.currentPage = snap;\n      time = this.options.snapSpeed || Math.max(Math.max(Math.min(Math.abs(newX - snap.x), 1000), Math.min(Math.abs(newY - snap.y), 1000)), 300);\n      newX = snap.x;\n      newY = snap.y;\n\n      this.directionX = 0;\n      this.directionY = 0;\n      easing = this.options.snap.easing || ease.bounce;\n    }\n\n    if (newX !== this.x || newY !== this.y) {\n      // change easing function when scroller goes out of the boundaries\n      if (newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY) {\n        easing = ease.swipeBounce;\n      }\n      this.scrollTo(newX, newY, time, easing);\n      return;\n    }\n\n    if (this.options.wheel) {\n      this.selectedIndex = Math.round(Math.abs(this.y / this.itemHeight));\n    }\n    this.trigger('scrollEnd', {\n      x: this.x,\n      y: this.y\n    });\n  };\n\n  BScroll.prototype._checkClick = function (e) {\n    // when in the process of pulling down, it should not prevent click\n    var preventClick = this.stopFromTransition && !this.pulling;\n    this.stopFromTransition = false;\n\n    // we scrolled less than 15 pixels\n    if (!this.moved) {\n      if (this.options.wheel) {\n        if (this.target && this.target.className === this.options.wheel.wheelWrapperClass) {\n          var index = Math.abs(Math.round(this.y / this.itemHeight));\n          var _offset = Math.round((this.pointY + offset(this.target).top - this.itemHeight / 2) / this.itemHeight);\n          this.target = this.items[index + _offset];\n        }\n        this.scrollToElement(this.target, this.options.wheel.adjustTime || 400, true, true, ease.swipe);\n        return true;\n      } else {\n        if (!preventClick) {\n          if (this.options.tap) {\n            tap(e, this.options.tap);\n          }\n\n          if (this.options.click && !preventDefaultException(e.target, this.options.preventDefaultException)) {\n            click(e);\n          }\n          return true;\n        }\n        return false;\n      }\n    }\n    return false;\n  };\n\n  BScroll.prototype._resize = function () {\n    var _this = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    // fix a scroll problem under Android condition\n    if (isAndroid) {\n      this.wrapper.scrollTop = 0;\n    }\n    clearTimeout(this.resizeTimeout);\n    this.resizeTimeout = setTimeout(function () {\n      _this.refresh();\n    }, this.options.resizePolling);\n  };\n\n  BScroll.prototype._startProbe = function () {\n    cancelAnimationFrame(this.probeTimer);\n    this.probeTimer = requestAnimationFrame(probe);\n\n    var me = this;\n\n    function probe() {\n      var pos = me.getComputedPosition();\n      me.trigger('scroll', pos);\n      if (!me.isInTransition) {\n        me.trigger('scrollEnd', pos);\n        return;\n      }\n      me.probeTimer = requestAnimationFrame(probe);\n    }\n  };\n\n  BScroll.prototype._transitionProperty = function () {\n    var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n    this.scrollerStyle[style.transitionProperty] = property;\n  };\n\n  BScroll.prototype._transitionTime = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    this.scrollerStyle[style.transitionDuration] = time + 'ms';\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionDuration] = time + 'ms';\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i = 0; _i < this.indicators.length; _i++) {\n        this.indicators[_i].transitionTime(time);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionTimingFunction = function (easing) {\n    this.scrollerStyle[style.transitionTimingFunction] = easing;\n\n    if (this.options.wheel) {\n      for (var i = 0; i < this.items.length; i++) {\n        this.items[i].style[style.transitionTimingFunction] = easing;\n      }\n    }\n\n    if (this.indicators) {\n      for (var _i2 = 0; _i2 < this.indicators.length; _i2++) {\n        this.indicators[_i2].transitionTimingFunction(easing);\n      }\n    }\n  };\n\n  BScroll.prototype._transitionEnd = function (e) {\n    if (e.target !== this.scroller || !this.isInTransition) {\n      return;\n    }\n\n    this._transitionTime();\n    if (!this.pulling && !this.resetPosition(this.options.bounceTime, ease.bounce)) {\n      this.isInTransition = false;\n      if (this.options.probeType !== 3) {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n    }\n  };\n\n  BScroll.prototype._translate = function (x, y) {\n    assert(!isUndef(x) && !isUndef(y), 'Oops! translate x or y is null or undefined. please check your code.');\n    if (this.options.useTransform) {\n      this.scrollerStyle[style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;\n    } else {\n      x = Math.round(x);\n      y = Math.round(y);\n      this.scrollerStyle.left = x + 'px';\n      this.scrollerStyle.top = y + 'px';\n    }\n\n    if (this.options.wheel) {\n      var _options$wheel$rotate = this.options.wheel.rotate,\n          rotate = _options$wheel$rotate === undefined ? 25 : _options$wheel$rotate;\n\n      for (var i = 0; i < this.items.length; i++) {\n        var deg = rotate * (y / this.itemHeight + i);\n        this.items[i].style[style.transform] = 'rotateX(' + deg + 'deg)';\n      }\n    }\n\n    this.x = x;\n    this.y = y;\n\n    if (this.indicators) {\n      for (var _i3 = 0; _i3 < this.indicators.length; _i3++) {\n        this.indicators[_i3].updatePosition();\n      }\n    }\n  };\n\n  BScroll.prototype._animate = function (destX, destY, duration, easingFn) {\n    var me = this;\n    var startX = this.x;\n    var startY = this.y;\n    var startTime = getNow();\n    var destTime = startTime + duration;\n\n    function step() {\n      var now = getNow();\n\n      if (now >= destTime) {\n        me.isAnimating = false;\n        me._translate(destX, destY);\n\n        if (!me.pulling && !me.resetPosition(me.options.bounceTime)) {\n          me.trigger('scrollEnd', {\n            x: me.x,\n            y: me.y\n          });\n        }\n        return;\n      }\n      now = (now - startTime) / duration;\n      var easing = easingFn(now);\n      var newX = (destX - startX) * easing + startX;\n      var newY = (destY - startY) * easing + startY;\n\n      me._translate(newX, newY);\n\n      if (me.isAnimating) {\n        me.animateTimer = requestAnimationFrame(step);\n      }\n\n      if (me.options.probeType === 3) {\n        me.trigger('scroll', {\n          x: me.x,\n          y: me.y\n        });\n      }\n    }\n\n    this.isAnimating = true;\n    cancelAnimationFrame(this.animateTimer);\n    step();\n  };\n\n  BScroll.prototype.scrollBy = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n    x = this.x + x;\n    y = this.y + y;\n\n    this.scrollTo(x, y, time, easing);\n  };\n\n  BScroll.prototype.scrollTo = function (x, y) {\n    var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n    var easing = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ease.bounce;\n\n    this.isInTransition = this.options.useTransition && time > 0 && (x !== this.x || y !== this.y);\n\n    if (!time || this.options.useTransition) {\n      this._transitionProperty();\n      this._transitionTimingFunction(easing.style);\n      this._transitionTime(time);\n      this._translate(x, y);\n\n      if (time && this.options.probeType === 3) {\n        this._startProbe();\n      }\n\n      if (this.options.wheel) {\n        if (y > 0) {\n          this.selectedIndex = 0;\n        } else if (y < this.maxScrollY) {\n          this.selectedIndex = this.items.length - 1;\n        } else {\n          this.selectedIndex = Math.round(Math.abs(y / this.itemHeight));\n        }\n      }\n    } else {\n      this._animate(x, y, time, easing.fn);\n    }\n  };\n\n  BScroll.prototype.scrollToElement = function (el, time, offsetX, offsetY, easing) {\n    if (!el) {\n      return;\n    }\n    el = el.nodeType ? el : this.scroller.querySelector(el);\n\n    if (this.options.wheel && el.className !== this.options.wheel.wheelItemClass) {\n      return;\n    }\n\n    var pos = offset(el);\n    pos.left -= this.wrapperOffset.left;\n    pos.top -= this.wrapperOffset.top;\n\n    // if offsetX/Y are true we center the element to the screen\n    if (offsetX === true) {\n      offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);\n    }\n    if (offsetY === true) {\n      offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);\n    }\n\n    pos.left -= offsetX || 0;\n    pos.top -= offsetY || 0;\n    pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;\n    pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;\n\n    if (this.options.wheel) {\n      pos.top = Math.round(pos.top / this.itemHeight) * this.itemHeight;\n    }\n\n    this.scrollTo(pos.left, pos.top, time, easing);\n  };\n\n  BScroll.prototype.resetPosition = function () {\n    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n    var easeing = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ease.bounce;\n\n    var x = this.x;\n    var roundX = Math.round(x);\n    if (!this.hasHorizontalScroll || roundX > 0) {\n      x = 0;\n    } else if (roundX < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    var y = this.y;\n    var roundY = Math.round(y);\n    if (!this.hasVerticalScroll || roundY > 0) {\n      y = 0;\n    } else if (roundY < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    if (x === this.x && y === this.y) {\n      return false;\n    }\n\n    this.scrollTo(x, y, time, easeing);\n\n    return true;\n  };\n\n  BScroll.prototype.getComputedPosition = function () {\n    var matrix = window.getComputedStyle(this.scroller, null);\n    var x = void 0;\n    var y = void 0;\n\n    if (this.options.useTransform) {\n      matrix = matrix[style.transform].split(')')[0].split(', ');\n      x = +(matrix[12] || matrix[4]);\n      y = +(matrix[13] || matrix[5]);\n    } else {\n      x = +matrix.left.replace(/[^-\\d.]/g, '');\n      y = +matrix.top.replace(/[^-\\d.]/g, '');\n    }\n\n    return {\n      x: x,\n      y: y\n    };\n  };\n\n  BScroll.prototype.stop = function () {\n    if (this.options.useTransition && this.isInTransition) {\n      this.isInTransition = false;\n      var pos = this.getComputedPosition();\n      this._translate(pos.x, pos.y);\n      if (this.options.wheel) {\n        this.target = this.items[Math.round(-pos.y / this.itemHeight)];\n      } else {\n        this.trigger('scrollEnd', {\n          x: this.x,\n          y: this.y\n        });\n      }\n      this.stopFromTransition = true;\n    } else if (!this.options.useTransition && this.isAnimating) {\n      this.isAnimating = false;\n      this.trigger('scrollEnd', {\n        x: this.x,\n        y: this.y\n      });\n      this.stopFromTransition = true;\n    }\n  };\n\n  BScroll.prototype.destroy = function () {\n    this.destroyed = true;\n    this.trigger('destroy');\n\n    this._removeDOMEvents();\n    // remove custom events\n    this._events = {};\n  };\n}\n\nfunction snapMixin(BScroll) {\n  BScroll.prototype._initSnap = function () {\n    var _this = this;\n\n    this.currentPage = {};\n    var snap = this.options.snap;\n\n    if (snap.loop) {\n      var children = this.scroller.children;\n      if (children.length > 0) {\n        prepend(children[children.length - 1].cloneNode(true), this.scroller);\n        this.scroller.appendChild(children[1].cloneNode(true));\n      }\n    }\n\n    var el = snap.el;\n    if (typeof el === 'string') {\n      el = this.scroller.querySelectorAll(el);\n    }\n\n    this.on('refresh', function () {\n      _this.pages = [];\n\n      if (!_this.wrapperWidth || !_this.wrapperHeight || !_this.scrollerWidth || !_this.scrollerHeight) {\n        return;\n      }\n\n      var stepX = snap.stepX || _this.wrapperWidth;\n      var stepY = snap.stepY || _this.wrapperHeight;\n\n      var x = 0;\n      var y = void 0;\n      var cx = void 0;\n      var cy = void 0;\n      var i = 0;\n      var l = void 0;\n      var m = 0;\n      var n = void 0;\n      var rect = void 0;\n      if (!el) {\n        cx = Math.round(stepX / 2);\n        cy = Math.round(stepY / 2);\n\n        while (x > -_this.scrollerWidth) {\n          _this.pages[i] = [];\n          l = 0;\n          y = 0;\n\n          while (y > -_this.scrollerHeight) {\n            _this.pages[i][l] = {\n              x: Math.max(x, _this.maxScrollX),\n              y: Math.max(y, _this.maxScrollY),\n              width: stepX,\n              height: stepY,\n              cx: x - cx,\n              cy: y - cy\n            };\n\n            y -= stepY;\n            l++;\n          }\n\n          x -= stepX;\n          i++;\n        }\n      } else {\n        l = el.length;\n        n = -1;\n\n        for (; i < l; i++) {\n          rect = getRect(el[i]);\n          if (i === 0 || rect.left <= getRect(el[i - 1]).left) {\n            m = 0;\n            n++;\n          }\n\n          if (!_this.pages[m]) {\n            _this.pages[m] = [];\n          }\n\n          x = Math.max(-rect.left, _this.maxScrollX);\n          y = Math.max(-rect.top, _this.maxScrollY);\n          cx = x - Math.round(rect.width / 2);\n          cy = y - Math.round(rect.height / 2);\n\n          _this.pages[m][n] = {\n            x: x,\n            y: y,\n            width: rect.width,\n            height: rect.height,\n            cx: cx,\n            cy: cy\n          };\n\n          if (x > _this.maxScrollX) {\n            m++;\n          }\n        }\n      }\n\n      var initPage = snap.loop ? 1 : 0;\n      _this._goToPage(_this.currentPage.pageX || initPage, _this.currentPage.pageY || 0, 0);\n\n      // Update snap threshold if needed\n      var snapThreshold = snap.threshold;\n      if (snapThreshold % 1 === 0) {\n        _this.snapThresholdX = snapThreshold;\n        _this.snapThresholdY = snapThreshold;\n      } else {\n        _this.snapThresholdX = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].width * snapThreshold);\n        _this.snapThresholdY = Math.round(_this.pages[_this.currentPage.pageX][_this.currentPage.pageY].height * snapThreshold);\n      }\n    });\n\n    this.on('scrollEnd', function () {\n      if (snap.loop) {\n        if (_this.currentPage.pageX === 0) {\n          _this._goToPage(_this.pages.length - 2, _this.currentPage.pageY, 0);\n        }\n        if (_this.currentPage.pageX === _this.pages.length - 1) {\n          _this._goToPage(1, _this.currentPage.pageY, 0);\n        }\n      }\n    });\n\n    if (snap.listenFlick !== false) {\n      this.on('flick', function () {\n        var time = snap.speed || Math.max(Math.max(Math.min(Math.abs(_this.x - _this.startX), 1000), Math.min(Math.abs(_this.y - _this.startY), 1000)), 300);\n\n        _this._goToPage(_this.currentPage.pageX + _this.directionX, _this.currentPage.pageY + _this.directionY, time);\n      });\n    }\n\n    this.on('destroy', function () {\n      if (snap.loop) {\n        var _children = _this.scroller.children;\n        if (_children.length > 2) {\n          removeChild(_this.scroller, _children[_children.length - 1]);\n          removeChild(_this.scroller, _children[0]);\n        }\n      }\n    });\n  };\n\n  BScroll.prototype._nearestSnap = function (x, y) {\n    if (!this.pages.length) {\n      return { x: 0, y: 0, pageX: 0, pageY: 0 };\n    }\n\n    var i = 0;\n    // Check if we exceeded the snap threshold\n    if (Math.abs(x - this.absStartX) <= this.snapThresholdX && Math.abs(y - this.absStartY) <= this.snapThresholdY) {\n      return this.currentPage;\n    }\n\n    if (x > 0) {\n      x = 0;\n    } else if (x < this.maxScrollX) {\n      x = this.maxScrollX;\n    }\n\n    if (y > 0) {\n      y = 0;\n    } else if (y < this.maxScrollY) {\n      y = this.maxScrollY;\n    }\n\n    var l = this.pages.length;\n    for (; i < l; i++) {\n      if (x >= this.pages[i][0].cx) {\n        x = this.pages[i][0].x;\n        break;\n      }\n    }\n\n    l = this.pages[i].length;\n\n    var m = 0;\n    for (; m < l; m++) {\n      if (y >= this.pages[0][m].cy) {\n        y = this.pages[0][m].y;\n        break;\n      }\n    }\n\n    if (i === this.currentPage.pageX) {\n      i += this.directionX;\n\n      if (i < 0) {\n        i = 0;\n      } else if (i >= this.pages.length) {\n        i = this.pages.length - 1;\n      }\n\n      x = this.pages[i][0].x;\n    }\n\n    if (m === this.currentPage.pageY) {\n      m += this.directionY;\n\n      if (m < 0) {\n        m = 0;\n      } else if (m >= this.pages[0].length) {\n        m = this.pages[0].length - 1;\n      }\n\n      y = this.pages[0][m].y;\n    }\n\n    return {\n      x: x,\n      y: y,\n      pageX: i,\n      pageY: m\n    };\n  };\n\n  BScroll.prototype._goToPage = function (x) {\n    var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n    var time = arguments[2];\n    var easing = arguments[3];\n\n    var snap = this.options.snap;\n\n    if (!snap || !this.pages) {\n      return;\n    }\n\n    easing = easing || snap.easing || ease.bounce;\n\n    if (x >= this.pages.length) {\n      x = this.pages.length - 1;\n    } else if (x < 0) {\n      x = 0;\n    }\n\n    if (!this.pages[x]) {\n      return;\n    }\n\n    if (y >= this.pages[x].length) {\n      y = this.pages[x].length - 1;\n    } else if (y < 0) {\n      y = 0;\n    }\n\n    var posX = this.pages[x][y].x;\n    var posY = this.pages[x][y].y;\n\n    time = time === undefined ? snap.speed || Math.max(Math.max(Math.min(Math.abs(posX - this.x), 1000), Math.min(Math.abs(posY - this.y), 1000)), 300) : time;\n\n    this.currentPage = {\n      x: posX,\n      y: posY,\n      pageX: x,\n      pageY: y\n    };\n    this.scrollTo(posX, posY, time, easing);\n  };\n\n  BScroll.prototype.goToPage = function (x, y, time, easing) {\n    var snap = this.options.snap;\n    if (snap) {\n      if (snap.loop) {\n        var len = this.pages.length - 2;\n        if (x >= len) {\n          x = len - 1;\n        } else if (x < 0) {\n          x = 0;\n        }\n        x += 1;\n      }\n      this._goToPage(x, y, time, easing);\n    }\n  };\n\n  BScroll.prototype.next = function (time, easing) {\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x++;\n    if (x >= this.pages.length && this.hasVerticalScroll) {\n      x = 0;\n      y++;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.prev = function (time, easing) {\n    var x = this.currentPage.pageX;\n    var y = this.currentPage.pageY;\n\n    x--;\n    if (x < 0 && this.hasVerticalScroll) {\n      x = 0;\n      y--;\n    }\n\n    this._goToPage(x, y, time, easing);\n  };\n\n  BScroll.prototype.getCurrentPage = function () {\n    var snap = this.options.snap;\n    if (snap) {\n      if (snap.loop) {\n        var currentPage = extend({}, this.currentPage, {\n          pageX: this.currentPage.pageX - 1\n        });\n        return currentPage;\n      }\n      return this.currentPage;\n    }\n    return null;\n  };\n}\n\nfunction wheelMixin(BScroll) {\n  BScroll.prototype.wheelTo = function () {\n    var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n    if (this.options.wheel) {\n      this.y = -index * this.itemHeight;\n      this.scrollTo(0, this.y);\n    }\n  };\n\n  BScroll.prototype.getSelectedIndex = function () {\n    return this.options.wheel && this.selectedIndex;\n  };\n\n  BScroll.prototype._initWheel = function () {\n    var wheel = this.options.wheel;\n    if (!wheel.wheelWrapperClass) {\n      wheel.wheelWrapperClass = 'wheel-scroll';\n    }\n    if (!wheel.wheelItemClass) {\n      wheel.wheelItemClass = 'wheel-item';\n    }\n    if (wheel.selectedIndex === undefined) {\n      wheel.selectedIndex = 0;\n      warn('wheel option selectedIndex is required!');\n    }\n  };\n}\n\nvar INDICATOR_MIN_LEN = 8;\n\nfunction scrollbarMixin(BScroll) {\n  BScroll.prototype._initScrollbar = function () {\n    var _this = this;\n\n    var _options$scrollbar = this.options.scrollbar,\n        _options$scrollbar$fa = _options$scrollbar.fade,\n        fade = _options$scrollbar$fa === undefined ? true : _options$scrollbar$fa,\n        _options$scrollbar$in = _options$scrollbar.interactive,\n        interactive = _options$scrollbar$in === undefined ? false : _options$scrollbar$in;\n\n    this.indicators = [];\n    var indicator = void 0;\n\n    if (this.options.scrollX) {\n      indicator = {\n        el: createScrollbar('horizontal'),\n        direction: 'horizontal',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    if (this.options.scrollY) {\n      indicator = {\n        el: createScrollbar('vertical'),\n        direction: 'vertical',\n        fade: fade,\n        interactive: interactive\n      };\n      this._insertScrollBar(indicator.el);\n      this.indicators.push(new Indicator(this, indicator));\n    }\n\n    this.on('refresh', function () {\n      for (var i = 0; i < _this.indicators.length; i++) {\n        _this.indicators[i].refresh();\n      }\n    });\n\n    if (fade) {\n      this.on('scrollEnd', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollCancel', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade();\n        }\n      });\n\n      this.on('scrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true);\n        }\n      });\n\n      this.on('beforeScrollStart', function () {\n        for (var i = 0; i < _this.indicators.length; i++) {\n          _this.indicators[i].fade(true, true);\n        }\n      });\n    }\n\n    this.on('destroy', function () {\n      _this._removeScrollBars();\n    });\n  };\n\n  BScroll.prototype._insertScrollBar = function (scrollbar) {\n    this.wrapper.appendChild(scrollbar);\n  };\n\n  BScroll.prototype._removeScrollBars = function () {\n    for (var i = 0; i < this.indicators.length; i++) {\n      this.indicators[i].destroy();\n    }\n  };\n}\n\nfunction createScrollbar(direction) {\n  var scrollbar = document.createElement('div');\n  var indicator = document.createElement('div');\n\n  scrollbar.style.cssText = 'position:absolute;z-index:9999;pointerEvents:none';\n  indicator.style.cssText = 'box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px;';\n\n  indicator.className = 'bscroll-indicator';\n\n  if (direction === 'horizontal') {\n    scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';\n    indicator.style.height = '100%';\n    scrollbar.className = 'bscroll-horizontal-scrollbar';\n  } else {\n    scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';\n    indicator.style.width = '100%';\n    scrollbar.className = 'bscroll-vertical-scrollbar';\n  }\n\n  scrollbar.style.cssText += ';overflow:hidden';\n  scrollbar.appendChild(indicator);\n\n  return scrollbar;\n}\n\nfunction Indicator(scroller, options) {\n  this.wrapper = options.el;\n  this.wrapperStyle = this.wrapper.style;\n  this.indicator = this.wrapper.children[0];\n  this.indicatorStyle = this.indicator.style;\n  this.scroller = scroller;\n  this.direction = options.direction;\n  if (options.fade) {\n    this.visible = 0;\n    this.wrapperStyle.opacity = '0';\n  } else {\n    this.visible = 1;\n  }\n\n  this.sizeRatioX = 1;\n  this.sizeRatioY = 1;\n  this.maxPosX = 0;\n  this.maxPosY = 0;\n  this.x = 0;\n  this.y = 0;\n\n  if (options.interactive) {\n    this._addDOMEvents();\n  }\n}\n\nIndicator.prototype.handleEvent = function (e) {\n  switch (e.type) {\n    case 'touchstart':\n    case 'mousedown':\n      this._start(e);\n      break;\n    case 'touchmove':\n    case 'mousemove':\n      this._move(e);\n      break;\n    case 'touchend':\n    case 'mouseup':\n    case 'touchcancel':\n    case 'mousecancel':\n      this._end(e);\n      break;\n  }\n};\n\nIndicator.prototype.refresh = function () {\n  this.transitionTime();\n  this._calculate();\n  this.updatePosition();\n};\n\nIndicator.prototype.fade = function (visible, hold) {\n  var _this2 = this;\n\n  if (hold && !this.visible) {\n    return;\n  }\n\n  var time = visible ? 250 : 500;\n\n  visible = visible ? '1' : '0';\n\n  this.wrapperStyle[style.transitionDuration] = time + 'ms';\n\n  clearTimeout(this.fadeTimeout);\n  this.fadeTimeout = setTimeout(function () {\n    _this2.wrapperStyle.opacity = visible;\n    _this2.visible = +visible;\n  }, 0);\n};\n\nIndicator.prototype.updatePosition = function () {\n  if (this.direction === 'vertical') {\n    var y = Math.round(this.sizeRatioY * this.scroller.y);\n\n    if (y < 0) {\n      this.transitionTime(500);\n      var height = Math.max(this.indicatorHeight + y * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = height + 'px';\n      y = 0;\n    } else if (y > this.maxPosY) {\n      this.transitionTime(500);\n      var _height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.height = _height + 'px';\n      y = this.maxPosY + this.indicatorHeight - _height;\n    } else {\n      this.indicatorStyle.height = this.indicatorHeight + 'px';\n    }\n    this.y = y;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateY(' + y + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.top = y + 'px';\n    }\n  } else {\n    var x = Math.round(this.sizeRatioX * this.scroller.x);\n\n    if (x < 0) {\n      this.transitionTime(500);\n      var width = Math.max(this.indicatorWidth + x * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = width + 'px';\n      x = 0;\n    } else if (x > this.maxPosX) {\n      this.transitionTime(500);\n      var _width = Math.max(this.indicatorWidth - (x - this.maxPosX) * 3, INDICATOR_MIN_LEN);\n      this.indicatorStyle.width = _width + 'px';\n      x = this.maxPosX + this.indicatorWidth - _width;\n    } else {\n      this.indicatorStyle.width = this.indicatorWidth + 'px';\n    }\n\n    this.x = x;\n\n    if (this.scroller.options.useTransform) {\n      this.indicatorStyle[style.transform] = 'translateX(' + x + 'px)' + this.scroller.translateZ;\n    } else {\n      this.indicatorStyle.left = x + 'px';\n    }\n  }\n};\n\nIndicator.prototype.transitionTime = function () {\n  var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n  this.indicatorStyle[style.transitionDuration] = time + 'ms';\n};\n\nIndicator.prototype.transitionTimingFunction = function (easing) {\n  this.indicatorStyle[style.transitionTimingFunction] = easing;\n};\n\nIndicator.prototype.destroy = function () {\n  this._removeDOMEvents();\n  this.wrapper.parentNode.removeChild(this.wrapper);\n};\n\nIndicator.prototype._start = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this.transitionTime();\n\n  this.initiated = true;\n  this.moved = false;\n  this.lastPointX = point.pageX;\n  this.lastPointY = point.pageY;\n\n  this.startTime = getNow();\n\n  this._handleMoveEvents(addEvent);\n  this.scroller.trigger('beforeScrollStart');\n};\n\nIndicator.prototype._move = function (e) {\n  var point = e.touches ? e.touches[0] : e;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  if (!this.moved) {\n    this.scroller.trigger('scrollStart');\n  }\n\n  this.moved = true;\n\n  var deltaX = point.pageX - this.lastPointX;\n  this.lastPointX = point.pageX;\n\n  var deltaY = point.pageY - this.lastPointY;\n  this.lastPointY = point.pageY;\n\n  var newX = this.x + deltaX;\n  var newY = this.y + deltaY;\n\n  this._pos(newX, newY);\n};\n\nIndicator.prototype._end = function (e) {\n  if (!this.initiated) {\n    return;\n  }\n  this.initiated = false;\n\n  e.preventDefault();\n  e.stopPropagation();\n\n  this._handleMoveEvents(removeEvent);\n\n  var snapOption = this.scroller.options.snap;\n  if (snapOption) {\n    var speed = snapOption.speed,\n        _snapOption$easing = snapOption.easing,\n        easing = _snapOption$easing === undefined ? ease.bounce : _snapOption$easing;\n\n    var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);\n\n    var time = speed || Math.max(Math.max(Math.min(Math.abs(this.scroller.x - snap.x), 1000), Math.min(Math.abs(this.scroller.y - snap.y), 1000)), 300);\n\n    if (this.scroller.x !== snap.x || this.scroller.y !== snap.y) {\n      this.scroller.directionX = 0;\n      this.scroller.directionY = 0;\n      this.scroller.currentPage = snap;\n      this.scroller.scrollTo(snap.x, snap.y, time, easing);\n    }\n  }\n\n  if (this.moved) {\n    this.scroller.trigger('scrollEnd', {\n      x: this.scroller.x,\n      y: this.scroller.y\n    });\n  }\n};\n\nIndicator.prototype._pos = function (x, y) {\n  if (x < 0) {\n    x = 0;\n  } else if (x > this.maxPosX) {\n    x = this.maxPosX;\n  }\n\n  if (y < 0) {\n    y = 0;\n  } else if (y > this.maxPosY) {\n    y = this.maxPosY;\n  }\n\n  x = Math.round(x / this.sizeRatioX);\n  y = Math.round(y / this.sizeRatioY);\n\n  this.scroller.scrollTo(x, y);\n  this.scroller.trigger('scroll', {\n    x: this.scroller.x,\n    y: this.scroller.y\n  });\n};\n\nIndicator.prototype._calculate = function () {\n  if (this.direction === 'vertical') {\n    var wrapperHeight = this.wrapper.clientHeight;\n    this.indicatorHeight = Math.max(Math.round(wrapperHeight * wrapperHeight / (this.scroller.scrollerHeight || wrapperHeight || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.height = this.indicatorHeight + 'px';\n\n    this.maxPosY = wrapperHeight - this.indicatorHeight;\n\n    this.sizeRatioY = this.maxPosY / this.scroller.maxScrollY;\n  } else {\n    var wrapperWidth = this.wrapper.clientWidth;\n    this.indicatorWidth = Math.max(Math.round(wrapperWidth * wrapperWidth / (this.scroller.scrollerWidth || wrapperWidth || 1)), INDICATOR_MIN_LEN);\n    this.indicatorStyle.width = this.indicatorWidth + 'px';\n\n    this.maxPosX = wrapperWidth - this.indicatorWidth;\n\n    this.sizeRatioX = this.maxPosX / this.scroller.maxScrollX;\n  }\n};\n\nIndicator.prototype._addDOMEvents = function () {\n  var eventOperation = addEvent;\n  this._handleDOMEvents(eventOperation);\n};\n\nIndicator.prototype._removeDOMEvents = function () {\n  var eventOperation = removeEvent;\n  this._handleDOMEvents(eventOperation);\n  this._handleMoveEvents(eventOperation);\n};\n\nIndicator.prototype._handleMoveEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(window, 'touchmove', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(window, 'mousemove', this);\n  }\n};\n\nIndicator.prototype._handleDOMEvents = function (eventOperation) {\n  if (!this.scroller.options.disableTouch) {\n    eventOperation(this.indicator, 'touchstart', this);\n    eventOperation(window, 'touchend', this);\n  }\n  if (!this.scroller.options.disableMouse) {\n    eventOperation(this.indicator, 'mousedown', this);\n    eventOperation(window, 'mouseup', this);\n  }\n};\n\nfunction pullDownMixin(BScroll) {\n  BScroll.prototype._initPullDown = function () {\n    // must watch scroll in real time\n    this.options.probeType = 3;\n  };\n\n  BScroll.prototype._checkPullDown = function () {\n    var _options$pullDownRefr = this.options.pullDownRefresh,\n        _options$pullDownRefr2 = _options$pullDownRefr.threshold,\n        threshold = _options$pullDownRefr2 === undefined ? 90 : _options$pullDownRefr2,\n        _options$pullDownRefr3 = _options$pullDownRefr.stop,\n        stop = _options$pullDownRefr3 === undefined ? 40 : _options$pullDownRefr3;\n\n    // check if a real pull down action\n\n    if (this.directionY !== DIRECTION_DOWN || this.y < threshold) {\n      return false;\n    }\n\n    if (!this.pulling) {\n      this.pulling = true;\n      this.trigger('pullingDown');\n    }\n    this.scrollTo(this.x, stop, this.options.bounceTime, ease.bounce);\n\n    return this.pulling;\n  };\n\n  BScroll.prototype.finishPullDown = function () {\n    this.pulling = false;\n    this.resetPosition(this.options.bounceTime, ease.bounce);\n  };\n}\n\nfunction pullUpMixin(BScroll) {\n  BScroll.prototype._initPullUp = function () {\n    // must watch scroll in real time\n    this.options.probeType = 3;\n\n    this.pullupWatching = false;\n    this._watchPullUp();\n  };\n\n  BScroll.prototype._watchPullUp = function () {\n    this.pullupWatching = true;\n    var _options$pullUpLoad$t = this.options.pullUpLoad.threshold,\n        threshold = _options$pullUpLoad$t === undefined ? 0 : _options$pullUpLoad$t;\n\n\n    this.on('scroll', checkToEnd);\n\n    function checkToEnd(pos) {\n      var _this = this;\n\n      if (this.movingDirectionY === DIRECTION_UP && pos.y <= this.maxScrollY + threshold) {\n        // reset pullupWatching status after scroll end.\n        this.once('scrollEnd', function () {\n          _this.pullupWatching = false;\n        });\n        this.trigger('pullingUp');\n        this.off('scroll', checkToEnd);\n      }\n    }\n  };\n\n  BScroll.prototype.finishPullUp = function () {\n    var _this2 = this;\n\n    if (this.pullupWatching) {\n      this.once('scrollEnd', function () {\n        _this2._watchPullUp();\n      });\n    } else {\n      this._watchPullUp();\n    }\n  };\n}\n\nfunction mouseWheelMixin(BScroll) {\n  BScroll.prototype._initMouseWheel = function () {\n    var _this = this;\n\n    this._handleMouseWheelEvent(addEvent);\n\n    this.on('destroy', function () {\n      clearTimeout(_this.mouseWheelTimer);\n      _this._handleMouseWheelEvent(removeEvent);\n    });\n\n    this.firstWheelOpreation = true;\n  };\n\n  BScroll.prototype._handleMouseWheelEvent = function (eventOperation) {\n    eventOperation(this.wrapper, 'wheel', this);\n    eventOperation(this.wrapper, 'mousewheel', this);\n    eventOperation(this.wrapper, 'DOMMouseScroll', this);\n  };\n\n  BScroll.prototype._onMouseWheel = function (e) {\n    var _this2 = this;\n\n    if (!this.enabled) {\n      return;\n    }\n    e.preventDefault();\n\n    if (this.firstWheelOpreation) {\n      this.trigger('scrollStart');\n    }\n    this.firstWheelOpreation = false;\n\n    clearTimeout(this.mouseWheelTimer);\n    this.mouseWheelTimer = setTimeout(function () {\n      if (!_this2.options.snap) {\n        _this2.trigger('scrollEnd', {\n          x: _this2.x,\n          y: _this2.y\n        });\n      }\n      _this2.firstWheelOpreation = true;\n    }, 400);\n\n    var _options$mouseWheel = this.options.mouseWheel,\n        _options$mouseWheel$s = _options$mouseWheel.speed,\n        speed = _options$mouseWheel$s === undefined ? 20 : _options$mouseWheel$s,\n        _options$mouseWheel$i = _options$mouseWheel.invert,\n        invert = _options$mouseWheel$i === undefined ? false : _options$mouseWheel$i;\n\n    var wheelDeltaX = void 0;\n    var wheelDeltaY = void 0;\n\n    switch (true) {\n      case 'deltaX' in e:\n        if (e.deltaMode === 1) {\n          wheelDeltaX = -e.deltaX * speed;\n          wheelDeltaY = -e.deltaY * speed;\n        } else {\n          wheelDeltaX = -e.deltaX;\n          wheelDeltaY = -e.deltaY;\n        }\n        break;\n      case 'wheelDeltaX' in e:\n        wheelDeltaX = e.wheelDeltaX / 120 * speed;\n        wheelDeltaY = e.wheelDeltaY / 120 * speed;\n        break;\n      case 'wheelDelta' in e:\n        wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * speed;\n        break;\n      case 'detail' in e:\n        wheelDeltaX = wheelDeltaY = -e.detail / 3 * speed;\n        break;\n      default:\n        return;\n    }\n\n    var direction = invert ? -1 : 1;\n    wheelDeltaX *= direction;\n    wheelDeltaY *= direction;\n\n    if (!this.hasVerticalScroll) {\n      wheelDeltaX = wheelDeltaY;\n      wheelDeltaY = 0;\n    }\n\n    var newX = void 0;\n    var newY = void 0;\n    if (this.options.snap) {\n      newX = this.currentPage.pageX;\n      newY = this.currentPage.pageY;\n\n      if (wheelDeltaX > 0) {\n        newX--;\n      } else if (wheelDeltaX < 0) {\n        newX++;\n      }\n\n      if (wheelDeltaY > 0) {\n        newY--;\n      } else if (wheelDeltaY < 0) {\n        newY++;\n      }\n\n      this._goToPage(newX, newY);\n      return;\n    }\n\n    newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);\n    newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);\n\n    this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;\n    this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;\n\n    if (newX > 0) {\n      newX = 0;\n    } else if (newX < this.maxScrollX) {\n      newX = this.maxScrollX;\n    }\n\n    if (newY > 0) {\n      newY = 0;\n    } else if (newY < this.maxScrollY) {\n      newY = this.maxScrollY;\n    }\n\n    this.scrollTo(newX, newY);\n    this.trigger('scroll', {\n      x: this.x,\n      y: this.y\n    });\n  };\n}\n\nfunction BScroll(el, options) {\n  this.wrapper = typeof el === 'string' ? document.querySelector(el) : el;\n  if (!this.wrapper) {\n    warn('can not resolve the wrapper dom');\n  }\n  this.scroller = this.wrapper.children[0];\n  if (!this.scroller) {\n    warn('the wrapper need at least one child element to be scroller');\n  }\n  // cache style for better performance\n  this.scrollerStyle = this.scroller.style;\n\n  this._init(el, options);\n}\n\ninitMixin(BScroll);\ncoreMixin(BScroll);\neventMixin(BScroll);\nsnapMixin(BScroll);\nwheelMixin(BScroll);\nscrollbarMixin(BScroll);\npullDownMixin(BScroll);\npullUpMixin(BScroll);\nmouseWheelMixin(BScroll);\n\nBScroll.Version = '1.8.4';\n\nexport default BScroll;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/better-scroll/dist/bscroll.esm.js\n// module id = 10\n// module chunks = 0","import range from './range'\n\nexport default [range(0, 23, true, '点'), range(0, 59, true, '分'), range(0, 59, true, '秒')]\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/data/time.js","import range from './range'\n\nconst START_YEAR = 1900\nconst END_YEAR = 2100\n\nconst UNIT_YEAR = '年'\nconst UNIT_MONTH = '月'\nconst UNIT_DAY = '日'\n\nfunction isLeapYear (y) {\n  return (y % 4 === 0) && (y % 100 !== 0 || y % 400 === 0)\n};\n\nfunction getDays (y, m) {\n  y = Number(y)\n  m = Number(m)\n  let endDay = null\n  switch (m) {\n    case 2:\n      endDay = isLeapYear(y) ? 29 : 28; break\n    case 1:\n    case 3:\n    case 5:\n    case 7:\n    case 8:\n    case 10:\n    case 12:\n      endDay = 31; break\n    case 4:\n    case 6:\n    case 9:\n    case 11:\n    default:\n      endDay = 30; break\n  }\n  const days = range(1, endDay, false, UNIT_DAY)\n  return days.map((day) => {\n    return { value: day }\n  })\n};\n\nconst yearData = range(START_YEAR, END_YEAR, false, UNIT_YEAR)\nconst monthData = range(1, 12, false, UNIT_MONTH)\n\nconst cascadeMonthData = monthData.map((month) => {\n  return {\n    value: month,\n    children: []\n  }\n})\n\nconst dateData = yearData.map((year) => {\n  const item = {\n    value: year,\n    children: cascadeMonthData.slice()\n  }\n  item.children.forEach((month) => {\n    month.children = getDays(year.slice(0, -1), month.value.slice(0, -1))\n  })\n  return item\n})\n\nconst date = new Date()\nconst dateAnchor = [\n  { value: `${date.getFullYear()}${UNIT_YEAR}` },\n  { value: `${date.getMonth() + 1}${UNIT_MONTH}` },\n  { value: `${date.getDate()}${UNIT_DAY}` }\n]\n\nexport {\n  dateAnchor,\n  dateData\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/data/date.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":_vm.hide}})]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"picker\"},[_c('div',{staticClass:\"picker-title\"},[_c('span',{staticClass:\"pt-cancel\",style:({ color: _vm.colorCancel }),on:{\"click\":_vm.cancel}},[_vm._v(_vm._s(_vm.textCancel))]),_vm._v(\" \"),_c('span',{staticClass:\"pt-submit\",style:({ color: _vm.colorConfirm }),on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.textConfirm))]),_vm._v(\" \"),_c('h4',{style:({ color: _vm.colorTitle })},[_vm._v(_vm._s(_vm.textTitle))])]),_vm._v(\" \"),_c('div',{staticClass:\"picker-panel\"},[_c('div',{staticClass:\"picker-mask-top\"}),_vm._v(\" \"),_c('div',{staticClass:\"picker-mask-bottom\"}),_vm._v(\" \"),_c('div',{ref:\"wheelWrapper\",staticClass:\"picker-wheel-wrapper\"},_vm._l((_vm.pickerData),function(wheel,index){return _c('div',{key:index,staticClass:\"picker-wheel\"},[_c('ul',{staticClass:\"wheel-scroll\"},_vm._l((wheel),function(item,index){return _c('li',{key:index,staticClass:\"wheel-item\"},[_vm._v(_vm._s(item))])}))])}))])])])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-171df494\",\"hasScoped\":true,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/lib/vue-awesome-picker.vue\n// module id = 13\n// module chunks = 0"],"sourceRoot":""}