UNPKG

vue-ios-select

Version:

typescript+vue开发的日期滚轮组件,基于iosselect库进行封装,简单易用

1,199 lines (1,103 loc) 140 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("vue")); else if(typeof define === 'function' && define.amd) define(["vue"], factory); else { var a = typeof exports === 'object' ? factory(require("vue")) : factory(root["Vue"]); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(this, function(__WEBPACK_EXTERNAL_MODULE_1__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // identity function for calling harmony imports with the correct context /******/ __webpack_require__.i = function(value) { return value; }; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 6); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = []; /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_1__; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = {}; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var hasOwn = __webpack_require__(4); module.exports = hasOwn.toString; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var class2type = __webpack_require__(2); module.exports = class2type.hasOwnProperty; /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_less__ = __webpack_require__(18); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_less___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__index_less__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue__ = __webpack_require__(1); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_iosselect__ = __webpack_require__(16); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_iosselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_iosselect__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__ = __webpack_require__(23); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__IosSelectDateModel__ = __webpack_require__(21); var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var Utils = __webpack_require__(9); var VueDateSelect = /** @class */ (function (_super) { __extends(VueDateSelect, _super); function VueDateSelect() { var _this_1 = _super !== null && _super.apply(this, arguments) || this; /** * 设置每月对应的天数 */ _this_1.monthDays = { 1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }; //配置项的copy副本 _this_1.tempOption = { config: {}, data: { currentDate: "", beginDate: "", endDate: "" } }; //控制弹框的显示 _this_1.visible = _this_1.value; /** * iosselect默认配置 */ _this_1.defaultConf = { container: 'container', title: '', itemHeight: 40, itemShowCount: 4, level: 2, oneLevelId: 0, twoLevelId: 0, threeLevelId: 0, callback: _this_1.selectDateOk, fallback: _this_1.selectDateCancel, maskCallback: _this_1.selectDateMask }; return _this_1; } //监听value值的变更 VueDateSelect.prototype.watchValueChange = function (newVal) { this.visible = newVal; this.visible && this.initialIosSelectDate(Object.assign({}, this.option)); !this.visible && this.selectDateCancel(); }; Object.defineProperty(VueDateSelect.prototype, "dateSelectOption", { /** * 计算属性,计算option的变化 * @return {string} 返回空字符串 */ get: function () { if (this.tempOption.data.beginDate != this.option.data.beginDate || this.tempOption.data.endDate != this.option.data.endDate || this.tempOption.data.currentDate != this.option.data.currentDate || this.tempOption.config.level != this.option.config.level) { this.tempOption = Object.assign({}, this.option); this.initialIosSelectDate(Object.assign({}, this.option)); } return ""; }, enumerable: true, configurable: true }); Object.defineProperty(VueDateSelect.prototype, "dateSelectContainer", { /** * iosselect组件容器 * @return {string} 返回容器类名 */ get: function () { // @ts-ignore return this.defaultConf.container; }, enumerable: true, configurable: true }); /** * 获取某个时间所在的月份总共有多少天 * @param {Date} date 日期对象 * @return {number} 返回获取到的该月总天数 */ VueDateSelect.prototype.getMonthTotalDays = function (date) { var month = date.getMonth(); var days = 0; //判断闰年跟平年 if ((month + 1) == 2 && Utils.isLeapYear(date)) { this.monthDays[2] = 29; } else { this.monthDays[2] = 28; } days = this.monthDays[month + 1]; return days; }; /** * 初始化年数据 * @param {IosSelectDateModel} dateModel 初始化日期对象 * @return {Function} 返回选中年后的回调函数 */ VueDateSelect.prototype.yearData = function (dateModel) { return function (callback) { var yearData = []; var diffYears = Utils.diffDate("y", dateModel.beginDate, dateModel.endDate); var currentYear = dateModel.beginDate.getFullYear(); for (var i = 0; i <= diffYears; i++) { var tempYear = currentYear; tempYear += i; yearData.push({ id: tempYear, value: tempYear + "\u5E74" }); } callback(yearData); }; }; /** * 初始化月份数据 * @param {IosSelectDateModel} dateModel 初始化日期对象 * @return {Function} 返回选中月后的回调函数 */ VueDateSelect.prototype.monthData = function (dateModel) { return function (year, callback) { var monthData = []; var cycleBeginIndex = 1; var cycleEndIndex = 12; if (Utils.dateFormat("yyyy", dateModel.beginDate) == year.toString()) { cycleBeginIndex = dateModel.beginDate.getMonth() + 1; } else if (Utils.dateFormat("yyyy", dateModel.endDate) == year.toString()) { cycleEndIndex = dateModel.endDate.getMonth() + 1; } for (var i = cycleBeginIndex; i <= cycleEndIndex; i++) { monthData.push({ id: i, value: i + "\u6708" }); } callback(monthData); }; }; /** * 初始化天数据 * @param {IosSelectDateModel} dateModel 初始化日期对象 * @return {Function} 返回选中天后的回调函数 */ VueDateSelect.prototype.dateData = function (dateModel) { var _this = this; return function (year, month, callback) { var date = new Date(year, month - 1, 1); var dayData = []; var days = _this.getMonthTotalDays(date); var cycleBeginIndex = 1; var cycleEndIndex = days; if (Utils.dateFormat("yyyy-MM", dateModel.beginDate) == Utils.dateFormat("yyyy-MM", date)) { cycleBeginIndex = dateModel.beginDate.getDate(); } else if (Utils.dateFormat("yyyy-MM", dateModel.endDate) == Utils.dateFormat("yyyy-MM", date)) { cycleEndIndex = dateModel.endDate.getDate(); } for (var i = cycleBeginIndex; i <= cycleEndIndex; i++) { dayData.push({ id: i, value: i + "\u65E5" }); } callback(dayData); }; }; /** * 初始化iosselectdate * @param {IosSelectDateModel} dateModel 初始组件数据实体 * @param {any} config 初始化组件配置 * @return {void} 无返回值 */ VueDateSelect.prototype.renderTpl = function (dateModel, config) { if (config.level == 2) { //两级,只有年、月 config.relation = [1]; var iosSelect = new __WEBPACK_IMPORTED_MODULE_2_iosselect___default.a(2, [ this.yearData(dateModel), this.monthData(dateModel) ], config); } if (config.level == 3) { //三级,有年、月、日 config.relation = [1, 1]; var iosSelect = new __WEBPACK_IMPORTED_MODULE_2_iosselect___default.a(3, [ this.yearData(dateModel), this.monthData(dateModel), this.dateData(dateModel) ], config); } }; /** * 初始化iosselct组件基础数据 * @param {any} option 组件配置项 * @return {void} 无返回值 */ VueDateSelect.prototype.initialIosSelectDate = function (option) { var data = option.data, config = option.config; if (data.beginDate && data.endDate && data.currentDate) { var dateModel = new __WEBPACK_IMPORTED_MODULE_4__IosSelectDateModel__["a" /* IosSelectDateModel */](); dateModel.beginDate = Utils.createCorrectDate(data.beginDate); dateModel.endDate = Utils.createCorrectDate(data.endDate); dateModel.currentDate = Utils.createCorrectDate(data.currentDate); config = config || {}; //先进行config跟defaultConf的合并操作 this.defaultConf = Object.assign({}, this.defaultConf, config); if (this.defaultConf.level == 3) { //三级,设置年、月、日默认值 this.defaultConf.oneLevelId = dateModel.currentDate.getFullYear(); this.defaultConf.twoLevelId = Number(Utils.dateFormat("M", dateModel.currentDate)); this.defaultConf.threeLevelId = Number(Utils.dateFormat("d", dateModel.currentDate)); } if (this.defaultConf.level == 2) { //二级,设置年、月默认值 this.defaultConf.oneLevelId = dateModel.currentDate.getFullYear(); this.defaultConf.twoLevelId = Number(Utils.dateFormat("M", dateModel.currentDate)); } this.visible && this.renderTpl(dateModel, this.defaultConf); } }; /** * 选择时间以后触发的事件,iosselect最多支持6级,todo:该组件后续优化让支持6级的时间选择 * @param yearData 选择的年数据 * @param monthData 选择的月数据 * @param dayData 选择的天数据 * @param hourDay 选择的小时数据 * @param minuteData 选择的分数据 * @param secondData 选择的秒数据 * @return {void} 无返回值 */ VueDateSelect.prototype.selectDateOk = function (yearData, monthData, dayData, hourDay, minuteData, secondData) { }; /** * 选择取消后的回调函数 * @return {void} 无返回值 */ VueDateSelect.prototype.selectDateCancel = function () { }; /** * 击背景层关闭组件时触发的方法 * @return {void} 无返回值 */ VueDateSelect.prototype.selectDateMask = function () { }; __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["a" /* Prop */])(), __metadata("design:type", Object) ], VueDateSelect.prototype, "option", void 0); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["a" /* Prop */])(), __metadata("design:type", Boolean) ], VueDateSelect.prototype, "value", void 0); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["b" /* Watch */])("value"), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], VueDateSelect.prototype, "watchValueChange", null); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-ok"), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object, Object, Object, Object, Object]), __metadata("design:returntype", void 0) ], VueDateSelect.prototype, "selectDateOk", null); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-cancel"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], VueDateSelect.prototype, "selectDateCancel", null); __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["c" /* Emit */])("on-mask"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], VueDateSelect.prototype, "selectDateMask", null); VueDateSelect = __decorate([ __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3_vue_property_decorator__["d" /* Component */])({ template: __webpack_require__(15) }) /** * 滚轮日期选中组件 * @class * @extends {Vue} */ ], VueDateSelect); return VueDateSelect; }(__WEBPACK_IMPORTED_MODULE_1_vue___default.a)); /* harmony default export */ __webpack_exports__["a"] = (VueDateSelect); /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_index__ = __webpack_require__(5); /* harmony default export */ __webpack_exports__["default"] = (__WEBPACK_IMPORTED_MODULE_0__src_index__["a" /* default */]); /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(8)(false); // imports // module exports.push([module.i, "div,\nul,\nli {\n margin: 0;\n padding: 0;\n}\nul,\nli {\n list-style: none outside none;\n}\n/* layer begin */\n.ios-select-widget-box.olay {\n position: fixed;\n z-index: 500;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: 1;\n background: rgba(0, 0, 0, 0.7);\n}\n.ios-select-widget-box.olay > div {\n position: fixed;\n z-index: 1000;\n width: 100%;\n height: 100%;\n background-color: #f2f2f2;\n bottom: 0;\n left: 0;\n visibility: visible;\n}\n.ios-select-widget-box header.iosselect-header {\n height: 44px;\n line-height: 44px;\n background-color: #59bbff;\n width: 100%;\n z-index: 9999;\n text-align: center;\n}\n.ios-select-widget-box header.iosselect-header a {\n font-size: 16px;\n color: #fff;\n text-decoration: none;\n}\n.ios-select-widget-box header.iosselect-header a.close {\n float: left;\n padding-left: 15px;\n height: 44px;\n line-height: 44px;\n}\n.ios-select-widget-box header.iosselect-header a.sure {\n float: right;\n padding-right: 15px;\n height: 44px;\n line-height: 44px;\n}\n.ios-select-widget-box {\n padding-top: 44px;\n}\n.ios-select-widget-box .one-level-contain,\n.ios-select-widget-box .two-level-contain,\n.ios-select-widget-box .three-level-contain,\n.ios-select-widget-box .four-level-contain,\n.ios-select-widget-box .five-level-contain {\n height: 100%;\n overflow: hidden;\n}\n.ios-select-widget-box .iosselect-box {\n overflow: hidden;\n}\n.ios-select-widget-box .iosselect-box > div {\n display: block;\n float: left;\n}\n.ios-select-widget-box ul {\n background-color: #fff;\n}\n.ios-select-widget-box ul li {\n font-size: 13px;\n height: 35px;\n line-height: 35px;\n background-color: #fff;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n color: #111;\n opacity: .3;\n}\n.ios-select-widget-box ul li.at {\n font-size: 16px;\n opacity: 1;\n}\n.ios-select-widget-box ul li.side1 {\n font-size: 15px;\n opacity: .7;\n}\n.ios-select-widget-box ul li.side2 {\n font-size: 14px;\n opacity: .5;\n}\n.ios-select-widget-box.one-level-box .one-level-contain {\n width: 100%;\n}\n.ios-select-widget-box.one-level-box .two-level-contain,\n.ios-select-widget-box.one-level-box .three-level-contain,\n.ios-select-widget-box.one-level-box .four-level-contain,\n.ios-select-widget-box.one-level-box .five-level-contain,\n.ios-select-widget-box.one-level-box .six-level-contain {\n width: 0;\n}\n.ios-select-widget-box.two-level-box .one-level-contain,\n.ios-select-widget-box.two-level-box .two-level-contain {\n width: 50%;\n}\n.ios-select-widget-box.two-level-box .three-level-contain,\n.ios-select-widget-box.two-level-box .four-level-contain,\n.ios-select-widget-box.two-level-box .five-level-contain,\n.ios-select-widget-box.two-level-box .six-level-contain {\n width: 0;\n}\n.ios-select-widget-box.three-level-box .one-level-contain,\n.ios-select-widget-box.three-level-box .two-level-contain {\n width: 33.3333%;\n}\n.ios-select-widget-box.three-level-box .three-level-contain {\n width: 33.3333%;\n}\n.ios-select-widget-box.three-level-box .four-level-contain .ios-select-widget-box.three-level-box .five-level-contain,\n.ios-select-widget-box.three-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.four-level-box .one-level-contain,\n.ios-select-widget-box.four-level-box .two-level-contain,\n.ios-select-widget-box.four-level-box .three-level-contain,\n.ios-select-widget-box.four-level-box .four-level-contain {\n width: 25%;\n}\n.ios-select-widget-box.four-level-box .five-level-contain,\n.ios-select-widget-box.four-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.five-level-box .one-level-contain,\n.ios-select-widget-box.five-level-box .two-level-contain,\n.ios-select-widget-box.five-level-box .three-level-contain,\n.ios-select-widget-box.five-level-box .four-level-contain,\n.ios-select-widget-box.five-level-box .five-level-contain {\n width: 20%;\n}\n.ios-select-widget-box.five-level-box .six-level-contain {\n width: 0%;\n}\n.ios-select-widget-box.six-level-box .one-level-contain,\n.ios-select-widget-box.six-level-box .two-level-contain,\n.ios-select-widget-box.six-level-box .three-level-contain,\n.ios-select-widget-box.six-level-box .four-level-contain,\n.ios-select-widget-box.six-level-box .five-level-contain {\n width: 16%;\n}\n.ios-select-widget-box.six-level-box .six-level-contain {\n width: 20%;\n}\n.ios-select-widget-box .cover-area1 {\n width: 100%;\n border: none;\n border-top: 1px solid #d9d9d9;\n position: absolute;\n top: 149px;\n margin: 0;\n height: 0;\n}\n.ios-select-widget-box .cover-area2 {\n width: 100%;\n border: none;\n border-top: 1px solid #d9d9d9;\n position: absolute;\n top: 183px;\n margin: 0;\n height: 0;\n}\n.ios-select-widget-box #iosSelectTitle {\n margin: 0;\n padding: 0;\n display: inline-block;\n font-size: 16px;\n font-weight: normal;\n color: #fff;\n}\n.ios-select-body-class {\n overflow: hidden;\n}\n.ios-select-body-class body {\n touch-action: none;\n}\n.ios-select-widget-box.olay > div > .ios-select-loading-box {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: none;\n}\n.ios-select-widget-box.olay > div > .ios-select-loading-box > .ios-select-loading {\n width: 50px;\n height: 50px;\n position: absolute;\n left: 50%;\n top: 50%;\n margin-top: -25px;\n margin-left: -25px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OEMxMEI3NDI3MEIxMUU2ODVGMzhFNjYyMDIyOUFCMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OEMxMEI3NTI3MEIxMUU2ODVGMzhFNjYyMDIyOUFCMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4QzEwQjcyMjcwQjExRTY4NUYzOEU2NjIwMjI5QUIwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU4QzEwQjczMjcwQjExRTY4NUYzOEU2NjIwMjI5QUIwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GeWqMwAAA+BJREFUeNrMmVlsTGEUx+9cXZQiLZWKklhbQSSlSMUWSxAiJGJ5aSQehOiDF7yI4EFILW99I3iRSJGUPkiILSKp2OuJVtHWkrRVapn2jv+R/ycnn5l27rQz10l+mWlyl/+c833nO+c0FIlEnATMBbPAIn5OBuPAENAKToC74BtoB59AG/D9spBPgaPBdrAFjJH7Fa66TkRuNe8gP8Bb8Ap8j/eFaXFelwv286WZfKG2WL9SX5cFCuntBvAc/OoPD64HJ8EI5Q3tmW7whl4pAl/AUfAEDKZnQ1HuFXGPQGOiAsW7x8A26wUhirgMLnGtfe3hGcO5NApARpRnSchrY0UhlkAJxxmw0npYBzgOKinSj6WDCfRyphWFJnAPdMUjUH71WbDKElcDykGL0zcbCEroVf389+CW7Uk3ygNk/azghYIHDoCN/SDO4W6+A55aAiUrzImWz7StA2WWuF2gIpEc1ovVgQeWyELm06gCc8ARJU44DM45yTPZII8tkXO5DP4RuI8iPYqr4YmQbJN8+E4JlA1abAuUBbtZeU526O4khDWW3QdhK9TZWmAZd6/x3inw0UmdSZJ/pgSKlilGoMvTwoiTw/20k3p7yTyovRgScTNAvgrvFSbkVJuE+LU6GiXEefJHqfKefF5zgrMGVRnJZ4HEerryXjdzU1DWbB2BI10mRuPBej+1WhKsi8vLeDDXZRllwtvoBG8davNmS4gHUZyTQIWSrM1iQpyZptafo4QGabp9+JNmOijMY9MTtGWpEHe5PDHMGsz/DwQOUwI7XVYUZheP1ZVEAJbOFsGswTYR+EKF2NWVRABWwHPYeLDFZWKOKJFLAhRYpMQJjS7rsWYlcjlTT6pNOr5pahfL5m12KaparUPpZTcEILCEjjGniCy9iMk3F9hImzCXcZqQKhOnLFShjbBX/psQP4Aq5UUpdfZEGXEkKzGvZf4zu/exOdV0T1LJCZTx4gK2msm2Uq494z1pS29Ea5ra2RPrrm4HpwvJsplgtTW/kXq0M1ZffF2F2uMNe+nJUD+HVWaLm8AAtXNrOXTqcfQh2fwQmKdST4TTgAp6ui+WTWFTrUpedu15Fs29Do/kuDsIZlsiW7njryZQ2MrAaD5Yqko88+w6zoPCfsdv5VwjnnXayA67zYmUdGM/e0i+E7nWivnDPUWEz6iyPedngLkY7ARDrQeb72GOz5roVY/eylMHvxflXjkpLoKHfZ2wmhJIkvcylUi9BAnTa9U9DD59CzQm/csaZv0cn0JbOeK4ye/xbfcE/w0hYZvElnU8GEXBGRQjeewzi5B6rtP6RGY9vwUYACMHTam1T1ebAAAAAElFTkSuQmCC) no-repeat 0 0;\n background-size: contain;\n -webkit-animation: loading-keyframe 1s infinite linear;\n animation: loading-keyframe 1s infinite linear;\n}\n.fadeInUp .layer {\n -webkit-animation: fadeInUp .5s;\n animation: fadeInUp .5s;\n}\n.fadeOutDown .layer {\n -webkit-animation: fadeOutDown .5s!important;\n animation: fadeOutDown .5s!important;\n}\n@-webkit-keyframes loading-keyframe {\n from {\n -webkit-transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n }\n}\n@keyframes loading-keyframe {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes fadeInUp {\n from {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n -webkit-transform: none;\n }\n}\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n to {\n opacity: 1;\n transform: none;\n }\n}\n@-webkit-keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n -webkit-transform: translate3d(0, 100%, 0);\n }\n}\n@keyframes fadeOutDown {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n}\n", ""]); // exports /***/ }), /* 8 */ /***/ (function(module, exports) { /* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ // css base code, injected by the css-loader module.exports = function(useSourceMap) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item, useSourceMap); if(item[2]) { return "@media " + item[2] + "{" + content + "}"; } else { return content; } }).join(""); }; // import a list of modules into the list list.i = function(modules, mediaQuery) { if(typeof modules === "string") modules = [[null, modules, ""]]; var alreadyImportedModules = {}; for(var i = 0; i < this.length; i++) { var id = this[i][0]; if(typeof id === "number") alreadyImportedModules[id] = true; } for(i = 0; i < modules.length; i++) { var item = modules[i]; // skip already imported module // this implementation is not 100% perfect for weird media query combinations // when a module is imported multiple times with different media queries. // I hope this will never occur (Hey this way we have smaller bundles) if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) { if(mediaQuery && !item[2]) { item[2] = mediaQuery; } else if(mediaQuery) { item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"; } list.push(item); } } }; return list; }; function cssWithMappingToString(item, useSourceMap) { var content = item[1] || ''; var cssMapping = item[3]; if (!cssMapping) { return content; } if (useSourceMap && typeof btoa === 'function') { var sourceMapping = toComment(cssMapping); var sourceURLs = cssMapping.sources.map(function (source) { return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */' }); return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); } return [content].join('\n'); } // Adapted from convert-source-map (MIT) function toComment(sourceMap) { // eslint-disable-next-line no-undef var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64; return '/*# ' + data + ' */'; } /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = __webpack_require__(10); /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var class2type = __webpack_require__(2); var getProto = __webpack_require__(11); var hasOwn = __webpack_require__(4); var array = __webpack_require__(0); var push = __webpack_require__(14); var indexOf = __webpack_require__(12); var fnToString = __webpack_require__(3); var objectFunctionString = __webpack_require__(13); var types = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object", "Error", "Symbol"]; types.map(function (name) { class2type["[object " + name + "]"] = name.toLowerCase(); }); module.exports = { type: function (obj) { if (obj == null) { return obj + ""; } return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; }, isNull: function (obj) { return obj === null || typeof obj === "undefined"; }, isPlainObject: function (obj) { var proto, Ctor; if (!obj || toString.call(obj) !== "[object Object]") { return false; } proto = getProto(obj); if (!proto) { return true; } Ctor = hasOwn.call(proto, "constructor") && proto.constructor; return typeof Ctor === "function" && fnToString.call(Ctor) === objectFunctionString; }, isEmptyObject: function (obj) { var name; for (name in obj) { return false; } return true; }, isFunction: function (obj) { return this.type(obj) === "function"; }, isNumeric: function (obj) { var type = this.type(obj); return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN !isNaN(obj - parseFloat(obj)); }, isArray: function (obj) { return this.type(obj) == "array"; }, isBoolean: function (obj) { return this.type(obj) == "boolean"; }, isDate: function (obj) { return this.type(obj) == "date"; }, contain: function (elem, array, i) { return array == null ? -1 : indexOf.call(array, elem, i); }, merge: function (first, second) { var len = +second.length, j = 0, i = first.length; for (; j < len; j++) { first[i++] = second[j]; } first.length = i; return first; }, trim: function (text) { return text == null ? "" : (text + "").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); }, // results is for internal usage only makeArray: function (arr, results) { var ret = results || []; if (arr != null) { if (this.isArrayLike(Object(arr))) { this.merge(ret, typeof arr === "string" ? [arr] : arr ); } else { push.call(ret, arr); } } return ret; }, isWindow: function (obj) { return obj != null && obj === obj.window; }, isArrayLike: function (obj) { var length = !!obj && "length" in obj && obj.length, type = this.type(obj); if (type === "function" || this.isWindow(obj)) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && (length - 1) in obj; }, unique: function (arr) { var res = []; var json = {}; for (var i = 0; i < arr.length; i++) { if (!json[arr[i]]) { res.push(arr[i]); json[arr[i]] = 1; } } return res; }, findElementIndex: function (arr, element) { for (var i = 0; i < arr.length; i++) { if (Object.prototype.toString.call(arr[i]) == "[object Object]") { for (var key in arr[i]) { if (key == element) { return i; } } } else if (element === arr[i]) { return i; } } return -1; }, removeElement: function (array, element) { var n = this.findElementIndex(array, element); if (n < 0) { return array; } else { return array.splice(n, 1); //this.slice(0, n).concat(this.slice(n + 1, this.length)); } }, copyDate: function (date) { try { var newDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()); newDate.setHours(date.getHours()); newDate.setMinutes(date.getMinutes()); newDate.setSeconds(date.getSeconds()); newDate.setMilliseconds(date.getMilliseconds()); return newDate; } catch (e) { throw "invalidDate"; } }, /** * 创建正确的Date对象 * @param strFormatDate 日期字符串,支持格式 * 2017-11-19 12:20:30:333 * 2017/11/19 12:20:30:333 * 2017.11.19 12:20:30:333 * 2017-11-19 * 2017/11/19 * 2017.11.19 * @param dateArr 时、分、秒数组,格式 * [23,59,59] */ createCorrectDate: function (strFormatDate, dateArr) { if (strFormatDate == undefined || strFormatDate == null || strFormatDate == '') return 'invalidDate'; var dateObj; dateArr = dateArr || []; try { var dateArray; if (strFormatDate.indexOf(":") > -1) { var dateStrSplit = strFormatDate.toString().split(" "); strFormatDate = dateStrSplit[0]; if (dateArr.length <= 0) dateArr = dateStrSplit[1].split(":") } if (strFormatDate.indexOf('-') > -1) { dateArray = strFormatDate.toString().split('-'); dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2])); if (Number(dateArray[0]) != dateObj.getFullYear()) return 'invalidDate'; if (Number(dateArray[1]) != dateObj.getMonth() + 1) return 'invalidDate'; if (Number(dateArray[2]) != dateObj.getDate()) return 'invalidDate'; } else if (strFormatDate.indexOf('.') > -1) { dateArray = strFormatDate.toString().split('.'); dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2])); if (Number(dateArray[0]) != dateObj.getFullYear()) return 'invalidDate'; if (Number(dateArray[1]) != dateObj.getMonth() + 1) return 'invalidDate'; if (Number(dateArray[2]) != dateObj.getDate()) return 'invalidDate'; } else if (strFormatDate.indexOf('/') > -1) { dateArray = strFormatDate.toString().split('/'); dateObj = new Date(Number(dateArray[0]), Number(dateArray[1]) - 1, Number(dateArray[2])); if (Number(dateArray[0]) != dateObj.getFullYear()) return 'invalidDate'; if (Number(dateArray[1]) != dateObj.getMonth() + 1) return 'invalidDate'; if (Number(dateArray[2]) != dateObj.getDate()) return 'invalidDate'; } for (var i = 0; i < dateArr.length; i++) { switch (i) { case 0: dateObj.setHours(dateArr[0]); if (dateObj.getHours() != Number(dateArr[0])) return 'invalidDate'; break; case 1: dateObj.setMinutes(dateArr[1]); if (dateObj.getMinutes() != Number(dateArr[1])) return 'invalidDate'; break; case 2: dateObj.setSeconds(dateArr[2]); if (dateObj.getSeconds() != Number(dateArr[2])) return 'invalidDate'; break; case 3: dateObj.setMilliseconds(dateArr[3]); if (dateObj.getMilliseconds() != Number(dateArr[3])) return 'invalidDate'; default: break; } } if (dateArr.length <= 0) { dateObj.setHours(0); dateObj.setMinutes(0); dateObj.setSeconds(0); dateObj.setMilliseconds(0); } return dateObj; } catch (e) { return 'invalidDate'; } }, dateFormat: function (fmt, objDate) { var o = { "M+": objDate.getMonth() + 1, //月份 "d+": objDate.getDate(), //日 "h+": objDate.getHours(), //小时 "m+": objDate.getMinutes(), //分 "s+": objDate.getSeconds(), //秒 "q+": Math.floor((objDate.getMonth() + 3) / 3), //季度 "S": objDate.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (objDate.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; }, isLeapYear: function (objDate) {//判断闰年 var pYear = objDate.getFullYear(); if (!isNaN(parseInt(pYear))) { if ((pYear % 4 == 0 && pYear % 100 != 0) || (pYear % 100 == 0 && pYear % 400 == 0)) { return true; } else { return false; } } else { return false; } }, /*************************************************** *比较两个日期的间隔 *参数说明: * @param interval要返回的两个日期的间隔,比如: * s:返回两个日期相差的秒数 * n:返回两个日期相差的分钟数 * h:返回两个日期相差的小时数 * d:返回两个日期相差的天数 * w:返回两个日期相差的周数 * m:返回连个日期相差的月数 * y:返回连个日期相差的年数 * @param beginDate:开始日期 * @param endDate:结束日期 ****************************************************/ diffDate: function (interval, beginDate, endDate) { var dtBegin; var dtEnd; try { if (Object.prototype.toString.call(beginDate) == "[object Date]") { dtBegin = beginDate; } else if (Object.prototype.toString.call(beginDate) == "[object String]") { dtBegin = this.createCorrectDate(beginDate); } if (Object.prototype.toString.call(endDate) == "[object Date]") { dtEnd = endDate; } else if (Object.prototype.toString.call(endDate) == "[object String]") { dtEnd = this.createCorrectDate(endDate); } if (isNaN(dtEnd)) return undefined; switch (interval) { case "s": return parseInt((dtEnd - dtBegin) / 1000); case "n": return parseInt((dtEnd - dtBegin) / 60000); case "h": return parseInt((dtEnd - dtBegin) / 3600000); case "d": return parseInt((dtEnd - dtBegin) / 86400000); case "w": return parseInt((dtEnd - dtBegin) / (86400000 * 7)); case "m": return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtBegin.getFullYear()) * 12) - (dtBegin.getMonth() + 1); case "y": return dtEnd.getFullYear() - dtBegin.getFullYear(); } } catch (e) { throw "无效的时间格式!"; } }, /*************************************************** *比较两个日期的间隔 *参数说明: *objDate:结束日期 *interval要返回的两个日期的间隔,比如: *s:返回两个日期相差的秒数 *n:返回两个日期相差的分钟数 *h:返回两个日期相差的小时数 *d:返回两个日期相差的天数 *w:返回两个日期相差的周数 *m:返回连个日期相差的月数 *y:返回连个日期相差的年数 ****************************************************/ dateDiff: function (interval, objBeginDate, objEndDate) { var dtBegin = new Date(objBeginDate); var dtEnd = new Date(objEndDate); if (isNaN(dtEnd)) return undefined; switch (interval) { case "s": return parseInt((dtEnd - dtBegin) / 1000); case "n": return parseInt((dtEnd - dtBegin) / 60000); case "h": return parseInt((dtEnd - dtBegin) / 3600000); case "d": return parseInt((dtEnd - dtBegin) / 86400000); case "w": return parseInt((dtEnd - dtBegin) / (86400000 * 7)); case "m": return (dtEnd.getMonth() + 1) + ((dtEnd.getFullYear() - dtBegin.getFullYear()) * 12) - (dtBegin.getMonth() + 1); case "y": return dtEnd.getFullYear() - dtBegin.getFullYear(); } }, clone: function () { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if (typeof target === "boolean") { deep = target; // Skip the boolean and the target target = arguments[i] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if (typeof target !== "object" && !this.isFunction(target)) { target = {}; } if (i === length) { target = this; i--; } for (; i < length; i++) { // Only deal with non-null/undefined values if ((options = arguments[i]) != null) { // Extend the base object for (name in options) { src = target[name]; copy = options[name]; // Prevent never-ending loop if (target === copy) { continue; } // Recurse if we're merging plain objects or arrays if (deep && copy && (this.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && Array.isArray(src) ? src : []; } else { clone = src && this.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[name] = this.clone(deep, clone, copy); // Don't bring in undefined values } else if (copy !== undefined) { target[name] = copy; } } } } // Return the modified object return target; }, getQuery: function (queryKey, target, pattern) { var locationSearch = location.search; if (target) locationSearch = target; var regExp = new RegExp("" + queryKey + "=([^&=]+)"); if (pattern) regExp = pattern; var query; if (regExp.test(locationSearch)) { query = RegExp.$1; } return query; }, getOffset: function (element) { var left = 0, top = 0; var parent = element; while (parent != null) { left += parent.offsetLeft; top += parent.offsetTop; parent = parent.offsetParent; } return { offsetX: left, offsetY: top }; }, getScrollOffsets: function (w) { var w = w || window; if (w.pageXOffset != null) { return { scrollX: w.pageXOffset, scrollY: w.pageYOffset }; } var doc = w.document; if (doc.compatMode == "CSS1Compat") { return { scrollX: doc.documentElement.scrollLeft, scrollY: doc.documentElement.scrollTop }; } return { scrollX: doc.body.scrollLeft, scrollY: doc.body.scrollTop }; }, getViewPortSize: function (w) { var w = w || window; if (w.innerWidth) { return { width: w.innerWidth, height: w.innerHeight }; } var d = w.document; if (d.compatMode == "CSS1Compat") { return { width: d.documentElement.clientWidth, height: d.documentElement.clientHeight }; } return { width: d.body.clientWidth, height: d.body.clientHeight }; } }; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; module.exports = Object.getPrototypeOf; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var array = __webpack_require__(0); module.exports = array.indexOf; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var fnToString = __webpack_require__(3); module.exports = fnToString.call(Object); /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var array = __webpack_require__(0); module.exports = array.push; /***/ }), /* 15 */ /***/ (function(module, exports) { module.exports = "<div class=\"select-wrapper\" v-show=\"visible\">\n {{dateSelectOption}}\n <div :class=\"dateSelectContainer\"></div>\n</div>"; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/** * IosSelect * @param {number} level 选择的层级 1 2 3 4 5 6 最多支持6层 * @param {...Array} data [oneLevelData[, twoLevelData[, threeLevelData[, fourLevelData[, fiveLevelData[, sixLevelData]]]]]] 可以用数组,也可以用方法 * @param {Object} options * @param {string=} options.container 组件插入到该元素下 可选 * @param {Function} options.callback 选择完毕后的回调函数 * @param {Function} options.fallback 选择取消后的回调函数 * @param {Function} options.maskCallback 点击背景层关闭组件时触发的方法 * @param {string=} options.title 选择框title * @param {number=} options.itemHeight 每一项的高度,默认 35 * @param {number=} options.itemShowCount 组件展示的项数,默认 7,可选3,5,7,9,不过不是3,5,7,9则展示7项 * @param {number=} options.headerHeight 组件标题栏高度 默认 44 * @param {css=} options.cssUnit px或者rem 默认是px * @param {string=} options.addClassName 组件额外类名 用于自定义样式 * @param {...Array=} options.relation 数组 [oneTwoRelation, twoThreeRelation, threeFourRelation, fourFiveRelation] 默认值:[0, 0, 0, 0, 0, 0] * @param {number=} options.relation.oneTwoRelation 第一列和第二列是否通过parentId关联 * @param {number=} options.relation.twoThreeRelation 第二列和第三列是否通过parentId关联 * @param {number=} options.relation.threeFourRelation 第三列和第四列是否通过parentId关联 * @param {number=} options.relation.fourFiveRelation 第四列和第五列是否通过parentId关联 * @param {number=} options.relation.fiveSixRelation 第五列和第六列是否通过parentId关联 * @param {string=} options.oneLevelId 第一级选中id * @param {string=} options.twoLevelId 第二级选中id * @param {string=} options.threeLevelId 第三级选中id * @param {string=} options.fourLevelId 第四级选中id * @param {string=} options.fiveLevelId 第五级选中id * @param {string=} options.sixLevelId 第六级选中id * @param {boolean=} options.showLoading 如果你的数据是异步加载的,可以使用该参数设置为true,下拉菜单会有加载中的效果 * @param {boolean=} options.showAnimate 是否需要入场动画和退场动画,如需自定义动画效果,请修改css */ (function() { /* modify by zhoushengmufc,based on iScroll v5.2.0 */ var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) { window.setTimeout(callback, 1000 / 60); }; var utils = (function () { var me = {}; var _elementStyle = document.createElement('div').style; var _vendor = (function () { var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'], transform, i = 0, l = vendors.length; for ( ; i < l; i++ ) { transform = vendors[i] + 'ransform'; if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1); } return false; })(); function _prefixStyle (style) { if ( _vendor === false ) return false; if ( _vendor === '' ) return style; return _vendor + style.charAt(0).toUpperCase() + style.substr(1); } me.getTime = Date.now || function getTime () { return new Date().getTime(); }; me.extend = function (target, obj) { for ( var i in obj ) { target[i] = obj[i]; } }; me.addEvent = function (el, type, fn, capture) { el.addEventListener(type, fn, !!capture); }; me.removeEvent = function (el, type, fn, capture) { el.removeEventListener(type, fn, !!capture); }; me.prefixPointerEvent = function (pointerEvent) { return window.MSPointerEvent ? 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8): pointerEvent; }; me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) { var distance = current - start, speed = Math.abs(distance) / time, destination, duration; deceleration = deceleration === undefined ? 0.0006 : deceleration; destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 ); duration = speed / deceleration; if ( destination < lowerMargin ) { destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin; distance = Math.abs(destination - current); duration = distance / speed; } else if ( destination > 0 ) { destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0; distance = Math.abs(current) + destination; duration = distance / speed; } return { destination: Math.round(destination), duration: duration }; }; var _transform =