index.js 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447
  1. module.exports =
  2. /******/ (function(modules) { // webpackBootstrap
  3. /******/ // The module cache
  4. /******/ var installedModules = {};
  5. /******/ // The require function
  6. /******/ function __webpack_require__(moduleId) {
  7. /******/ // Check if module is in cache
  8. /******/ if(installedModules[moduleId])
  9. /******/ return installedModules[moduleId].exports;
  10. /******/ // Create a new module (and put it into the cache)
  11. /******/ var module = installedModules[moduleId] = {
  12. /******/ i: moduleId,
  13. /******/ l: false,
  14. /******/ exports: {}
  15. /******/ };
  16. /******/ // Execute the module function
  17. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  18. /******/ // Flag the module as loaded
  19. /******/ module.l = true;
  20. /******/ // Return the exports of the module
  21. /******/ return module.exports;
  22. /******/ }
  23. /******/ // expose the modules object (__webpack_modules__)
  24. /******/ __webpack_require__.m = modules;
  25. /******/ // expose the module cache
  26. /******/ __webpack_require__.c = installedModules;
  27. /******/ // identity function for calling harmony imports with the correct context
  28. /******/ __webpack_require__.i = function(value) { return value; };
  29. /******/ // define getter function for harmony exports
  30. /******/ __webpack_require__.d = function(exports, name, getter) {
  31. /******/ if(!__webpack_require__.o(exports, name)) {
  32. /******/ Object.defineProperty(exports, name, {
  33. /******/ configurable: false,
  34. /******/ enumerable: true,
  35. /******/ get: getter
  36. /******/ });
  37. /******/ }
  38. /******/ };
  39. /******/ // getDefaultExport function for compatibility with non-harmony modules
  40. /******/ __webpack_require__.n = function(module) {
  41. /******/ var getter = module && module.__esModule ?
  42. /******/ function getDefault() { return module['default']; } :
  43. /******/ function getModuleExports() { return module; };
  44. /******/ __webpack_require__.d(getter, 'a', getter);
  45. /******/ return getter;
  46. /******/ };
  47. /******/ // Object.prototype.hasOwnProperty.call
  48. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  49. /******/ // __webpack_public_path__
  50. /******/ __webpack_require__.p = "";
  51. /******/ // Load entry module and return exports
  52. /******/ return __webpack_require__(__webpack_require__.s = 228);
  53. /******/ })
  54. /************************************************************************/
  55. /******/ ({
  56. /***/ 0:
  57. /***/ function(module, exports) {
  58. /* globals __VUE_SSR_CONTEXT__ */
  59. // this module is a runtime utility for cleaner component module output and will
  60. // be included in the final webpack user bundle
  61. module.exports = function normalizeComponent (
  62. rawScriptExports,
  63. compiledTemplate,
  64. injectStyles,
  65. scopeId,
  66. moduleIdentifier /* server only */
  67. ) {
  68. var esModule
  69. var scriptExports = rawScriptExports = rawScriptExports || {}
  70. // ES6 modules interop
  71. var type = typeof rawScriptExports.default
  72. if (type === 'object' || type === 'function') {
  73. esModule = rawScriptExports
  74. scriptExports = rawScriptExports.default
  75. }
  76. // Vue.extend constructor export interop
  77. var options = typeof scriptExports === 'function'
  78. ? scriptExports.options
  79. : scriptExports
  80. // render functions
  81. if (compiledTemplate) {
  82. options.render = compiledTemplate.render
  83. options.staticRenderFns = compiledTemplate.staticRenderFns
  84. }
  85. // scopedId
  86. if (scopeId) {
  87. options._scopeId = scopeId
  88. }
  89. var hook
  90. if (moduleIdentifier) { // server build
  91. hook = function (context) {
  92. // 2.3 injection
  93. context =
  94. context || // cached call
  95. (this.$vnode && this.$vnode.ssrContext) || // stateful
  96. (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
  97. // 2.2 with runInNewContext: true
  98. if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
  99. context = __VUE_SSR_CONTEXT__
  100. }
  101. // inject component styles
  102. if (injectStyles) {
  103. injectStyles.call(this, context)
  104. }
  105. // register component module identifier for async chunk inferrence
  106. if (context && context._registeredComponents) {
  107. context._registeredComponents.add(moduleIdentifier)
  108. }
  109. }
  110. // used by ssr in case component is cached and beforeCreate
  111. // never gets called
  112. options._ssrRegister = hook
  113. } else if (injectStyles) {
  114. hook = injectStyles
  115. }
  116. if (hook) {
  117. var functional = options.functional
  118. var existing = functional
  119. ? options.render
  120. : options.beforeCreate
  121. if (!functional) {
  122. // inject component registration as beforeCreate hook
  123. options.beforeCreate = existing
  124. ? [].concat(existing, hook)
  125. : [hook]
  126. } else {
  127. // register for functioal component in vue file
  128. options.render = function renderWithStyleInjection (h, context) {
  129. hook.call(context)
  130. return existing(h, context)
  131. }
  132. }
  133. }
  134. return {
  135. esModule: esModule,
  136. exports: scriptExports,
  137. options: options
  138. }
  139. }
  140. /***/ },
  141. /***/ 1:
  142. /***/ function(module, exports) {
  143. module.exports = require("vue");
  144. /***/ },
  145. /***/ 129:
  146. /***/ function(module, exports) {
  147. // removed by extract-text-webpack-plugin
  148. /***/ },
  149. /***/ 146:
  150. /***/ function(module, exports, __webpack_require__) {
  151. function injectStyle (ssrContext) {
  152. __webpack_require__(96)
  153. }
  154. var Component = __webpack_require__(0)(
  155. /* script */
  156. __webpack_require__(68),
  157. /* template */
  158. __webpack_require__(165),
  159. /* styles */
  160. injectStyle,
  161. /* scopeId */
  162. null,
  163. /* moduleIdentifier (server only) */
  164. null
  165. )
  166. module.exports = Component.exports
  167. /***/ },
  168. /***/ 147:
  169. /***/ function(module, exports, __webpack_require__) {
  170. function injectStyle (ssrContext) {
  171. __webpack_require__(129)
  172. }
  173. var Component = __webpack_require__(0)(
  174. /* script */
  175. __webpack_require__(69),
  176. /* template */
  177. __webpack_require__(199),
  178. /* styles */
  179. injectStyle,
  180. /* scopeId */
  181. null,
  182. /* moduleIdentifier (server only) */
  183. null
  184. )
  185. module.exports = Component.exports
  186. /***/ },
  187. /***/ 165:
  188. /***/ function(module, exports) {
  189. module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  190. return _c('div', {
  191. staticClass: "picker-slot",
  192. class: _vm.classNames,
  193. style: (_vm.flexStyle)
  194. }, [(!_vm.divider) ? _c('div', {
  195. ref: "wrapper",
  196. staticClass: "picker-slot-wrapper",
  197. class: {
  198. dragging: _vm.dragging
  199. },
  200. style: ({
  201. height: _vm.contentHeight + 'px'
  202. })
  203. }, _vm._l((_vm.mutatingValues), function(itemValue) {
  204. return _c('div', {
  205. staticClass: "picker-item",
  206. class: {
  207. 'picker-selected': itemValue === _vm.currentValue
  208. },
  209. style: ({
  210. height: _vm.itemHeight + 'px',
  211. lineHeight: _vm.itemHeight + 'px'
  212. })
  213. }, [_vm._v("\n " + _vm._s(typeof itemValue === 'object' && itemValue[_vm.valueKey] ? itemValue[_vm.valueKey] : itemValue) + "\n ")])
  214. })) : _vm._e(), _vm._v(" "), (_vm.divider) ? _c('div', [_vm._v(_vm._s(_vm.content))]) : _vm._e()])
  215. },staticRenderFns: []}
  216. /***/ },
  217. /***/ 199:
  218. /***/ function(module, exports) {
  219. module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  220. return _c('div', {
  221. staticClass: "picker",
  222. class: {
  223. 'picker-3d': _vm.rotateEffect
  224. }
  225. }, [(_vm.showToolbar) ? _c('div', {
  226. staticClass: "picker-toolbar"
  227. }, [_vm._t("default")], 2) : _vm._e(), _vm._v(" "), _c('div', {
  228. staticClass: "picker-items"
  229. }, [_vm._l((_vm.slots), function(slot) {
  230. return _c('picker-slot', {
  231. attrs: {
  232. "valueKey": _vm.valueKey,
  233. "values": slot.values || [],
  234. "text-align": slot.textAlign || 'center',
  235. "visible-item-count": _vm.visibleItemCount,
  236. "class-name": slot.className,
  237. "flex": slot.flex,
  238. "rotate-effect": _vm.rotateEffect,
  239. "divider": slot.divider,
  240. "content": slot.content,
  241. "itemHeight": _vm.itemHeight,
  242. "default-index": slot.defaultIndex
  243. },
  244. model: {
  245. value: (_vm.values[slot.valueIndex]),
  246. callback: function($$v) {
  247. var $$exp = _vm.values,
  248. $$idx = slot.valueIndex;
  249. if (!Array.isArray($$exp)) {
  250. _vm.values[slot.valueIndex] = $$v
  251. } else {
  252. $$exp.splice($$idx, 1, $$v)
  253. }
  254. },
  255. expression: "values[slot.valueIndex]"
  256. }
  257. })
  258. }), _vm._v(" "), _c('div', {
  259. staticClass: "picker-center-highlight",
  260. style: ({
  261. height: _vm.itemHeight + 'px',
  262. marginTop: -_vm.itemHeight / 2 + 'px'
  263. })
  264. })], 2)])
  265. },staticRenderFns: []}
  266. /***/ },
  267. /***/ 2:
  268. /***/ function(module, exports, __webpack_require__) {
  269. "use strict";
  270. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(1);
  271. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
  272. /* unused harmony export on */
  273. /* unused harmony export off */
  274. /* harmony export (binding) */ __webpack_require__.d(exports, "c", function() { return once; });
  275. /* unused harmony export hasClass */
  276. /* harmony export (immutable) */ exports["a"] = addClass;
  277. /* harmony export (immutable) */ exports["b"] = removeClass;
  278. /* unused harmony export getStyle */
  279. /* unused harmony export setStyle */
  280. /* istanbul ignore next */
  281. var isServer = __WEBPACK_IMPORTED_MODULE_0_vue___default.a.prototype.$isServer;
  282. var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
  283. var MOZ_HACK_REGEXP = /^moz([A-Z])/;
  284. var ieVersion = isServer ? 0 : Number(document.documentMode);
  285. /* istanbul ignore next */
  286. var trim = function(string) {
  287. return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
  288. };
  289. /* istanbul ignore next */
  290. var camelCase = function(name) {
  291. return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
  292. return offset ? letter.toUpperCase() : letter;
  293. }).replace(MOZ_HACK_REGEXP, 'Moz$1');
  294. };
  295. /* istanbul ignore next */
  296. var on = (function() {
  297. if (!isServer && document.addEventListener) {
  298. return function(element, event, handler) {
  299. if (element && event && handler) {
  300. element.addEventListener(event, handler, false);
  301. }
  302. };
  303. } else {
  304. return function(element, event, handler) {
  305. if (element && event && handler) {
  306. element.attachEvent('on' + event, handler);
  307. }
  308. };
  309. }
  310. })();
  311. /* istanbul ignore next */
  312. var off = (function() {
  313. if (!isServer && document.removeEventListener) {
  314. return function(element, event, handler) {
  315. if (element && event) {
  316. element.removeEventListener(event, handler, false);
  317. }
  318. };
  319. } else {
  320. return function(element, event, handler) {
  321. if (element && event) {
  322. element.detachEvent('on' + event, handler);
  323. }
  324. };
  325. }
  326. })();
  327. /* istanbul ignore next */
  328. var once = function(el, event, fn) {
  329. var listener = function() {
  330. if (fn) {
  331. fn.apply(this, arguments);
  332. }
  333. off(el, event, listener);
  334. };
  335. on(el, event, listener);
  336. };
  337. /* istanbul ignore next */
  338. function hasClass(el, cls) {
  339. if (!el || !cls) return false;
  340. if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
  341. if (el.classList) {
  342. return el.classList.contains(cls);
  343. } else {
  344. return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
  345. }
  346. };
  347. /* istanbul ignore next */
  348. function addClass(el, cls) {
  349. if (!el) return;
  350. var curClass = el.className;
  351. var classes = (cls || '').split(' ');
  352. for (var i = 0, j = classes.length; i < j; i++) {
  353. var clsName = classes[i];
  354. if (!clsName) continue;
  355. if (el.classList) {
  356. el.classList.add(clsName);
  357. } else {
  358. if (!hasClass(el, clsName)) {
  359. curClass += ' ' + clsName;
  360. }
  361. }
  362. }
  363. if (!el.classList) {
  364. el.className = curClass;
  365. }
  366. };
  367. /* istanbul ignore next */
  368. function removeClass(el, cls) {
  369. if (!el || !cls) return;
  370. var classes = cls.split(' ');
  371. var curClass = ' ' + el.className + ' ';
  372. for (var i = 0, j = classes.length; i < j; i++) {
  373. var clsName = classes[i];
  374. if (!clsName) continue;
  375. if (el.classList) {
  376. el.classList.remove(clsName);
  377. } else {
  378. if (hasClass(el, clsName)) {
  379. curClass = curClass.replace(' ' + clsName + ' ', ' ');
  380. }
  381. }
  382. }
  383. if (!el.classList) {
  384. el.className = trim(curClass);
  385. }
  386. };
  387. /* istanbul ignore next */
  388. var getStyle = ieVersion < 9 ? function(element, styleName) {
  389. if (isServer) return;
  390. if (!element || !styleName) return null;
  391. styleName = camelCase(styleName);
  392. if (styleName === 'float') {
  393. styleName = 'styleFloat';
  394. }
  395. try {
  396. switch (styleName) {
  397. case 'opacity':
  398. try {
  399. return element.filters.item('alpha').opacity / 100;
  400. } catch (e) {
  401. return 1.0;
  402. }
  403. default:
  404. return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);
  405. }
  406. } catch (e) {
  407. return element.style[styleName];
  408. }
  409. } : function(element, styleName) {
  410. if (isServer) return;
  411. if (!element || !styleName) return null;
  412. styleName = camelCase(styleName);
  413. if (styleName === 'float') {
  414. styleName = 'cssFloat';
  415. }
  416. try {
  417. var computed = document.defaultView.getComputedStyle(element, '');
  418. return element.style[styleName] || computed ? computed[styleName] : null;
  419. } catch (e) {
  420. return element.style[styleName];
  421. }
  422. };
  423. /* istanbul ignore next */
  424. function setStyle(element, styleName, value) {
  425. if (!element || !styleName) return;
  426. if (typeof styleName === 'object') {
  427. for (var prop in styleName) {
  428. if (styleName.hasOwnProperty(prop)) {
  429. setStyle(element, prop, styleName[prop]);
  430. }
  431. }
  432. } else {
  433. styleName = camelCase(styleName);
  434. if (styleName === 'opacity' && ieVersion < 9) {
  435. element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
  436. } else {
  437. element.style[styleName] = value;
  438. }
  439. }
  440. };
  441. /***/ },
  442. /***/ 207:
  443. /***/ function(module, exports) {
  444. module.exports = require("raf.js");
  445. /***/ },
  446. /***/ 228:
  447. /***/ function(module, exports, __webpack_require__) {
  448. module.exports = __webpack_require__(36);
  449. /***/ },
  450. /***/ 36:
  451. /***/ function(module, exports, __webpack_require__) {
  452. "use strict";
  453. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_picker_vue__ = __webpack_require__(147);
  454. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_picker_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__src_picker_vue__);
  455. Object.defineProperty(exports, "__esModule", { value: true });
  456. /* harmony reexport (default from non-hamory) */ __webpack_require__.d(exports, "default", function() { return __WEBPACK_IMPORTED_MODULE_0__src_picker_vue___default.a; });
  457. /***/ },
  458. /***/ 68:
  459. /***/ function(module, exports, __webpack_require__) {
  460. "use strict";
  461. Object.defineProperty(exports, "__esModule", { value: true });
  462. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__draggable__ = __webpack_require__(91);
  463. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__translate__ = __webpack_require__(92);
  464. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_mint_ui_src_utils_dom__ = __webpack_require__(2);
  465. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_mint_ui_src_mixins_emitter__ = __webpack_require__(95);
  466. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue__ = __webpack_require__(1);
  467. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_vue__);
  468. //
  469. //
  470. //
  471. //
  472. //
  473. //
  474. //
  475. //
  476. //
  477. //
  478. //
  479. //
  480. //
  481. //
  482. //
  483. //
  484. //
  485. //
  486. //
  487. //
  488. //
  489. //
  490. //
  491. //
  492. //
  493. //
  494. //
  495. //
  496. //
  497. //
  498. //
  499. //
  500. //
  501. //
  502. //
  503. //
  504. //
  505. //
  506. //
  507. //
  508. //
  509. //
  510. //
  511. //
  512. //
  513. //
  514. //
  515. //
  516. //
  517. //
  518. //
  519. //
  520. //
  521. //
  522. //
  523. //
  524. //
  525. //
  526. //
  527. //
  528. //
  529. //
  530. //
  531. //
  532. //
  533. //
  534. //
  535. //
  536. //
  537. //
  538. //
  539. //
  540. //
  541. //
  542. //
  543. //
  544. //
  545. //
  546. //
  547. //
  548. //
  549. //
  550. //
  551. //
  552. //
  553. //
  554. //
  555. //
  556. //
  557. //
  558. //
  559. //
  560. //
  561. //
  562. //
  563. //
  564. //
  565. //
  566. //
  567. //
  568. if (!__WEBPACK_IMPORTED_MODULE_4_vue___default.a.prototype.$isServer) {
  569. __webpack_require__(207);
  570. }
  571. var rotateElement = function(element, angle) {
  572. if (!element) return;
  573. var transformProperty = __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].transformProperty;
  574. element.style[transformProperty] = element.style[transformProperty].replace(/rotateX\(.+?deg\)/gi, '') + " rotateX(" + angle + "deg)";
  575. };
  576. var ITEM_HEIGHT = 36;
  577. var VISIBLE_ITEMS_ANGLE_MAP = {
  578. 3: -45,
  579. 5: -20,
  580. 7: -15
  581. };
  582. /* harmony default export */ exports["default"] = {
  583. name: 'picker-slot',
  584. props: {
  585. values: {
  586. type: Array,
  587. default: function default$1() {
  588. return [];
  589. }
  590. },
  591. value: {},
  592. visibleItemCount: {
  593. type: Number,
  594. default: 5
  595. },
  596. valueKey: String,
  597. rotateEffect: {
  598. type: Boolean,
  599. default: false
  600. },
  601. divider: {
  602. type: Boolean,
  603. default: false
  604. },
  605. textAlign: {
  606. type: String,
  607. default: 'center'
  608. },
  609. flex: {},
  610. className: {},
  611. content: {},
  612. itemHeight: {
  613. type: Number,
  614. default: ITEM_HEIGHT
  615. },
  616. defaultIndex: {
  617. type: Number,
  618. default: 0,
  619. require: false
  620. }
  621. },
  622. data: function data() {
  623. return {
  624. currentValue: this.value,
  625. mutatingValues: this.values,
  626. dragging: false,
  627. animationFrameId: null
  628. };
  629. },
  630. mixins: [__WEBPACK_IMPORTED_MODULE_3_mint_ui_src_mixins_emitter__["a" /* default */]],
  631. computed: {
  632. flexStyle: function flexStyle() {
  633. return {
  634. 'flex': this.flex,
  635. '-webkit-box-flex': this.flex,
  636. '-moz-box-flex': this.flex,
  637. '-ms-flex': this.flex
  638. };
  639. },
  640. classNames: function classNames() {
  641. var PREFIX = 'picker-slot-';
  642. var resultArray = [];
  643. if (this.rotateEffect) {
  644. resultArray.push(PREFIX + 'absolute');
  645. }
  646. var textAlign = this.textAlign || 'center';
  647. resultArray.push(PREFIX + textAlign);
  648. if (this.divider) {
  649. resultArray.push(PREFIX + 'divider');
  650. }
  651. if (this.className) {
  652. resultArray.push(this.className);
  653. }
  654. return resultArray.join(' ');
  655. },
  656. contentHeight: function contentHeight() {
  657. return this.itemHeight * this.visibleItemCount;
  658. },
  659. valueIndex: function valueIndex() {
  660. var this$1 = this;
  661. var valueKey = this.valueKey;
  662. if (this.currentValue instanceof Object) {
  663. for (var i = 0, len = this.mutatingValues.length; i < len ; i++) {
  664. if (this$1.currentValue[valueKey] === this$1.mutatingValues[i][valueKey]) {
  665. return i;
  666. }
  667. }
  668. return -1;
  669. } else {
  670. return this.mutatingValues.indexOf(this.currentValue);
  671. }
  672. },
  673. dragRange: function dragRange() {
  674. var values = this.mutatingValues;
  675. var visibleItemCount = this.visibleItemCount;
  676. var itemHeight = this.itemHeight;
  677. return [ -itemHeight * (values.length - Math.ceil(visibleItemCount / 2)), itemHeight * Math.floor(visibleItemCount / 2) ];
  678. },
  679. minTranslateY: function minTranslateY() {
  680. return this.itemHeight * (Math.ceil(this.visibleItemCount / 2) - this.mutatingValues.length);
  681. },
  682. maxTranslateY: function maxTranslateY() {
  683. return this.itemHeight * Math.floor(this.visibleItemCount / 2);
  684. }
  685. },
  686. methods: {
  687. value2Translate: function value2Translate(value) {
  688. var values = this.mutatingValues;
  689. var valueIndex = values.indexOf(value);
  690. var offset = Math.floor(this.visibleItemCount / 2);
  691. var itemHeight = this.itemHeight;
  692. if (valueIndex !== -1) {
  693. return (valueIndex - offset) * -itemHeight;
  694. }
  695. },
  696. translate2Value: function translate2Value(translate) {
  697. var itemHeight = this.itemHeight;
  698. translate = Math.round(translate / itemHeight) * itemHeight;
  699. var index = -(translate - Math.floor(this.visibleItemCount / 2) * itemHeight) / itemHeight;
  700. return this.mutatingValues[index];
  701. },
  702. updateRotate: function(currentTranslate, pickerItems) {
  703. var this$1 = this;
  704. if (this.divider) return;
  705. var dragRange = this.dragRange;
  706. var wrapper = this.$refs.wrapper;
  707. if (!pickerItems) {
  708. pickerItems = wrapper.querySelectorAll('.picker-item');
  709. }
  710. if (currentTranslate === undefined) {
  711. currentTranslate = __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].getElementTranslate(wrapper).top;
  712. }
  713. var itemsFit = Math.ceil(this.visibleItemCount / 2);
  714. var angleUnit = VISIBLE_ITEMS_ANGLE_MAP[this.visibleItemCount] || -20;
  715. [].forEach.call(pickerItems, function (item, index) {
  716. var itemOffsetTop = index * this$1.itemHeight;
  717. var translateOffset = dragRange[1] - currentTranslate;
  718. var itemOffset = itemOffsetTop - translateOffset;
  719. var percentage = itemOffset / this$1.itemHeight;
  720. var angle = angleUnit * percentage;
  721. if (angle > 180) angle = 180;
  722. if (angle < -180) angle = -180;
  723. rotateElement(item, angle);
  724. if (Math.abs(percentage) > itemsFit) {
  725. __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_mint_ui_src_utils_dom__["a" /* addClass */])(item, 'picker-item-far');
  726. } else {
  727. __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_mint_ui_src_utils_dom__["b" /* removeClass */])(item, 'picker-item-far');
  728. }
  729. });
  730. },
  731. planUpdateRotate: function() {
  732. var this$1 = this;
  733. var el = this.$refs.wrapper;
  734. cancelAnimationFrame(this.animationFrameId);
  735. this.animationFrameId = requestAnimationFrame(function () {
  736. this$1.updateRotate();
  737. });
  738. __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2_mint_ui_src_utils_dom__["c" /* once */])(el, __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].transitionEndProperty, function () {
  739. cancelAnimationFrame(this$1.animationFrameId);
  740. this$1.animationFrameId = null;
  741. });
  742. },
  743. initEvents: function initEvents() {
  744. var this$1 = this;
  745. var el = this.$refs.wrapper;
  746. var dragState = {};
  747. var velocityTranslate, prevTranslate, pickerItems;
  748. __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__draggable__["a" /* default */])(el, {
  749. start: function (event) {
  750. cancelAnimationFrame(this$1.animationFrameId);
  751. this$1.animationFrameId = null;
  752. dragState = {
  753. range: this$1.dragRange,
  754. start: new Date(),
  755. startLeft: event.pageX,
  756. startTop: event.pageY,
  757. startTranslateTop: __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].getElementTranslate(el).top
  758. };
  759. pickerItems = el.querySelectorAll('.picker-item');
  760. },
  761. drag: function (event) {
  762. this$1.dragging = true;
  763. dragState.left = event.pageX;
  764. dragState.top = event.pageY;
  765. var deltaY = dragState.top - dragState.startTop;
  766. var translate = dragState.startTranslateTop + deltaY;
  767. __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].translateElement(el, null, translate);
  768. velocityTranslate = translate - prevTranslate || translate;
  769. prevTranslate = translate;
  770. if (this$1.rotateEffect) {
  771. this$1.updateRotate(prevTranslate, pickerItems);
  772. }
  773. },
  774. end: function (event) {
  775. this$1.dragging = false;
  776. var momentumRatio = 7;
  777. var currentTranslate = __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].getElementTranslate(el).top;
  778. var duration = new Date() - dragState.start;
  779. var distance = Math.abs(dragState.startTranslateTop - currentTranslate);
  780. var itemHeight = this$1.itemHeight;
  781. var visibleItemCount = this$1.visibleItemCount;
  782. var rect, offset;
  783. if (distance < 6) {
  784. rect = this$1.$el.getBoundingClientRect();
  785. offset = Math.floor((event.clientY - (rect.top + (visibleItemCount - 1) * itemHeight / 2)) / itemHeight) * itemHeight;
  786. if (offset > this$1.maxTranslateY) {
  787. offset = this$1.maxTranslateY;
  788. }
  789. velocityTranslate = 0;
  790. currentTranslate -= offset;
  791. }
  792. var momentumTranslate;
  793. if (duration < 300) {
  794. momentumTranslate = currentTranslate + velocityTranslate * momentumRatio;
  795. }
  796. var dragRange = dragState.range;
  797. this$1.$nextTick(function () {
  798. var translate;
  799. if (momentumTranslate) {
  800. translate = Math.round(momentumTranslate / itemHeight) * itemHeight;
  801. } else {
  802. translate = Math.round(currentTranslate / itemHeight) * itemHeight;
  803. }
  804. translate = Math.max(Math.min(translate, dragRange[1]), dragRange[0]);
  805. __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].translateElement(el, null, translate);
  806. this$1.currentValue = this$1.translate2Value(translate);
  807. if (this$1.rotateEffect) {
  808. this$1.planUpdateRotate();
  809. }
  810. });
  811. dragState = {};
  812. }
  813. });
  814. },
  815. doOnValueChange: function doOnValueChange() {
  816. var value = this.currentValue;
  817. var wrapper = this.$refs.wrapper;
  818. __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].translateElement(wrapper, null, this.value2Translate(value));
  819. },
  820. doOnValuesChange: function doOnValuesChange() {
  821. var this$1 = this;
  822. var el = this.$el;
  823. var items = el.querySelectorAll('.picker-item');
  824. [].forEach.call(items, function (item, index) {
  825. __WEBPACK_IMPORTED_MODULE_1__translate__["a" /* default */].translateElement(item, null, this$1.itemHeight * index);
  826. });
  827. if (this.rotateEffect) {
  828. this.planUpdateRotate();
  829. }
  830. }
  831. },
  832. mounted: function mounted() {
  833. this.ready = true;
  834. if (!this.divider) {
  835. this.initEvents();
  836. this.doOnValueChange();
  837. }
  838. if (this.rotateEffect) {
  839. this.doOnValuesChange();
  840. }
  841. },
  842. watch: {
  843. values: function values(val) {
  844. this.mutatingValues = val;
  845. },
  846. mutatingValues: function mutatingValues(val) {
  847. var this$1 = this;
  848. if (this.valueIndex === -1) {
  849. this.currentValue = (val || [])[0];
  850. }
  851. if (this.rotateEffect) {
  852. this.$nextTick(function () {
  853. this$1.doOnValuesChange();
  854. });
  855. }
  856. },
  857. currentValue: function currentValue(val) {
  858. this.doOnValueChange();
  859. if (this.rotateEffect) {
  860. this.planUpdateRotate();
  861. }
  862. this.$emit('input', val);
  863. this.dispatch('picker', 'slotValueChange', this);
  864. },
  865. defaultIndex: function defaultIndex(val) {
  866. if ((this.mutatingValues[val] !== undefined) && (this.mutatingValues.length >= val + 1)) {
  867. this.currentValue = this.mutatingValues[val];
  868. }
  869. }
  870. }
  871. };
  872. /***/ },
  873. /***/ 69:
  874. /***/ function(module, exports, __webpack_require__) {
  875. "use strict";
  876. Object.defineProperty(exports, "__esModule", { value: true });
  877. //
  878. //
  879. //
  880. //
  881. //
  882. //
  883. //
  884. //
  885. //
  886. //
  887. //
  888. //
  889. //
  890. //
  891. //
  892. //
  893. //
  894. //
  895. //
  896. //
  897. //
  898. //
  899. //
  900. //
  901. //
  902. //
  903. //
  904. //
  905. //
  906. //
  907. //
  908. //
  909. //
  910. //
  911. //
  912. //
  913. //
  914. //
  915. //
  916. //
  917. //
  918. //
  919. //
  920. //
  921. //
  922. //
  923. //
  924. //
  925. //
  926. //
  927. //
  928. //
  929. //
  930. //
  931. //
  932. //
  933. //
  934. //
  935. //
  936. //
  937. //
  938. //
  939. //
  940. //
  941. //
  942. /* harmony default export */ exports["default"] = {
  943. name: 'mt-picker',
  944. componentName: 'picker',
  945. props: {
  946. slots: {
  947. type: Array
  948. },
  949. showToolbar: {
  950. type: Boolean,
  951. default: false
  952. },
  953. visibleItemCount: {
  954. type: Number,
  955. default: 5
  956. },
  957. valueKey: String,
  958. rotateEffect: {
  959. type: Boolean,
  960. default: false
  961. },
  962. itemHeight: {
  963. type: Number,
  964. default: 36
  965. }
  966. },
  967. created: function created() {
  968. this.$on('slotValueChange', this.slotValueChange);
  969. this.slotValueChange();
  970. },
  971. methods: {
  972. slotValueChange: function slotValueChange() {
  973. this.$emit('change', this, this.values);
  974. },
  975. getSlot: function getSlot(slotIndex) {
  976. var slots = this.slots || [];
  977. var count = 0;
  978. var target;
  979. var children = this.$children.filter(function (child) { return child.$options.name === 'picker-slot'; });
  980. slots.forEach(function(slot, index) {
  981. if (!slot.divider) {
  982. if (slotIndex === count) {
  983. target = children[index];
  984. }
  985. count++;
  986. }
  987. });
  988. return target;
  989. },
  990. getSlotValue: function getSlotValue(index) {
  991. var slot = this.getSlot(index);
  992. if (slot) {
  993. return slot.currentValue;
  994. }
  995. return null;
  996. },
  997. setSlotValue: function setSlotValue(index, value) {
  998. var slot = this.getSlot(index);
  999. if (slot) {
  1000. slot.currentValue = value;
  1001. }
  1002. },
  1003. getSlotValues: function getSlotValues(index) {
  1004. var slot = this.getSlot(index);
  1005. if (slot) {
  1006. return slot.mutatingValues;
  1007. }
  1008. return null;
  1009. },
  1010. setSlotValues: function setSlotValues(index, values) {
  1011. var slot = this.getSlot(index);
  1012. if (slot) {
  1013. slot.mutatingValues = values;
  1014. }
  1015. },
  1016. getValues: function getValues() {
  1017. return this.values;
  1018. },
  1019. setValues: function setValues(values) {
  1020. var this$1 = this;
  1021. var slotCount = this.slotCount;
  1022. values = values || [];
  1023. if (slotCount !== values.length) {
  1024. throw new Error('values length is not equal slot count.');
  1025. }
  1026. values.forEach(function (value, index) {
  1027. this$1.setSlotValue(index, value);
  1028. });
  1029. }
  1030. },
  1031. computed: {
  1032. values: {
  1033. get: function get() {
  1034. var slots = this.slots || [];
  1035. var values = [];
  1036. var valueIndexCount = 0;
  1037. slots.forEach(function (slot) {
  1038. if (!slot.divider) {
  1039. slot.valueIndex = valueIndexCount++;
  1040. values[slot.valueIndex] = (slot.values || [])[slot.defaultIndex || 0];
  1041. }
  1042. });
  1043. return values;
  1044. }
  1045. },
  1046. slotCount: function slotCount() {
  1047. var slots = this.slots || [];
  1048. var result = 0;
  1049. slots.forEach(function(slot) {
  1050. if (!slot.divider) result++;
  1051. });
  1052. return result;
  1053. }
  1054. },
  1055. components: {
  1056. PickerSlot: __webpack_require__(146)
  1057. }
  1058. };
  1059. /***/ },
  1060. /***/ 91:
  1061. /***/ function(module, exports, __webpack_require__) {
  1062. "use strict";
  1063. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(1);
  1064. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
  1065. var isDragging = false;
  1066. var supportTouch = !__WEBPACK_IMPORTED_MODULE_0_vue___default.a.prototype.$isServer && 'ontouchstart' in window;
  1067. /* harmony default export */ exports["a"] = function(element, options) {
  1068. var moveFn = function(event) {
  1069. if (options.drag) {
  1070. options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event);
  1071. }
  1072. };
  1073. var endFn = function(event) {
  1074. if (!supportTouch) {
  1075. document.removeEventListener('mousemove', moveFn);
  1076. document.removeEventListener('mouseup', endFn);
  1077. }
  1078. document.onselectstart = null;
  1079. document.ondragstart = null;
  1080. isDragging = false;
  1081. if (options.end) {
  1082. options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event);
  1083. }
  1084. };
  1085. element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function(event) {
  1086. if (isDragging) return;
  1087. document.onselectstart = function() { return false; };
  1088. document.ondragstart = function() { return false; };
  1089. if (!supportTouch) {
  1090. document.addEventListener('mousemove', moveFn);
  1091. document.addEventListener('mouseup', endFn);
  1092. }
  1093. isDragging = true;
  1094. if (options.start) {
  1095. event.preventDefault();
  1096. options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event);
  1097. }
  1098. });
  1099. if (supportTouch) {
  1100. element.addEventListener('touchmove', moveFn);
  1101. element.addEventListener('touchend', endFn);
  1102. element.addEventListener('touchcancel', endFn);
  1103. }
  1104. };;
  1105. /***/ },
  1106. /***/ 92:
  1107. /***/ function(module, exports, __webpack_require__) {
  1108. "use strict";
  1109. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(1);
  1110. /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);
  1111. var exportObj = {};
  1112. if (!__WEBPACK_IMPORTED_MODULE_0_vue___default.a.prototype.$isServer) {
  1113. var docStyle = document.documentElement.style;
  1114. var engine;
  1115. var translate3d = false;
  1116. if (window.opera && Object.prototype.toString.call(opera) === '[object Opera]') {
  1117. engine = 'presto';
  1118. } else if ('MozAppearance' in docStyle) {
  1119. engine = 'gecko';
  1120. } else if ('WebkitAppearance' in docStyle) {
  1121. engine = 'webkit';
  1122. } else if (typeof navigator.cpuClass === 'string') {
  1123. engine = 'trident';
  1124. }
  1125. var cssPrefix = {trident: '-ms-', gecko: '-moz-', webkit: '-webkit-', presto: '-o-'}[engine];
  1126. var vendorPrefix = {trident: 'ms', gecko: 'Moz', webkit: 'Webkit', presto: 'O'}[engine];
  1127. var helperElem = document.createElement('div');
  1128. var perspectiveProperty = vendorPrefix + 'Perspective';
  1129. var transformProperty = vendorPrefix + 'Transform';
  1130. var transformStyleName = cssPrefix + 'transform';
  1131. var transitionProperty = vendorPrefix + 'Transition';
  1132. var transitionStyleName = cssPrefix + 'transition';
  1133. var transitionEndProperty = vendorPrefix.toLowerCase() + 'TransitionEnd';
  1134. if (helperElem.style[perspectiveProperty] !== undefined) {
  1135. translate3d = true;
  1136. }
  1137. var getTranslate = function(element) {
  1138. var result = {left: 0, top: 0};
  1139. if (element === null || element.style === null) return result;
  1140. var transform = element.style[transformProperty];
  1141. var matches = /translate\(\s*(-?\d+(\.?\d+?)?)px,\s*(-?\d+(\.\d+)?)px\)\s*translateZ\(0px\)/ig.exec(transform);
  1142. if (matches) {
  1143. result.left = +matches[1];
  1144. result.top = +matches[3];
  1145. }
  1146. return result;
  1147. };
  1148. var translateElement = function(element, x, y) {
  1149. if (x === null && y === null) return;
  1150. if (element === null || element === undefined || element.style === null) return;
  1151. if (!element.style[transformProperty] && x === 0 && y === 0) return;
  1152. if (x === null || y === null) {
  1153. var translate = getTranslate(element);
  1154. if (x === null) {
  1155. x = translate.left;
  1156. }
  1157. if (y === null) {
  1158. y = translate.top;
  1159. }
  1160. }
  1161. cancelTranslateElement(element);
  1162. if (translate3d) {
  1163. element.style[transformProperty] += ' translate(' + (x ? (x + 'px') : '0px') + ',' + (y ? (y + 'px') : '0px') + ') translateZ(0px)';
  1164. } else {
  1165. element.style[transformProperty] += ' translate(' + (x ? (x + 'px') : '0px') + ',' + (y ? (y + 'px') : '0px') + ')';
  1166. }
  1167. };
  1168. var cancelTranslateElement = function(element) {
  1169. if (element === null || element.style === null) return;
  1170. var transformValue = element.style[transformProperty];
  1171. if (transformValue) {
  1172. transformValue = transformValue.replace(/translate\(\s*(-?\d+(\.?\d+?)?)px,\s*(-?\d+(\.\d+)?)px\)\s*translateZ\(0px\)/g, '');
  1173. element.style[transformProperty] = transformValue;
  1174. }
  1175. };
  1176. exportObj = {
  1177. transformProperty: transformProperty,
  1178. transformStyleName: transformStyleName,
  1179. transitionProperty: transitionProperty,
  1180. transitionStyleName: transitionStyleName,
  1181. transitionEndProperty: transitionEndProperty,
  1182. getElementTranslate: getTranslate,
  1183. translateElement: translateElement,
  1184. cancelTranslateElement: cancelTranslateElement
  1185. };
  1186. };
  1187. /* harmony default export */ exports["a"] = exportObj;
  1188. /***/ },
  1189. /***/ 95:
  1190. /***/ function(module, exports, __webpack_require__) {
  1191. "use strict";
  1192. function broadcast(componentName, eventName, params) {
  1193. this.$children.forEach(function (child) {
  1194. var name = child.$options.componentName;
  1195. if (name === componentName) {
  1196. child.$emit.apply(child, [eventName].concat(params));
  1197. } else {
  1198. broadcast.apply(child, [componentName, eventName].concat(params));
  1199. }
  1200. });
  1201. }
  1202. /* harmony default export */ exports["a"] = {
  1203. methods: {
  1204. dispatch: function dispatch(componentName, eventName, params) {
  1205. var parent = this.$parent;
  1206. var name = parent.$options.componentName;
  1207. while (parent && (!name || name !== componentName)) {
  1208. parent = parent.$parent;
  1209. if (parent) {
  1210. name = parent.$options.componentName;
  1211. }
  1212. }
  1213. if (parent) {
  1214. parent.$emit.apply(parent, [eventName].concat(params));
  1215. }
  1216. },
  1217. broadcast: function broadcast$1(componentName, eventName, params) {
  1218. broadcast.call(this, componentName, eventName, params);
  1219. }
  1220. }
  1221. };
  1222. /***/ },
  1223. /***/ 96:
  1224. /***/ function(module, exports) {
  1225. // removed by extract-text-webpack-plugin
  1226. /***/ }
  1227. /******/ });