@nutui/nutui 2.3.3 → 2.3.7-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/.DS_Store +0 -0
  3. package/dist/assets/img/grid.png +0 -0
  4. package/dist/nutui.css +7 -6
  5. package/dist/nutui.css.map +1 -1
  6. package/dist/nutui.js +630 -203
  7. package/dist/nutui.js.map +1 -1
  8. package/dist/nutui.min.css +2 -2
  9. package/dist/nutui.min.js +3 -3
  10. package/dist/nutui.min.js.map +1 -1
  11. package/dist/nutui.scss +2 -1
  12. package/dist/packages/actionsheet/actionsheet.css +1 -1
  13. package/dist/packages/actionsheet/actionsheet.js +2 -2
  14. package/dist/packages/actionsheet/actionsheet.js.map +1 -1
  15. package/dist/packages/address/address.css +1 -1
  16. package/dist/packages/address/address.js +2 -2
  17. package/dist/packages/address/address.js.map +1 -1
  18. package/dist/packages/avatar/avatar.css +1 -1
  19. package/dist/packages/avatar/avatar.js +2 -2
  20. package/dist/packages/avatar/avatar.js.map +1 -1
  21. package/dist/packages/backtop/backtop.css +1 -1
  22. package/dist/packages/backtop/backtop.js +2 -2
  23. package/dist/packages/backtop/backtop.js.map +1 -1
  24. package/dist/packages/badge/badge.css +1 -1
  25. package/dist/packages/badge/badge.js +2 -2
  26. package/dist/packages/badge/badge.js.map +1 -1
  27. package/dist/packages/button/button.css +1 -1
  28. package/dist/packages/button/button.js +1 -1
  29. package/dist/packages/buttongroup/buttongroup.css +1 -1
  30. package/dist/packages/buttongroup/buttongroup.js +1 -1
  31. package/dist/packages/calendar/calendar.css +1 -1
  32. package/dist/packages/calendar/calendar.js +2 -2
  33. package/dist/packages/calendar/calendar.js.map +1 -1
  34. package/dist/packages/calendar/calendar.vue +1 -1
  35. package/dist/packages/cell/cell.css +1 -1
  36. package/dist/packages/cell/cell.js +2 -2
  37. package/dist/packages/cell/cell.js.map +1 -1
  38. package/dist/packages/checkbox/checkbox.css +1 -1
  39. package/dist/packages/checkbox/checkbox.js +2 -2
  40. package/dist/packages/checkboxgroup/checkboxgroup.css +1 -1
  41. package/dist/packages/checkboxgroup/checkboxgroup.js +2 -2
  42. package/dist/packages/checkboxgroup/checkboxgroup.js.map +1 -1
  43. package/dist/packages/circleprogress/circleprogress.css +1 -1
  44. package/dist/packages/circleprogress/circleprogress.js +2 -2
  45. package/dist/packages/circleprogress/circleprogress.js.map +1 -1
  46. package/dist/packages/col/col.css +1 -1
  47. package/dist/packages/col/col.js +1 -1
  48. package/dist/packages/collapse/collapse.css +1 -1
  49. package/dist/packages/collapse/collapse.js +2 -2
  50. package/dist/packages/collapse/collapse.js.map +1 -1
  51. package/dist/packages/collapseitem/collapseitem.css +1 -1
  52. package/dist/packages/collapseitem/collapseitem.js +2 -2
  53. package/dist/packages/collapseitem/collapseitem.js.map +1 -1
  54. package/dist/packages/countdown/countdown.css +1 -1
  55. package/dist/packages/countdown/countdown.js +2 -2
  56. package/dist/packages/countdown/countdown.js.map +1 -1
  57. package/dist/packages/countdown/countdown.vue +15 -1
  58. package/dist/packages/countup/countup.css +2 -2
  59. package/dist/packages/countup/countup.js +2 -2
  60. package/dist/packages/countup/countup.js.map +1 -1
  61. package/dist/packages/countup/countup.scss +2 -1
  62. package/dist/packages/countup/countup.vue +22 -10
  63. package/dist/packages/coupon/coupon.css +1 -1
  64. package/dist/packages/coupon/coupon.js +2 -2
  65. package/dist/packages/coupon/coupon.js.map +1 -1
  66. package/dist/packages/datepicker/datepicker.css +1 -1
  67. package/dist/packages/datepicker/datepicker.js +2 -2
  68. package/dist/packages/datepicker/datepicker.js.map +1 -1
  69. package/dist/packages/dialog/dialog.css +1 -1
  70. package/dist/packages/dialog/dialog.js +2 -2
  71. package/dist/packages/dialog/dialog.js.map +1 -1
  72. package/dist/packages/drag/drag.css +1 -1
  73. package/dist/packages/drag/drag.js +2 -2
  74. package/dist/packages/drag/drag.js.map +1 -1
  75. package/dist/packages/elevator/elevator.css +1 -1
  76. package/dist/packages/elevator/elevator.js +2 -2
  77. package/dist/packages/elevator/elevator.js.map +1 -1
  78. package/dist/packages/fixednav/fixednav.css +1 -1
  79. package/dist/packages/fixednav/fixednav.js +2 -2
  80. package/dist/packages/fixednav/fixednav.js.map +1 -1
  81. package/dist/packages/flex/flex.css +1 -1
  82. package/dist/packages/flex/flex.js +1 -1
  83. package/dist/packages/icon/icon.css +1 -1
  84. package/dist/packages/icon/icon.js +2 -2
  85. package/dist/packages/icon/icon.js.map +1 -1
  86. package/dist/packages/imagepicker/imagepicker.css +1 -1
  87. package/dist/packages/imagepicker/imagepicker.js +2 -2
  88. package/dist/packages/imagepicker/imagepicker.js.map +1 -1
  89. package/dist/packages/infiniteloading/infiniteloading.css +1 -1
  90. package/dist/packages/infiniteloading/infiniteloading.js +2 -2
  91. package/dist/packages/infiniteloading/infiniteloading.js.map +1 -1
  92. package/dist/packages/infiniteloading/infiniteloading.vue +5 -1
  93. package/dist/packages/lazyload/lazyload.css +1 -1
  94. package/dist/packages/lazyload/lazyload.js +1 -1
  95. package/dist/packages/leftslip/leftslip.css +1 -1
  96. package/dist/packages/leftslip/leftslip.js +2 -2
  97. package/dist/packages/leftslip/leftslip.js.map +1 -1
  98. package/dist/packages/luckdraw/luckdraw.css +1 -1
  99. package/dist/packages/luckdraw/luckdraw.js +2 -2
  100. package/dist/packages/luckdraw/luckdraw.js.map +1 -1
  101. package/dist/packages/luckycard/luckycard.css +1 -1
  102. package/dist/packages/luckycard/luckycard.js +2 -2
  103. package/dist/packages/magic/Cube/CubeItem.vue +1 -199
  104. package/dist/packages/magic/Cube/index.vue +1 -143
  105. package/dist/packages/magic/index.js +4 -0
  106. package/dist/packages/magic/magic.css +2 -2
  107. package/dist/packages/magic/magic.js +2 -2
  108. package/dist/packages/magic/magic.js.map +1 -1
  109. package/dist/packages/magic/magic.scss +339 -1
  110. package/dist/packages/menu/menu.css +1 -1
  111. package/dist/packages/menu/menu.js +2 -2
  112. package/dist/packages/menu/menu.js.map +1 -1
  113. package/dist/packages/navbar/navbar.css +1 -1
  114. package/dist/packages/navbar/navbar.js +2 -2
  115. package/dist/packages/ninegrid/animation.scss +223 -0
  116. package/dist/packages/ninegrid/index.js +8 -0
  117. package/dist/packages/ninegrid/ninegrid.css +5 -0
  118. package/dist/packages/ninegrid/ninegrid.js +7 -0
  119. package/dist/packages/ninegrid/ninegrid.js.map +1 -0
  120. package/dist/packages/ninegrid/ninegrid.scss +132 -0
  121. package/dist/packages/ninegrid/ninegrid.vue +144 -0
  122. package/dist/packages/noticebar/item.js +13 -0
  123. package/dist/packages/noticebar/noticebar.css +2 -2
  124. package/dist/packages/noticebar/noticebar.js +2 -2
  125. package/dist/packages/noticebar/noticebar.js.map +1 -1
  126. package/dist/packages/noticebar/noticebar.scss +41 -16
  127. package/dist/packages/noticebar/noticebar.vue +186 -24
  128. package/dist/packages/notify/notify.css +1 -1
  129. package/dist/packages/notify/notify.js +1 -1
  130. package/dist/packages/numberkeyboard/numberkeyboard.css +1 -1
  131. package/dist/packages/numberkeyboard/numberkeyboard.js +2 -2
  132. package/dist/packages/numberkeyboard/numberkeyboard.js.map +1 -1
  133. package/dist/packages/picker/picker.css +1 -1
  134. package/dist/packages/picker/picker.js +2 -2
  135. package/dist/packages/picker/picker.js.map +1 -1
  136. package/dist/packages/popup/popup.css +1 -1
  137. package/dist/packages/popup/popup.js +1 -1
  138. package/dist/packages/price/price.css +1 -1
  139. package/dist/packages/price/price.js +2 -2
  140. package/dist/packages/price/price.js.map +1 -1
  141. package/dist/packages/progress/progress.css +1 -1
  142. package/dist/packages/progress/progress.js +2 -2
  143. package/dist/packages/progress/progress.js.map +1 -1
  144. package/dist/packages/radio/radio.css +1 -1
  145. package/dist/packages/radio/radio.js +1 -1
  146. package/dist/packages/radiogroup/radiogroup.css +1 -1
  147. package/dist/packages/radiogroup/radiogroup.js +2 -2
  148. package/dist/packages/radiogroup/radiogroup.js.map +1 -1
  149. package/dist/packages/range/range.css +1 -1
  150. package/dist/packages/range/range.js +2 -2
  151. package/dist/packages/range/range.js.map +1 -1
  152. package/dist/packages/rate/rate.css +1 -1
  153. package/dist/packages/rate/rate.js +2 -2
  154. package/dist/packages/rate/rate.js.map +1 -1
  155. package/dist/packages/row/row.css +1 -1
  156. package/dist/packages/row/row.js +1 -1
  157. package/dist/packages/scroller/scroller.css +1 -1
  158. package/dist/packages/scroller/scroller.js +2 -2
  159. package/dist/packages/scroller/scroller.js.map +1 -1
  160. package/dist/packages/scroller/scroller.vue +5 -0
  161. package/dist/packages/scroller/vertical-scroll.vue +7 -2
  162. package/dist/packages/searchbar/searchbar.css +1 -1
  163. package/dist/packages/searchbar/searchbar.js +2 -2
  164. package/dist/packages/searchbar/searchbar.js.map +1 -1
  165. package/dist/packages/shortpassword/shortpassword.css +1 -1
  166. package/dist/packages/shortpassword/shortpassword.js +2 -2
  167. package/dist/packages/shortpassword/shortpassword.js.map +1 -1
  168. package/dist/packages/sidenavbar/sidenavbar.css +1 -1
  169. package/dist/packages/sidenavbar/sidenavbar.js +2 -2
  170. package/dist/packages/sidenavbar/sidenavbar.js.map +1 -1
  171. package/dist/packages/sidenavbaritem/sidenavbaritem.css +1 -1
  172. package/dist/packages/sidenavbaritem/sidenavbaritem.js +1 -1
  173. package/dist/packages/signature/signature.css +1 -1
  174. package/dist/packages/signature/signature.js +2 -2
  175. package/dist/packages/signature/signature.js.map +1 -1
  176. package/dist/packages/skeleton/skeleton.css +1 -1
  177. package/dist/packages/skeleton/skeleton.js +2 -2
  178. package/dist/packages/skeleton/skeleton.js.map +1 -1
  179. package/dist/packages/slider/slider.css +1 -1
  180. package/dist/packages/slider/slider.js +2 -2
  181. package/dist/packages/slider/slider.js.map +1 -1
  182. package/dist/packages/stepper/stepper.css +1 -1
  183. package/dist/packages/stepper/stepper.js +2 -2
  184. package/dist/packages/stepper/stepper.js.map +1 -1
  185. package/dist/packages/steps/steps.css +1 -1
  186. package/dist/packages/steps/steps.js +2 -2
  187. package/dist/packages/steps/steps.js.map +1 -1
  188. package/dist/packages/subsidenavbar/subsidenavbar.css +1 -1
  189. package/dist/packages/subsidenavbar/subsidenavbar.js +1 -1
  190. package/dist/packages/swiper/swiper.css +1 -1
  191. package/dist/packages/swiper/swiper.js +2 -2
  192. package/dist/packages/swiper/swiper.js.map +1 -1
  193. package/dist/packages/switch/switch.css +1 -1
  194. package/dist/packages/switch/switch.js +2 -2
  195. package/dist/packages/switch/switch.js.map +1 -1
  196. package/dist/packages/tab/tab.css +1 -1
  197. package/dist/packages/tab/tab.js +2 -2
  198. package/dist/packages/tab/tab.js.map +1 -1
  199. package/dist/packages/tab/tab.vue +1 -0
  200. package/dist/packages/tabbar/tabbar.css +1 -1
  201. package/dist/packages/tabbar/tabbar.js +2 -2
  202. package/dist/packages/tabbar/tabbar.js.map +1 -1
  203. package/dist/packages/tabbar/tabbar.vue +1 -1
  204. package/dist/packages/tabpanel/tabpanel.css +1 -1
  205. package/dist/packages/tabpanel/tabpanel.js +2 -2
  206. package/dist/packages/tabselect/tabselect.css +1 -1
  207. package/dist/packages/tabselect/tabselect.js +2 -2
  208. package/dist/packages/tabselect/tabselect.js.map +1 -1
  209. package/dist/packages/textbox/textbox.css +1 -1
  210. package/dist/packages/textbox/textbox.js +2 -2
  211. package/dist/packages/textbox/textbox.js.map +1 -1
  212. package/dist/packages/textinput/textinput.css +1 -1
  213. package/dist/packages/textinput/textinput.js +2 -2
  214. package/dist/packages/textinput/textinput.js.map +1 -1
  215. package/dist/packages/timeline/timeline.css +1 -1
  216. package/dist/packages/timeline/timeline.js +2 -2
  217. package/dist/packages/timeline/timeline.js.map +1 -1
  218. package/dist/packages/timelineitem/timelineitem.css +1 -1
  219. package/dist/packages/timelineitem/timelineitem.js +2 -2
  220. package/dist/packages/timelineitem/timelineitem.js.map +1 -1
  221. package/dist/packages/toast/toast.css +1 -1
  222. package/dist/packages/toast/toast.js +2 -2
  223. package/dist/packages/toast/toast.js.map +1 -1
  224. package/dist/packages/uploader/uploader.css +1 -1
  225. package/dist/packages/uploader/uploader.js +2 -2
  226. package/dist/packages/uploader/uploader.js.map +1 -1
  227. package/dist/packages/video/video.css +1 -1
  228. package/dist/packages/video/video.js +1 -1
  229. package/dist/packages/video/video.js.map +1 -1
  230. package/dist/types/nutui.d.ts +1 -0
  231. package/package.json +1 -1
  232. package/dist/assets/.DS_Store +0 -0
  233. package/dist/assets/img/.DS_Store +0 -0
  234. package/dist/packages/.DS_Store +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://[name]/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue?1b28","webpack://[name]/./src/packages/magic/Cube/index.vue?09ec","webpack://[name]/./src/packages/magic/magic.vue?efd0","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue?d719","webpack://[name]/src/packages/magic/Cube/CubeItem.vue","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue?ae6a","webpack://[name]/src/packages/magic/Cube/index.vue","webpack://[name]/./src/packages/magic/Cube/index.vue?2ba2","webpack://[name]/./src/packages/magic/magic.vue?d35f","webpack://[name]/src/packages/magic/magic.vue","webpack://[name]/./src/packages/magic/Cube/index.vue","webpack://[name]/./src/packages/magic/Cube/index.vue?5cac","webpack://[name]/./src/packages/magic/magic.vue","webpack://[name]/./src/packages/magic/index.js","webpack://[name]/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","arrayLikeToArray","minLen","toString","slice","constructor","Array","from","test","props","item","type","default","data","methods","cubeClick","$emit","_vm","_h","$createElement","_c","_self","class","on","$event","staticClass","style","backgroundImage","_v","_s","desc","_e","cubicEaseOut","b","getPropertyValue","el","attr","tr","dataMagic","String","overflow","Number","validator","autoplay","Boolean","interval","components","CubeItem","clone","computed","data_top","filter","data_bottom","watch","startPlay","clearPlayer","mounted","$nextTick","cube","transition","setTimeout","initWQVisibleEvent","document","addEventListener","e","hidden","clickEvent","bindEvent","$wrapper","touchStartHandler","touchMoveHandler","touchEndHandler","player","setInterval","clearInterval","canMove","touching","transitionDuration","startX","touches","pageX","startY","pageY","$cubes","forEach","Math","abs","moveY","moveX","cancelable","preventDefault","direction","offsetX","endX","setWrapper","setCube","cur","overX","ITEM_WIDTH","ceil","floor","length","goto","continueTransition","_wrapperTr","transform","opacity","transformOrigin","nowX","time","wait","_offset","getTransformOrigin","computeWidth","to","getBetweenRotate","getMiddleRotate","a","getOpacity","getTranslate","transitionEndHandler","event","target","webkitPerspectiveOrigin","current","duration","idx","isAutoPlay","Cube","ref","_l","attrs","clickItem","Magic","install","Vue","component","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arr","isArray","iter","iterator","TypeError","len","arr2"],"mappings":"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","file":"magic/magic.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(\"magic\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"magic\"] = factory();\n\telse\n\t\troot[\"magic\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"./\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 159);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = 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 = 'data-v-' + 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 = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\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 functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--0-0!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--0-3!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CubeItem.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--0-0!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--0-3!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data && _vm.data.length >= 8)?_c('Cube',{attrs:{\"dataMagic\":_vm.data,\"type\":_vm.type,\"autoplay\":_vm.autoplay},on:{\"clickItem\":_vm.clickItem}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CubeItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CubeItem.vue?vue&type=script&lang=js&\"","<template>\n <div :class=\"`cube-item cube-item--${item.type}`\" @click=\"cubeClick(item)\">\n <div class=\"cube-item-box\">\n <div class=\"sub-image\" :style=\"{ backgroundImage: `url(${item.pictureUrl})` }\"></div>\n </div>\n <div class=\"sub-desc\" v-if=\"item.desc\">\n <span>{{ item.desc }}</span>\n </div>\n <div class=\"sub-name\" v-if=\"item.name\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'CubeItem',\n props: {\n item: {\n type: Object,\n default: null\n }\n },\n data() {\n return {};\n },\n methods: {\n cubeClick(item) {\n this.$emit('clickEvent', item);\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n$module_name: '.cube-item';\n#{$module_name} {\n height: 90px;\n width: 88px;\n // margin-left: auto;\n // margin-right: 10px;\n border-radius: 26px;\n overflow: hidden;\n position: relative;\n transform: translateZ(0);\n &::before {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 60px;\n border-radius: 0 0 26px 26px;\n }\n &-box {\n height: 63px;\n width: 100%;\n text-align: center;\n position: absolute;\n background: #fff;\n border-radius: 26px 26px 11px 11px;\n transform: translateZ(0);\n background-size: cover;\n background-repeat: no-repeat;\n overflow: hidden;\n }\n\n .sub-name {\n width: 100%;\n position: absolute;\n top: 63px;\n padding: 0 10px;\n box-sizing: border-box;\n color: #fff;\n font-size: 14px;\n text-align: center;\n line-height: 27px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n transform: translateZ(0);\n }\n\n .sub-image {\n display: block;\n width: 60px;\n height: 60px;\n margin: 0 auto;\n background-color: #fff;\n background-position: center;\n background-size: 100%;\n transform: translateY(6px);\n }\n .sub-desc {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 77px;\n box-sizing: border-box;\n height: 15px;\n color: #fff;\n border-radius: 6px;\n font-size: 12px;\n text-align: center;\n position: absolute;\n bottom: 29px;\n left: 50%;\n transform-origin: 0 center;\n transform: translate3d(-50%, 0, 1px);\n span {\n width: 100%;\n display: block;\n line-height: normal;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n }\n // 图片\n &--pic {\n &::before {\n background: url('https://img12.360buyimg.com/imagetools/jfs/t1/184083/34/6101/38841/60b065caEaaf7c5d0/eec4cd260f46d9f0.png') no-repeat\n center/100%;\n height: 100%;\n }\n .cube-item-box {\n display: none;\n }\n .sub-desc {\n display: none;\n }\n .sub-name {\n display: none;\n }\n }\n // 活动\n &--act {\n &::before {\n background: url('https://img11.360buyimg.com/imagetools/jfs/t1/195605/17/5252/39357/60b065caEe0aa4c7e/04a341f4e51c6a9b.png') no-repeat\n center/100%;\n }\n .sub-desc {\n background: #ff5c17;\n }\n }\n // 榜单\n &--rank {\n &::before {\n background: url('https://img14.360buyimg.com/imagetools/jfs/t1/183388/37/6207/39741/60b065caEea1440a1/8860c63660fc9ac4.png') no-repeat\n center/100%;\n }\n .sub-desc {\n background: #1f95fb;\n }\n }\n // shop\n &--shop {\n &::before {\n background: url('https://img12.360buyimg.com/imagetools/jfs/t1/184083/34/6101/38841/60b065caEaaf7c5d0/eec4cd260f46d9f0.png') no-repeat\n center/100%;\n }\n .sub-desc {\n background: #ffd01f;\n span {\n color: #000;\n }\n }\n }\n // lbs\n &--lbs {\n &::before {\n background: url('https://img10.360buyimg.com/imagetools/jfs/t1/129094/23/18726/38672/60b065caEb849e8cb/da761e3ebae5bc84.png') no-repeat\n center/100%;\n }\n .sub-desc {\n background: #ffd01f;\n span {\n color: #000;\n }\n }\n }\n // 未读\n &--unread {\n box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);\n animation: show 2s infinite;\n }\n &--special {\n background-size: cover;\n background-repeat: no-repeat;\n &:before {\n display: none;\n }\n .cube-item-box {\n display: none;\n }\n .sub-desc {\n display: none;\n }\n }\n @keyframes show {\n 0% {\n box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);\n }\n 50% {\n box-shadow: 0 0 20px rgba(255, 255, 255, 0.5);\n }\n 100% {\n box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);\n }\n }\n @at-root .cube-wrapper--inited {\n .cube-col {\n .cube-item {\n .sub-image {\n animation: cube-image 0.2s cubic-bezier(0.33, 0, 0.67, 1) 1s forwards;\n }\n }\n }\n }\n\n @keyframes cube-image {\n 0% {\n transform: translateY(13px);\n }\n 66% {\n transform: translateY(-5px);\n }\n 100% {\n transform: translateY(0);\n }\n }\n}\n</style>\n","import { render, staticRenderFns } from \"./CubeItem.vue?vue&type=template&id=e74836b2&\"\nimport script from \"./CubeItem.vue?vue&type=script&lang=js&\"\nexport * from \"./CubeItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CubeItem.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:(\"cube-item cube-item--\" + (_vm.item.type)),on:{\"click\":function($event){return _vm.cubeClick(_vm.item)}}},[_c('div',{staticClass:\"cube-item-box\"},[_c('div',{staticClass:\"sub-image\",style:({ backgroundImage: (\"url(\" + (_vm.item.pictureUrl) + \")\") })})]),_vm._v(\" \"),(_vm.item.desc)?_c('div',{staticClass:\"sub-desc\"},[_c('span',[_vm._v(_vm._s(_vm.item.desc))])]):_vm._e(),_vm._v(\" \"),(_vm.item.name)?_c('div',{staticClass:\"sub-name\"},[_c('span',[_vm._v(_vm._s(_vm.item.name))])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"cube\">\n <div class=\"adjust-position cube-container\" ref=\"container\">\n <div class=\"cube-wrapper\" ref=\"wrapper\" @transitionend=\"transitionEndHandler\">\n <div class=\"cube-col\" v-for=\"i in clone\" :key=\"'clone-prev-' + i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i + data_bottom.length - clone - 1]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i + data_bottom.length - clone - 1]\" />\n </div>\n <div class=\"cube-col cube-col--anime\" v-for=\"(item, i) in data_bottom\" :key=\"i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i]\" />\n </div>\n <div class=\"cube-col\" v-for=\"(item, i) in data_bottom.slice(0, clone)\" :key=\"'clone-next-' + i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i]\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport CubeItem from './CubeItem';\n// 贝赛尔缓冲曲线计算公式\nfunction sineEaseOut(t, b, c, d) {\n return c * Math.sin((t / d) * (Math.PI / 2)) + b;\n}\nfunction cubicEaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n}\n// 获取计算属性\nfunction getPropertyValue(el, attr) {\n const st = window.getComputedStyle(el, null);\n const tr =\n st.getPropertyValue('-webkit-' + attr) ||\n st.getPropertyValue('-moz-' + attr) ||\n st.getPropertyValue('-ms-' + attr) ||\n st.getPropertyValue('-o-' + attr) ||\n st.getPropertyValue(attr);\n if (tr && tr != 'none') {\n return tr;\n }\n return null;\n}\nexport default {\n props: {\n dataMagic: {\n type: [Object, Array],\n default: null\n },\n type: {\n type: String,\n default: 'rank'\n },\n // 溢出可滑动的倍数\n overflow: {\n type: [String, Number],\n default: 1.4,\n validator: value => {\n return value >= 1 && value < 1.5;\n }\n },\n autoplay: {\n type: Boolean,\n default: false\n },\n interval: {\n type: [String, Number],\n default: 3000\n }\n },\n components: {\n CubeItem\n },\n data() {\n return {\n // 克隆数目\n clone: 4\n };\n },\n computed: {\n data_top() {\n return this.dataMagic.filter((item, i) => i % 2 == 0);\n },\n data_bottom() {\n return this.dataMagic.filter((item, i) => i % 2 == 1);\n }\n },\n watch: {\n autoplay(value) {\n value ? this.startPlay() : this.clearPlayer();\n }\n },\n // computed: {\n // ...mapGetters([\n // 'xHeight'\n // ]),\n // styleTop() {\n // let top = (this.xHeight * 0.244) + 12\n // return {\n // marginTop: `${this.xHeight}px`,\n // }\n // }\n // },\n mounted() {\n this.$nextTick(() => {\n this.canMove = true;\n this.$wrapper = this.$refs.wrapper;\n this.$cubes = [...this.$wrapper.children];\n // 单元大小\n this.ITEM_WIDTH = this.$wrapper.clientWidth / 4;\n this.computeWidth = {\n '-2': -this.ITEM_WIDTH * 2,\n '-1': -this.ITEM_WIDTH,\n '0': 0,\n '1': this.ITEM_WIDTH,\n '2': this.ITEM_WIDTH * 2,\n '3': this.ITEM_WIDTH * 3,\n '4': this.ITEM_WIDTH * 4,\n '5': this.ITEM_WIDTH * 5\n };\n // 起始索引\n this.current = this.clone;\n // 起始位置\n this.endX = -this.ITEM_WIDTH * this.current;\n this.offsetX = this.endX;\n // 设置魔方样式\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.setWrapper(this.endX);\n this.setCube(this.endX);\n this.$wrapper.style.webkitPerspectiveOrigin = `${this.current * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n // 自动播放\n setTimeout(() => {\n this.startPlay();\n this.$wrapper.classList.add('cube-wrapper--inited');\n }, 1000);\n this.bindEvent();\n });\n\n this.initWQVisibleEvent();\n // 防止关闭屏幕/跳出时仍在执行动画\n document.addEventListener('visibilitychange', e => {\n e.hidden ? this.clearPlayer() : this.startPlay();\n });\n },\n methods: {\n clickEvent(item) {\n this.$emit('clickItem', item);\n },\n bindEvent() {\n this.$wrapper.addEventListener('touchstart', this.touchStartHandler);\n this.$wrapper.addEventListener('touchmove', this.touchMoveHandler);\n this.$wrapper.addEventListener('touchend', this.touchEndHandler);\n },\n // 初始化微信手q的展示隐藏事件\n initWQVisibleEvent() {\n document.addEventListener(\n 'qbrowserVisibilityChange',\n function(e) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('visibilitychange', false, false);\n evt.hidden = e.hidden;\n document.dispatchEvent(evt);\n },\n true\n );\n document.addEventListener(\n 'visibilitychange',\n function(e) {\n e.hidden = e.hidden === undefined ? document.hidden : e.hidden;\n },\n true\n );\n },\n // 播放\n startPlay() {\n if (!this.autoplay) return;\n this.clearPlayer();\n this.player = setInterval(() => {\n // 防止关闭屏幕/跳出时仍在执行\n this.canMove = true;\n this.goto(this.current + 1, 600, true);\n }, this.interval);\n },\n clearPlayer() {\n clearInterval(this.player);\n this.player = null;\n },\n touchStartHandler(e) {\n if (!this.canMove) return;\n this.clearPlayer();\n this.touching = true;\n\n // 追随到当前过渡位置\n if (this.$wrapper.style.transitionDuration) {\n // 正在过渡\n // this.continueTransition()\n }\n\n // 记录起始坐标\n this.startX = e.touches[0].pageX;\n this.startY = e.touches[0].pageY;\n\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n },\n touchMoveHandler(e) {\n if (!this.canMove || !this.touching) return;\n\n let moveX = e.touches[0].pageX - this.startX;\n let moveY = e.touches[0].pageY - this.startY;\n // 防止上下滑动对影响魔方水平滚动的影响\n if (!(Math.abs(moveY) > Math.abs(moveX) * 1.5)) {\n e.cancelable && e.preventDefault();\n }\n // sineEaseOut曲线: 当前x、 起始x、目标y、目标x\n moveX = moveX / 3;\n if (moveX > 0) {\n // moveX = sineEaseOut(moveX, 0, this.ITEM_WIDTH * this.overflow , this.ITEM_WIDTH * 6)\n this.direction = -1;\n } else if (moveX < 0) {\n // moveX = -sineEaseOut(-moveX, 0, this.ITEM_WIDTH * this.overflow , this.ITEM_WIDTH * 6)\n this.direction = 1;\n } else {\n return;\n }\n // 滑动偏移量\n this.offsetX = moveX + this.endX;\n // 设置魔方样式\n\n let rotate = this.getMiddleRotate(moveX);\n this.setWrapper(this.offsetX);\n this.setCube(this.offsetX, this.offsetX > 0 ? moveX : -moveX);\n },\n touchEndHandler(e) {\n if (!this.canMove || !this.touching) return;\n let cur;\n let overX = (this.offsetX % this.ITEM_WIDTH) * this.direction;\n // 计算目标索引\n if (overX == 0) {\n cur = this.offsetX / this.ITEM_WIDTH;\n } else if ((overX > 0 && overX < this.ITEM_WIDTH * (3 / 4)) || (overX < 0 && overX >= -this.ITEM_WIDTH * (1 / 4))) {\n cur = Math.ceil(this.offsetX / this.ITEM_WIDTH);\n } else {\n cur = Math.floor(this.offsetX / this.ITEM_WIDTH);\n }\n cur = -cur;\n // 达到循环边界了,需要禁止滑动,等切换结束才允许继续滑\n if (cur >= this.data_bottom.length + this.clone || cur <= this.clone - 1) {\n this.canMove = false;\n }\n\n // 调整到边界目标距离\n this.goto(cur, 400);\n // this.goto(cur, Math.abs(cur * this.ITEM_WIDTH - Math.abs(this.offsetX)) / this.ITEM_WIDTH * 400)\n\n // 继续自动播放\n this.startPlay();\n this.touching = false;\n },\n /**\n * 中断过渡\n */\n continueTransition() {\n let _wrapperTr = getPropertyValue(this.$wrapper, 'transform');\n let _wrapperPo = getPropertyValue(this.$wrapper, 'perspective-origin');\n if (_wrapperTr && this.$wrapper.style.transitionDuration) {\n (this.$wrapper.style.transform = _wrapperTr), (this.$wrapper.style.perspectiveOrigin = _wrapperPo);\n this.$cubes.forEach(cube => {\n cube.style.transform = getPropertyValue(cube, 'transform');\n cube.style.opacity = +getPropertyValue(cube, 'opacity');\n cube.style.transformOrigin = getPropertyValue(cube, 'transform-origin');\n });\n // 记录当前位置\n this.endX = 0;\n }\n },\n /**\n * 设置容器滚动\n * nowX: 目标位置\n * time: 过渡时长\n * wait: 运动是否需要滞后\n */\n setWrapper(nowX, time, wait) {\n this.offsetX = nowX;\n if (time > 0) {\n this.$wrapper.style.transitionDuration = `${time}ms`;\n }\n if (wait) {\n setTimeout(() => {\n this.$wrapper.style.transform = `translate3d(${nowX}px, 0, 0)`;\n }, 0);\n } else {\n this.$wrapper.style.transform = `translate3d(${nowX}px, 0, 0)`;\n }\n },\n /**\n * 设置魔方样式\n * nowX: 目标位置\n * rotate: 角度正负\n */\n setCube(nowX, rotate = 0) {\n // 关闭所有过渡\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n let _offset = idx * this.ITEM_WIDTH + nowX;\n if (_offset > this.computeWidth[-1] && _offset < this.computeWidth[0]) {\n // 左边元素\n let bezier_offset = cubicEaseOut(_offset % this.ITEM_WIDTH, 0, -this.ITEM_WIDTH, -this.ITEM_WIDTH);\n cube.style.transform = `rotateY(${this.getBetweenRotate(_offset)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = this.getOpacity(bezier_offset);\n } else if (_offset > this.computeWidth[3] && _offset < this.computeWidth[4]) {\n // 右边元素\n let bezier_offset = cubicEaseOut(_offset % this.ITEM_WIDTH, 0, this.ITEM_WIDTH, this.ITEM_WIDTH);\n cube.style.transform = `rotateY(${this.getBetweenRotate(_offset)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = this.getOpacity(bezier_offset);\n } else if (_offset >= this.computeWidth[4] && _offset < this.computeWidth[5]) {\n // 最右边元素(自动播放时的预备状态)\n cube.style.transform = `rotateY(60deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 0;\n } else if (_offset > this.computeWidth[-2] && _offset <= this.computeWidth[-1]) {\n // 最左边元素(自动播放时的预备状态)\n cube.style.transform = `rotateY(-60deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 0;\n } else if (_offset >= this.computeWidth[0] && _offset <= this.computeWidth[3]) {\n // 中间元素\n cube.style.transform = `rotateY(${this.getMiddleRotate(rotate)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 1;\n }\n cube.style.transformOrigin = this.getTransformOrigin(_offset);\n });\n },\n // 设置魔方的变化基准点\n getTransformOrigin(d, overflow) {\n if (d >= this.computeWidth[-1] && d <= this.computeWidth[4]) {\n let to = this.ITEM_WIDTH - d / 3;\n if (to < this.computeWidth[0]) {\n to = this.computeWidth[0];\n } else if (to > this.computeWidth[1]) {\n to = this.computeWidth[1];\n }\n return `${to}px center`;\n }\n },\n // 设置两侧魔方的旋转\n getBetweenRotate(d) {\n return ((d % this.ITEM_WIDTH) * (360 / this.$wrapper.clientWidth) * 70) / 90;\n },\n // 设置中间魔方的旋转, 假设临界值交点为5 * 魔方宽度,减缓数率a为0.4\n getMiddleRotate(d) {\n let mid = 5;\n let a = 0.35;\n // 下降曲线:y2 = bx + k 得出 b = -7/3、k = 7/3 所以:y2 = -7/3x + 7/3w\n if (d > (this.ITEM_WIDTH * mid) / 10) {\n return ((a * mid) / (10 - mid)) * (this.ITEM_WIDTH - d);\n } else if (d < (-this.ITEM_WIDTH * mid) / 10) {\n return ((-a * mid) / (10 - mid)) * (this.ITEM_WIDTH + d);\n } else {\n // 上升曲线:y1 = ax 设 a = 0.2\n return a * d;\n }\n },\n // 设置透明度\n getOpacity(d) {\n return 1 - ((Math.abs(d) / this.ITEM_WIDTH) % 1);\n },\n // 设置偏移量\n getTranslate(d) {\n const slow = 7; // 减缓倍率\n if (d > this.computeWidth[2]) {\n if (d > this.computeWidth[3]) {\n return (this.computeWidth[3] - d) / 5;\n }\n return (this.computeWidth[3] - d) / slow;\n } else if (d < this.computeWidth[1]) {\n if (d < 0) {\n return d / 5;\n }\n return d / slow;\n } else {\n return this.ITEM_WIDTH / slow;\n }\n },\n // 检测无限循环\n transitionEndHandler(event) {\n if (event.target === this.$wrapper) {\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.$wrapper.style.webkitPerspectiveOrigin = `${this.current * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n if (this.current >= this.data_bottom.length + this.clone) {\n this.goto(this.current % this.data_bottom.length, 0);\n setTimeout(() => {\n this.canMove = true;\n }, 0);\n } else if (this.current <= this.clone - 1) {\n this.goto(this.data_bottom.length + this.current, 0);\n setTimeout(() => {\n this.canMove = true;\n }, 0);\n }\n }\n },\n /**\n * 跳转到某个索引的位置\n * cur: 目标魔方索引\n * duration: 过渡时长\n */\n goto(cur, duration = 400, isAutoPlay) {\n let nextCur = isAutoPlay ? cur - 0.5 : cur;\n this.$wrapper.style.webkitPerspectiveOrigin = `${nextCur * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n\n this.current = cur;\n this.endX = -cur * this.ITEM_WIDTH;\n if (!duration) {\n this.$wrapper.style.transitionDuration = null;\n\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.setCube(this.endX, 0);\n this.setWrapper(this.endX, 0, true);\n } else {\n // 执行过渡\n this.setWrapper(this.endX, duration);\n this.$cubes.forEach((cube, idx) => {\n let _offset = idx * this.ITEM_WIDTH + this.endX;\n cube.style.transformOrigin = this.getTransformOrigin(_offset);\n if (cur - 1 == idx) {\n // 左边过渡\n cube.style.transition = `all ${duration}ms cubic-bezier(0.215, 0.610, 0.355, 1.000)`;\n cube.style.transform = `rotateY(-60deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 0;\n } else if (cur + 4 == idx) {\n // 右边过渡\n cube.style.transition = `all ${duration}ms cubic-bezier(0.215, 0.610, 0.355, 1.000)`;\n cube.style.transform = `rotateY(60deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 0;\n } else if (idx > cur - 1 && idx < cur + 4) {\n // 中间过渡\n if (isAutoPlay) {\n cube.style.transition = `transform ${duration}ms cubic-bezier(0.22, 0.01, 0.68, 1.00), opacity ${duration *\n 0.9}ms cubic-bezier(0.62, 0.02, 0.68, 1.00)`;\n } else {\n cube.style.transition = `all ${duration}ms cubic-bezier(0.390, 0.575, 0.565, 1.000)`;\n }\n cube.style.transform = `rotateY(0.1deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 1;\n } else {\n cube.style.transition = null;\n cube.style.transform = null;\n cube.style.opacity = null;\n cube.style.transformOrigin = null;\n }\n });\n }\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.adjust-position {\n margin-top: -20px;\n margin-bottom: -20px;\n}\n.header-wrap {\n position: relative;\n height: 710px;\n .img-header {\n position: absolute;\n bottom: 0;\n width: 100%;\n }\n}\n$module_name: '.cube';\n\n#{$module_name} {\n width: 100%;\n // position: absolute;\n z-index: 10;\n\n &-container {\n width: 100%;\n padding: 15px 0;\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n }\n &-wrapper {\n width: 100%;\n white-space: nowrap;\n perspective: 500px;\n animation-play-state: paused;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);\n }\n &-col {\n display: inline-block;\n width: 25%;\n box-sizing: border-box;\n // padding: 0 4px;\n transition: inherit;\n\n &--anime:nth-child(5) {\n #{$module_name}-item-wrap {\n animation: cube5 560ms cubic-bezier(0.33, 0, 0.67, 1) 1s both;\n }\n }\n @keyframes cube5 {\n 0% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1);\n transform: translate3d(733px, 0, 0);\n }\n 57% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1);\n transform: translate3d(-30px, 0, 0);\n }\n 58% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(-30px, 0, 0);\n }\n 100% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(0, 0, 0);\n }\n }\n\n &--anime:nth-child(6) {\n #{$module_name}-item-wrap {\n animation: cube6 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.08s both;\n }\n }\n @keyframes cube6 {\n 0% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(554px, 0, 0);\n }\n 57% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 58% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 100% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(0, 0, 0);\n }\n }\n\n &--anime:nth-child(7) {\n #{$module_name}-item-wrap {\n animation: cube7 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.16s both;\n }\n }\n @keyframes cube7 {\n 0% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(378px, 0, 0);\n }\n 57% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 58% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 100% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(0, 0, 0);\n }\n }\n &--anime:nth-child(8) {\n #{$module_name}-item-wrap {\n animation: cube8 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.28s both;\n }\n }\n @keyframes cube8 {\n 0% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(205px, 0, 0);\n }\n 57% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 58% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(-20px, 0, 0);\n }\n 100% {\n animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);\n transform: translate3d(0, 0, 0);\n }\n }\n }\n &-item-wrap {\n margin-bottom: 16px;\n }\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./magic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./magic.vue?vue&type=script&lang=js&\"","<template>\n <Cube :dataMagic=\"data\" :type=\"type\" :autoplay=\"autoplay\" v-if=\"data && data.length >= 8\" @clickItem=\"clickItem\" />\n</template>\n\n<script>\nimport Cube from './Cube';\n\nexport default {\n name: 'nut-magic',\n components: {\n Cube\n },\n props: {\n data: {\n type: [Object, Array],\n default: () => {\n return [];\n }\n },\n // dataSpecial: {\n // type: [Object, Array],\n // default: null\n // },\n type: {\n type: String,\n default: 'rank'\n },\n autoplay: {\n default: true\n }\n },\n computed: {},\n data() {\n return {};\n },\n watch: {\n data(newV, old) {\n // this.init();\n }\n },\n methods: {\n clickItem(item) {\n this.$emit('click', item);\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=0a2e0e67&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cube\"},[_c('div',{ref:\"container\",staticClass:\"adjust-position cube-container\"},[_c('div',{ref:\"wrapper\",staticClass:\"cube-wrapper\",on:{\"transitionend\":_vm.transitionEndHandler}},[_vm._l((_vm.clone),function(i){return _c('div',{key:'clone-prev-' + i,staticClass:\"cube-col\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i + _vm.data_bottom.length - _vm.clone - 1]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i + _vm.data_bottom.length - _vm.clone - 1]},on:{\"clickEvent\":_vm.clickEvent}})],1)}),_vm._v(\" \"),_vm._l((_vm.data_bottom),function(item,i){return _c('div',{key:i,staticClass:\"cube-col cube-col--anime\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i]},on:{\"clickEvent\":_vm.clickEvent}})],1)}),_vm._v(\" \"),_vm._l((_vm.data_bottom.slice(0, _vm.clone)),function(item,i){return _c('div',{key:'clone-next-' + i,staticClass:\"cube-col\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i]},on:{\"clickEvent\":_vm.clickEvent}})],1)})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./magic.vue?vue&type=template&id=601c4726&scoped=true&\"\nimport script from \"./magic.vue?vue&type=script&lang=js&\"\nexport * from \"./magic.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"601c4726\",\n null\n \n)\n\nexport default component.exports","import Magic from './magic.vue';\nimport './magic.scss';\n\nMagic.install = function(Vue) {\n Vue.component(Magic.name, Magic);\n};\n\nexport default Magic;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://[name]/webpack/universalModuleDefinition","webpack://[name]/webpack/bootstrap","webpack://[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://[name]/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://[name]/./src/packages/magic/magic.vue?efd0","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue?d719","webpack://[name]/src/packages/magic/Cube/CubeItem.vue","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue","webpack://[name]/./src/packages/magic/Cube/CubeItem.vue?ff72","webpack://[name]/src/packages/magic/Cube/index.vue","webpack://[name]/./src/packages/magic/Cube/index.vue?2ba2","webpack://[name]/./src/packages/magic/Cube/index.vue","webpack://[name]/./src/packages/magic/Cube/index.vue?fb79","webpack://[name]/./src/packages/magic/magic.vue?d35f","webpack://[name]/src/packages/magic/magic.vue","webpack://[name]/./src/packages/magic/magic.vue","webpack://[name]/./src/packages/magic/index.js","webpack://[name]/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://[name]/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://[name]/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://[name]/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","arrayLikeToArray","minLen","toString","slice","constructor","Array","from","test","props","item","type","default","data","methods","cubeClick","$emit","_vm","_h","$createElement","_c","_self","class","on","$event","staticClass","style","backgroundImage","_v","_s","desc","_e","cubicEaseOut","b","getPropertyValue","el","attr","tr","dataMagic","String","overflow","Number","validator","autoplay","Boolean","interval","components","CubeItem","clone","computed","data_top","filter","data_bottom","watch","startPlay","clearPlayer","mounted","$nextTick","cube","transition","setTimeout","initWQVisibleEvent","document","addEventListener","e","hidden","clickEvent","bindEvent","$wrapper","touchStartHandler","touchMoveHandler","touchEndHandler","player","setInterval","clearInterval","canMove","touching","transitionDuration","startX","touches","pageX","startY","pageY","$cubes","forEach","Math","abs","moveY","moveX","cancelable","preventDefault","direction","offsetX","endX","setWrapper","setCube","cur","overX","ITEM_WIDTH","ceil","floor","length","goto","continueTransition","_wrapperTr","transform","opacity","transformOrigin","nowX","time","wait","_offset","getTransformOrigin","computeWidth","to","getBetweenRotate","getMiddleRotate","a","getOpacity","getTranslate","transitionEndHandler","event","target","webkitPerspectiveOrigin","current","duration","idx","isAutoPlay","ref","_l","attrs","Cube","clickItem","Magic","install","Vue","component","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arr","isArray","iter","iterator","TypeError","len","arr2"],"mappings":"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","file":"magic/magic.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(\"magic\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"magic\"] = factory();\n\telse\n\t\troot[\"magic\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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 = \"./\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 158);\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = 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 = 'data-v-' + 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 = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\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 functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data && _vm.data.length >= 8)?_c('Cube',{attrs:{\"dataMagic\":_vm.data,\"type\":_vm.type,\"autoplay\":_vm.autoplay},on:{\"clickItem\":_vm.clickItem}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CubeItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CubeItem.vue?vue&type=script&lang=js&\"","<template>\n <div :class=\"`cube-item cube-item--${item.type}`\" @click=\"cubeClick(item)\">\n <div class=\"cube-item-box\">\n <div class=\"sub-image\" :style=\"{ backgroundImage: `url(${item.pictureUrl})` }\"></div>\n </div>\n <div class=\"sub-desc\" v-if=\"item.desc\">\n <span>{{ item.desc }}</span>\n </div>\n <div class=\"sub-name\" v-if=\"item.name\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'CubeItem',\n props: {\n item: {\n type: Object,\n default: null\n }\n },\n data() {\n return {};\n },\n methods: {\n cubeClick(item) {\n this.$emit('clickEvent', item);\n }\n }\n};\n</script>\n\n<style lang=\"scss\"></style>\n","import { render, staticRenderFns } from \"./CubeItem.vue?vue&type=template&id=12be9f58&\"\nimport script from \"./CubeItem.vue?vue&type=script&lang=js&\"\nexport * from \"./CubeItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:(\"cube-item cube-item--\" + (_vm.item.type)),on:{\"click\":function($event){return _vm.cubeClick(_vm.item)}}},[_c('div',{staticClass:\"cube-item-box\"},[_c('div',{staticClass:\"sub-image\",style:({ backgroundImage: (\"url(\" + (_vm.item.pictureUrl) + \")\") })})]),_vm._v(\" \"),(_vm.item.desc)?_c('div',{staticClass:\"sub-desc\"},[_c('span',[_vm._v(_vm._s(_vm.item.desc))])]):_vm._e(),_vm._v(\" \"),(_vm.item.name)?_c('div',{staticClass:\"sub-name\"},[_c('span',[_vm._v(_vm._s(_vm.item.name))])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"cube\">\n <div class=\"adjust-position cube-container\" ref=\"container\">\n <div class=\"cube-wrapper\" ref=\"wrapper\" @transitionend=\"transitionEndHandler\">\n <div class=\"cube-col\" v-for=\"i in clone\" :key=\"'clone-prev-' + i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i + data_bottom.length - clone - 1]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i + data_bottom.length - clone - 1]\" />\n </div>\n <div class=\"cube-col cube-col--anime\" v-for=\"(item, i) in data_bottom\" :key=\"i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i]\" />\n </div>\n <div class=\"cube-col\" v-for=\"(item, i) in data_bottom.slice(0, clone)\" :key=\"'clone-next-' + i\">\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_top[i]\" />\n <CubeItem @clickEvent=\"clickEvent\" class=\"cube-item-wrap\" :item=\"data_bottom[i]\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport CubeItem from './CubeItem';\n// 贝赛尔缓冲曲线计算公式\nfunction sineEaseOut(t, b, c, d) {\n return c * Math.sin((t / d) * (Math.PI / 2)) + b;\n}\nfunction cubicEaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n}\n// 获取计算属性\nfunction getPropertyValue(el, attr) {\n const st = window.getComputedStyle(el, null);\n const tr =\n st.getPropertyValue('-webkit-' + attr) ||\n st.getPropertyValue('-moz-' + attr) ||\n st.getPropertyValue('-ms-' + attr) ||\n st.getPropertyValue('-o-' + attr) ||\n st.getPropertyValue(attr);\n if (tr && tr != 'none') {\n return tr;\n }\n return null;\n}\nexport default {\n props: {\n dataMagic: {\n type: [Object, Array],\n default: null\n },\n type: {\n type: String,\n default: 'rank'\n },\n // 溢出可滑动的倍数\n overflow: {\n type: [String, Number],\n default: 1.4,\n validator: value => {\n return value >= 1 && value < 1.5;\n }\n },\n autoplay: {\n type: Boolean,\n default: false\n },\n interval: {\n type: [String, Number],\n default: 3000\n }\n },\n components: {\n CubeItem\n },\n data() {\n return {\n // 克隆数目\n clone: 4\n };\n },\n computed: {\n data_top() {\n return this.dataMagic.filter((item, i) => i % 2 == 0);\n },\n data_bottom() {\n return this.dataMagic.filter((item, i) => i % 2 == 1);\n }\n },\n watch: {\n autoplay(value) {\n value ? this.startPlay() : this.clearPlayer();\n }\n },\n // computed: {\n // ...mapGetters([\n // 'xHeight'\n // ]),\n // styleTop() {\n // let top = (this.xHeight * 0.244) + 12\n // return {\n // marginTop: `${this.xHeight}px`,\n // }\n // }\n // },\n mounted() {\n this.$nextTick(() => {\n this.canMove = true;\n this.$wrapper = this.$refs.wrapper;\n this.$cubes = [...this.$wrapper.children];\n // 单元大小\n this.ITEM_WIDTH = this.$wrapper.clientWidth / 4;\n this.computeWidth = {\n '-2': -this.ITEM_WIDTH * 2,\n '-1': -this.ITEM_WIDTH,\n '0': 0,\n '1': this.ITEM_WIDTH,\n '2': this.ITEM_WIDTH * 2,\n '3': this.ITEM_WIDTH * 3,\n '4': this.ITEM_WIDTH * 4,\n '5': this.ITEM_WIDTH * 5\n };\n // 起始索引\n this.current = this.clone;\n // 起始位置\n this.endX = -this.ITEM_WIDTH * this.current;\n this.offsetX = this.endX;\n // 设置魔方样式\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.setWrapper(this.endX);\n this.setCube(this.endX);\n this.$wrapper.style.webkitPerspectiveOrigin = `${this.current * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n // 自动播放\n setTimeout(() => {\n this.startPlay();\n this.$wrapper.classList.add('cube-wrapper--inited');\n }, 1000);\n this.bindEvent();\n });\n\n this.initWQVisibleEvent();\n // 防止关闭屏幕/跳出时仍在执行动画\n document.addEventListener('visibilitychange', e => {\n e.hidden ? this.clearPlayer() : this.startPlay();\n });\n },\n methods: {\n clickEvent(item) {\n this.$emit('clickItem', item);\n },\n bindEvent() {\n this.$wrapper.addEventListener('touchstart', this.touchStartHandler);\n this.$wrapper.addEventListener('touchmove', this.touchMoveHandler);\n this.$wrapper.addEventListener('touchend', this.touchEndHandler);\n },\n // 初始化微信手q的展示隐藏事件\n initWQVisibleEvent() {\n document.addEventListener(\n 'qbrowserVisibilityChange',\n function(e) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('visibilitychange', false, false);\n evt.hidden = e.hidden;\n document.dispatchEvent(evt);\n },\n true\n );\n document.addEventListener(\n 'visibilitychange',\n function(e) {\n e.hidden = e.hidden === undefined ? document.hidden : e.hidden;\n },\n true\n );\n },\n // 播放\n startPlay() {\n if (!this.autoplay) return;\n this.clearPlayer();\n this.player = setInterval(() => {\n // 防止关闭屏幕/跳出时仍在执行\n this.canMove = true;\n this.goto(this.current + 1, 600, true);\n }, this.interval);\n },\n clearPlayer() {\n clearInterval(this.player);\n this.player = null;\n },\n touchStartHandler(e) {\n if (!this.canMove) return;\n this.clearPlayer();\n this.touching = true;\n\n // 追随到当前过渡位置\n if (this.$wrapper.style.transitionDuration) {\n // 正在过渡\n // this.continueTransition()\n }\n\n // 记录起始坐标\n this.startX = e.touches[0].pageX;\n this.startY = e.touches[0].pageY;\n\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n },\n touchMoveHandler(e) {\n if (!this.canMove || !this.touching) return;\n\n let moveX = e.touches[0].pageX - this.startX;\n let moveY = e.touches[0].pageY - this.startY;\n // 防止上下滑动对影响魔方水平滚动的影响\n if (!(Math.abs(moveY) > Math.abs(moveX) * 1.5)) {\n e.cancelable && e.preventDefault();\n }\n // sineEaseOut曲线: 当前x、 起始x、目标y、目标x\n moveX = moveX / 3;\n if (moveX > 0) {\n // moveX = sineEaseOut(moveX, 0, this.ITEM_WIDTH * this.overflow , this.ITEM_WIDTH * 6)\n this.direction = -1;\n } else if (moveX < 0) {\n // moveX = -sineEaseOut(-moveX, 0, this.ITEM_WIDTH * this.overflow , this.ITEM_WIDTH * 6)\n this.direction = 1;\n } else {\n return;\n }\n // 滑动偏移量\n this.offsetX = moveX + this.endX;\n // 设置魔方样式\n\n let rotate = this.getMiddleRotate(moveX);\n this.setWrapper(this.offsetX);\n this.setCube(this.offsetX, this.offsetX > 0 ? moveX : -moveX);\n },\n touchEndHandler(e) {\n if (!this.canMove || !this.touching) return;\n let cur;\n let overX = (this.offsetX % this.ITEM_WIDTH) * this.direction;\n // 计算目标索引\n if (overX == 0) {\n cur = this.offsetX / this.ITEM_WIDTH;\n } else if ((overX > 0 && overX < this.ITEM_WIDTH * (3 / 4)) || (overX < 0 && overX >= -this.ITEM_WIDTH * (1 / 4))) {\n cur = Math.ceil(this.offsetX / this.ITEM_WIDTH);\n } else {\n cur = Math.floor(this.offsetX / this.ITEM_WIDTH);\n }\n cur = -cur;\n // 达到循环边界了,需要禁止滑动,等切换结束才允许继续滑\n if (cur >= this.data_bottom.length + this.clone || cur <= this.clone - 1) {\n this.canMove = false;\n }\n\n // 调整到边界目标距离\n this.goto(cur, 400);\n // this.goto(cur, Math.abs(cur * this.ITEM_WIDTH - Math.abs(this.offsetX)) / this.ITEM_WIDTH * 400)\n\n // 继续自动播放\n this.startPlay();\n this.touching = false;\n },\n /**\n * 中断过渡\n */\n continueTransition() {\n let _wrapperTr = getPropertyValue(this.$wrapper, 'transform');\n let _wrapperPo = getPropertyValue(this.$wrapper, 'perspective-origin');\n if (_wrapperTr && this.$wrapper.style.transitionDuration) {\n (this.$wrapper.style.transform = _wrapperTr), (this.$wrapper.style.perspectiveOrigin = _wrapperPo);\n this.$cubes.forEach(cube => {\n cube.style.transform = getPropertyValue(cube, 'transform');\n cube.style.opacity = +getPropertyValue(cube, 'opacity');\n cube.style.transformOrigin = getPropertyValue(cube, 'transform-origin');\n });\n // 记录当前位置\n this.endX = 0;\n }\n },\n /**\n * 设置容器滚动\n * nowX: 目标位置\n * time: 过渡时长\n * wait: 运动是否需要滞后\n */\n setWrapper(nowX, time, wait) {\n this.offsetX = nowX;\n if (time > 0) {\n this.$wrapper.style.transitionDuration = `${time}ms`;\n }\n if (wait) {\n setTimeout(() => {\n this.$wrapper.style.transform = `translate3d(${nowX}px, 0, 0)`;\n }, 0);\n } else {\n this.$wrapper.style.transform = `translate3d(${nowX}px, 0, 0)`;\n }\n },\n /**\n * 设置魔方样式\n * nowX: 目标位置\n * rotate: 角度正负\n */\n setCube(nowX, rotate = 0) {\n // 关闭所有过渡\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n let _offset = idx * this.ITEM_WIDTH + nowX;\n if (_offset > this.computeWidth[-1] && _offset < this.computeWidth[0]) {\n // 左边元素\n let bezier_offset = cubicEaseOut(_offset % this.ITEM_WIDTH, 0, -this.ITEM_WIDTH, -this.ITEM_WIDTH);\n cube.style.transform = `rotateY(${this.getBetweenRotate(_offset)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = this.getOpacity(bezier_offset);\n } else if (_offset > this.computeWidth[3] && _offset < this.computeWidth[4]) {\n // 右边元素\n let bezier_offset = cubicEaseOut(_offset % this.ITEM_WIDTH, 0, this.ITEM_WIDTH, this.ITEM_WIDTH);\n cube.style.transform = `rotateY(${this.getBetweenRotate(_offset)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = this.getOpacity(bezier_offset);\n } else if (_offset >= this.computeWidth[4] && _offset < this.computeWidth[5]) {\n // 最右边元素(自动播放时的预备状态)\n cube.style.transform = `rotateY(60deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 0;\n } else if (_offset > this.computeWidth[-2] && _offset <= this.computeWidth[-1]) {\n // 最左边元素(自动播放时的预备状态)\n cube.style.transform = `rotateY(-60deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 0;\n } else if (_offset >= this.computeWidth[0] && _offset <= this.computeWidth[3]) {\n // 中间元素\n cube.style.transform = `rotateY(${this.getMiddleRotate(rotate)}deg) translate3d(0, ${this.getTranslate(_offset)}px, 0)`;\n cube.style.opacity = 1;\n }\n cube.style.transformOrigin = this.getTransformOrigin(_offset);\n });\n },\n // 设置魔方的变化基准点\n getTransformOrigin(d, overflow) {\n if (d >= this.computeWidth[-1] && d <= this.computeWidth[4]) {\n let to = this.ITEM_WIDTH - d / 3;\n if (to < this.computeWidth[0]) {\n to = this.computeWidth[0];\n } else if (to > this.computeWidth[1]) {\n to = this.computeWidth[1];\n }\n return `${to}px center`;\n }\n },\n // 设置两侧魔方的旋转\n getBetweenRotate(d) {\n return ((d % this.ITEM_WIDTH) * (360 / this.$wrapper.clientWidth) * 70) / 90;\n },\n // 设置中间魔方的旋转, 假设临界值交点为5 * 魔方宽度,减缓数率a为0.4\n getMiddleRotate(d) {\n let mid = 5;\n let a = 0.35;\n // 下降曲线:y2 = bx + k 得出 b = -7/3、k = 7/3 所以:y2 = -7/3x + 7/3w\n if (d > (this.ITEM_WIDTH * mid) / 10) {\n return ((a * mid) / (10 - mid)) * (this.ITEM_WIDTH - d);\n } else if (d < (-this.ITEM_WIDTH * mid) / 10) {\n return ((-a * mid) / (10 - mid)) * (this.ITEM_WIDTH + d);\n } else {\n // 上升曲线:y1 = ax 设 a = 0.2\n return a * d;\n }\n },\n // 设置透明度\n getOpacity(d) {\n return 1 - ((Math.abs(d) / this.ITEM_WIDTH) % 1);\n },\n // 设置偏移量\n getTranslate(d) {\n const slow = 7; // 减缓倍率\n if (d > this.computeWidth[2]) {\n if (d > this.computeWidth[3]) {\n return (this.computeWidth[3] - d) / 5;\n }\n return (this.computeWidth[3] - d) / slow;\n } else if (d < this.computeWidth[1]) {\n if (d < 0) {\n return d / 5;\n }\n return d / slow;\n } else {\n return this.ITEM_WIDTH / slow;\n }\n },\n // 检测无限循环\n transitionEndHandler(event) {\n if (event.target === this.$wrapper) {\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.$wrapper.style.webkitPerspectiveOrigin = `${this.current * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n if (this.current >= this.data_bottom.length + this.clone) {\n this.goto(this.current % this.data_bottom.length, 0);\n setTimeout(() => {\n this.canMove = true;\n }, 0);\n } else if (this.current <= this.clone - 1) {\n this.goto(this.data_bottom.length + this.current, 0);\n setTimeout(() => {\n this.canMove = true;\n }, 0);\n }\n }\n },\n /**\n * 跳转到某个索引的位置\n * cur: 目标魔方索引\n * duration: 过渡时长\n */\n goto(cur, duration = 400, isAutoPlay) {\n let nextCur = isAutoPlay ? cur - 0.5 : cur;\n this.$wrapper.style.webkitPerspectiveOrigin = `${nextCur * this.ITEM_WIDTH + this.$wrapper.clientWidth / 2}px center`;\n\n this.current = cur;\n this.endX = -cur * this.ITEM_WIDTH;\n if (!duration) {\n this.$wrapper.style.transitionDuration = null;\n\n this.$wrapper.style.transitionDuration = null;\n this.$cubes.forEach((cube, idx) => {\n cube.style.transition && (cube.style.transition = null);\n });\n this.setCube(this.endX, 0);\n this.setWrapper(this.endX, 0, true);\n } else {\n // 执行过渡\n this.setWrapper(this.endX, duration);\n this.$cubes.forEach((cube, idx) => {\n let _offset = idx * this.ITEM_WIDTH + this.endX;\n cube.style.transformOrigin = this.getTransformOrigin(_offset);\n if (cur - 1 == idx) {\n // 左边过渡\n cube.style.transition = `all ${duration}ms cubic-bezier(0.215, 0.610, 0.355, 1.000)`;\n cube.style.transform = `rotateY(-60deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 0;\n } else if (cur + 4 == idx) {\n // 右边过渡\n cube.style.transition = `all ${duration}ms cubic-bezier(0.215, 0.610, 0.355, 1.000)`;\n cube.style.transform = `rotateY(60deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 0;\n } else if (idx > cur - 1 && idx < cur + 4) {\n // 中间过渡\n if (isAutoPlay) {\n cube.style.transition = `transform ${duration}ms cubic-bezier(0.22, 0.01, 0.68, 1.00), opacity ${duration *\n 0.9}ms cubic-bezier(0.62, 0.02, 0.68, 1.00)`;\n } else {\n cube.style.transition = `all ${duration}ms cubic-bezier(0.390, 0.575, 0.565, 1.000)`;\n }\n cube.style.transform = `rotateY(0.1deg) translate3d(0, ${this.getTranslate(cube.offsetLeft + this.endX)}px, 0)`;\n cube.style.opacity = 1;\n } else {\n cube.style.transition = null;\n cube.style.transform = null;\n cube.style.opacity = null;\n cube.style.transformOrigin = null;\n }\n });\n }\n }\n }\n};\n</script>\n\n<style lang=\"scss\"></style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=002ab09b&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cube\"},[_c('div',{ref:\"container\",staticClass:\"adjust-position cube-container\"},[_c('div',{ref:\"wrapper\",staticClass:\"cube-wrapper\",on:{\"transitionend\":_vm.transitionEndHandler}},[_vm._l((_vm.clone),function(i){return _c('div',{key:'clone-prev-' + i,staticClass:\"cube-col\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i + _vm.data_bottom.length - _vm.clone - 1]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i + _vm.data_bottom.length - _vm.clone - 1]},on:{\"clickEvent\":_vm.clickEvent}})],1)}),_vm._v(\" \"),_vm._l((_vm.data_bottom),function(item,i){return _c('div',{key:i,staticClass:\"cube-col cube-col--anime\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i]},on:{\"clickEvent\":_vm.clickEvent}})],1)}),_vm._v(\" \"),_vm._l((_vm.data_bottom.slice(0, _vm.clone)),function(item,i){return _c('div',{key:'clone-next-' + i,staticClass:\"cube-col\"},[_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_top[i]},on:{\"clickEvent\":_vm.clickEvent}}),_vm._v(\" \"),_c('CubeItem',{staticClass:\"cube-item-wrap\",attrs:{\"item\":_vm.data_bottom[i]},on:{\"clickEvent\":_vm.clickEvent}})],1)})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./magic.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./magic.vue?vue&type=script&lang=js&\"","<template>\n <Cube :dataMagic=\"data\" :type=\"type\" :autoplay=\"autoplay\" v-if=\"data && data.length >= 8\" @clickItem=\"clickItem\" />\n</template>\n\n<script>\nimport Cube from './Cube';\n\nexport default {\n name: 'nut-magic',\n components: {\n Cube\n },\n props: {\n data: {\n type: [Object, Array],\n default: () => {\n return [];\n }\n },\n // dataSpecial: {\n // type: [Object, Array],\n // default: null\n // },\n type: {\n type: String,\n default: 'rank'\n },\n autoplay: {\n default: true\n }\n },\n computed: {},\n data() {\n return {};\n },\n watch: {\n data(newV, old) {\n // this.init();\n }\n },\n methods: {\n clickItem(item) {\n this.$emit('click', item);\n }\n }\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import { render, staticRenderFns } from \"./magic.vue?vue&type=template&id=601c4726&scoped=true&\"\nimport script from \"./magic.vue?vue&type=script&lang=js&\"\nexport * from \"./magic.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"601c4726\",\n null\n \n)\n\nexport default component.exports","import Magic from './magic.vue';\nimport Cube from './Cube/index.vue';\nimport CubeItem from './Cube/CubeItem.vue';\nimport './magic.scss';\n\nMagic.install = function(Vue) {\n Vue.component(Magic.name, Magic);\n Vue.component('Cube', Cube);\n Vue.component('CubeItem', CubeItem);\n};\n\nexport default Magic;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"sourceRoot":""}
@@ -1,2 +1,340 @@
1
- .nut-magic {
1
+ .adjust-position {
2
+ margin-top: -20px;
3
+ margin-bottom: -20px;
4
+ }
5
+ .header-wrap {
6
+ position: relative;
7
+ height: 710px;
8
+ .img-header {
9
+ position: absolute;
10
+ bottom: 0;
11
+ width: 100%;
12
+ }
13
+ }
14
+
15
+ $module_name: '.cube-item';
16
+ #{$module_name} {
17
+ height: 90px;
18
+ width: 88px;
19
+ // margin-left: auto;
20
+ // margin-right: 10px;
21
+ border-radius: 26px;
22
+ overflow: hidden;
23
+ position: relative;
24
+ transform: translateZ(0);
25
+ &::before {
26
+ content: '';
27
+ position: absolute;
28
+ bottom: 0;
29
+ left: 0;
30
+ width: 100%;
31
+ height: 60px;
32
+ border-radius: 0 0 26px 26px;
33
+ }
34
+ &-box {
35
+ height: 63px;
36
+ width: 100%;
37
+ text-align: center;
38
+ position: absolute;
39
+ background: #fff;
40
+ border-radius: 26px 26px 11px 11px;
41
+ transform: translateZ(0);
42
+ background-size: cover;
43
+ background-repeat: no-repeat;
44
+ overflow: hidden;
45
+ }
46
+
47
+ .sub-name {
48
+ width: 100%;
49
+ position: absolute;
50
+ top: 63px;
51
+ padding: 0 10px;
52
+ box-sizing: border-box;
53
+ color: #fff;
54
+ font-size: 14px;
55
+ text-align: center;
56
+ line-height: 27px;
57
+ white-space: nowrap;
58
+ overflow: hidden;
59
+ text-overflow: ellipsis;
60
+ transform: translateZ(0);
61
+ }
62
+
63
+ .sub-image {
64
+ display: block;
65
+ width: 60px;
66
+ height: 60px;
67
+ margin: 0 auto;
68
+ background-color: #fff;
69
+ background-position: center;
70
+ background-size: 100%;
71
+ transform: translateY(6px);
72
+ }
73
+ .sub-desc {
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: center;
77
+ width: 77px;
78
+ box-sizing: border-box;
79
+ height: 15px;
80
+ color: #fff;
81
+ border-radius: 6px;
82
+ font-size: 12px;
83
+ text-align: center;
84
+ position: absolute;
85
+ bottom: 29px;
86
+ left: 50%;
87
+ transform-origin: 0 center;
88
+ transform: translate3d(-50%, 0, 1px);
89
+ span {
90
+ width: 100%;
91
+ display: block;
92
+ line-height: normal;
93
+ text-overflow: ellipsis;
94
+ white-space: nowrap;
95
+ overflow: hidden;
96
+ }
97
+ }
98
+ // 图片
99
+ &--pic {
100
+ &::before {
101
+ background: url('https://img12.360buyimg.com/imagetools/jfs/t1/184083/34/6101/38841/60b065caEaaf7c5d0/eec4cd260f46d9f0.png') no-repeat
102
+ center/100%;
103
+ height: 100%;
104
+ }
105
+ .cube-item-box {
106
+ display: none;
107
+ }
108
+ .sub-desc {
109
+ display: none;
110
+ }
111
+ .sub-name {
112
+ display: none;
113
+ }
114
+ }
115
+ // 活动
116
+ &--act {
117
+ &::before {
118
+ background: url('https://img11.360buyimg.com/imagetools/jfs/t1/195605/17/5252/39357/60b065caEe0aa4c7e/04a341f4e51c6a9b.png') no-repeat
119
+ center/100%;
120
+ }
121
+ .sub-desc {
122
+ background: #ff5c17;
123
+ }
124
+ }
125
+ // 榜单
126
+ &--rank {
127
+ &::before {
128
+ background: url('https://img14.360buyimg.com/imagetools/jfs/t1/183388/37/6207/39741/60b065caEea1440a1/8860c63660fc9ac4.png') no-repeat
129
+ center/100%;
130
+ }
131
+ .sub-desc {
132
+ background: #1f95fb;
133
+ }
134
+ }
135
+ // shop
136
+ &--shop {
137
+ &::before {
138
+ background: url('https://img12.360buyimg.com/imagetools/jfs/t1/184083/34/6101/38841/60b065caEaaf7c5d0/eec4cd260f46d9f0.png') no-repeat
139
+ center/100%;
140
+ }
141
+ .sub-desc {
142
+ background: #ffd01f;
143
+ span {
144
+ color: #000;
145
+ }
146
+ }
147
+ }
148
+ // lbs
149
+ &--lbs {
150
+ &::before {
151
+ background: url('https://img10.360buyimg.com/imagetools/jfs/t1/129094/23/18726/38672/60b065caEb849e8cb/da761e3ebae5bc84.png') no-repeat
152
+ center/100%;
153
+ }
154
+ .sub-desc {
155
+ background: #ffd01f;
156
+ span {
157
+ color: #000;
158
+ }
159
+ }
160
+ }
161
+ // 未读
162
+ &--unread {
163
+ box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);
164
+ animation: show 2s infinite;
165
+ }
166
+ &--special {
167
+ background-size: cover;
168
+ background-repeat: no-repeat;
169
+ &:before {
170
+ display: none;
171
+ }
172
+ .cube-item-box {
173
+ display: none;
174
+ }
175
+ .sub-desc {
176
+ display: none;
177
+ }
178
+ }
179
+ @keyframes show {
180
+ 0% {
181
+ box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);
182
+ }
183
+ 50% {
184
+ box-shadow: 0 0 20px rgba(255, 255, 255, 0.5);
185
+ }
186
+ 100% {
187
+ box-shadow: 0 0 20px rgba(255, 255, 255, 0.2);
188
+ }
189
+ }
190
+ @at-root .cube-wrapper--inited {
191
+ .cube-col {
192
+ .cube-item {
193
+ .sub-image {
194
+ animation: cube-image 0.2s cubic-bezier(0.33, 0, 0.67, 1) 1s forwards;
195
+ }
196
+ }
197
+ }
198
+ }
199
+
200
+ @keyframes cube-image {
201
+ 0% {
202
+ transform: translateY(13px);
203
+ }
204
+ 66% {
205
+ transform: translateY(-5px);
206
+ }
207
+ 100% {
208
+ transform: translateY(0);
209
+ }
210
+ }
211
+ }
212
+
213
+ $module_name1: '.cube';
214
+
215
+ #{$module_name1} {
216
+ width: 100%;
217
+ // position: absolute;
218
+ z-index: 10;
219
+
220
+ &-container {
221
+ width: 100%;
222
+ padding: 15px 0;
223
+ box-sizing: border-box;
224
+ height: 100%;
225
+ overflow: hidden;
226
+ }
227
+ &-wrapper {
228
+ width: 100%;
229
+ white-space: nowrap;
230
+ perspective: 500px;
231
+ animation-play-state: paused;
232
+ transition-property: all;
233
+ transition-timing-function: cubic-bezier(0.39, 0.575, 0.565, 1);
234
+ }
235
+ &-col {
236
+ display: inline-block;
237
+ width: 25%;
238
+ box-sizing: border-box;
239
+ // padding: 0 4px;
240
+ transition: inherit;
241
+
242
+ &--anime:nth-child(5) {
243
+ #{$module_name1}-item-wrap {
244
+ animation: cube5 560ms cubic-bezier(0.33, 0, 0.67, 1) 1s both;
245
+ }
246
+ }
247
+ @keyframes cube5 {
248
+ 0% {
249
+ animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1);
250
+ transform: translate3d(733px, 0, 0);
251
+ }
252
+ 57% {
253
+ animation-timing-function: cubic-bezier(0.33, 0, 0.67, 1);
254
+ transform: translate3d(-30px, 0, 0);
255
+ }
256
+ 58% {
257
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
258
+ transform: translate3d(-30px, 0, 0);
259
+ }
260
+ 100% {
261
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
262
+ transform: translate3d(0, 0, 0);
263
+ }
264
+ }
265
+
266
+ &--anime:nth-child(6) {
267
+ #{$module_name1}-item-wrap {
268
+ animation: cube6 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.08s both;
269
+ }
270
+ }
271
+ @keyframes cube6 {
272
+ 0% {
273
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
274
+ transform: translate3d(554px, 0, 0);
275
+ }
276
+ 57% {
277
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
278
+ transform: translate3d(-20px, 0, 0);
279
+ }
280
+ 58% {
281
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
282
+ transform: translate3d(-20px, 0, 0);
283
+ }
284
+ 100% {
285
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
286
+ transform: translate3d(0, 0, 0);
287
+ }
288
+ }
289
+
290
+ &--anime:nth-child(7) {
291
+ #{$module_name1}-item-wrap {
292
+ animation: cube7 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.16s both;
293
+ }
294
+ }
295
+ @keyframes cube7 {
296
+ 0% {
297
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
298
+ transform: translate3d(378px, 0, 0);
299
+ }
300
+ 57% {
301
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
302
+ transform: translate3d(-20px, 0, 0);
303
+ }
304
+ 58% {
305
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
306
+ transform: translate3d(-20px, 0, 0);
307
+ }
308
+ 100% {
309
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
310
+ transform: translate3d(0, 0, 0);
311
+ }
312
+ }
313
+ &--anime:nth-child(8) {
314
+ #{$module_name1}-item-wrap {
315
+ animation: cube8 560ms cubic-bezier(0.33, 0, 0.83, 1) 1.28s both;
316
+ }
317
+ }
318
+ @keyframes cube8 {
319
+ 0% {
320
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
321
+ transform: translate3d(205px, 0, 0);
322
+ }
323
+ 57% {
324
+ animation-timing-function: cubic-bezier(0.33, 0, 0.83, 1);
325
+ transform: translate3d(-20px, 0, 0);
326
+ }
327
+ 58% {
328
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
329
+ transform: translate3d(-20px, 0, 0);
330
+ }
331
+ 100% {
332
+ animation-timing-function: cubic-bezier(0.17, 0, 0.67, 1);
333
+ transform: translate3d(0, 0, 0);
334
+ }
335
+ }
336
+ }
337
+ &-item-wrap {
338
+ margin-bottom: 16px;
339
+ }
2
340
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui v2.3.3 - menu.css, e117e9f35e9fba61a92d, Tue Jun 22 2021 19:07:24 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui v2.3.7-beta.0 - menu.css, 78f455d4cba8a497b5f5, Mon Oct 25 2021 13:46:52 GMT+0800 (中国标准时间)
3
3
  * (c) 2017-2020 JDC
4
4
  * Released under the MIT License.
5
5
  */.nut-menu .nut-menu-mask{position:fixed;z-index:9998;top:0;right:0;left:0;bottom:0;background-color:rgba(0,0,0,.5)}.nut-menu .nut-menu-panel{display:block;width:100%;position:absolute;left:0;color:#2d2d2d;overflow:hidden;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;z-index:9998}.nut-menu .nut-menu-panel .menu-multiple-style1 ul,.nut-menu .nut-menu-panel .menu-multiple-style2 ul,.nut-menu .nut-menu-panel .menu-multiple-style3 ul,.nut-menu .nut-menu-panel .menu-simple ul{position:relative;padding:0;margin:0;min-height:200px;max-height:300px;list-style:none;overflow-y:auto}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li,.nut-menu .nut-menu-panel .menu-simple ul li{position:relative;width:100%;height:45px;line-height:45px;padding:0 0 0 10px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li.selected,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.selected,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li.selected,.nut-menu .nut-menu-panel .menu-simple ul li.selected{color:#f0250f}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li:before,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li:before,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li:before,.nut-menu .nut-menu-panel .menu-simple ul li:before{content:" ";height:1px;position:absolute;left:0;right:0;bottom:0;z-index:1;pointer-events:none;background-color:#e5e5e5;-webkit-transform:scaleY(.5);-ms-transform:scaleY(.5);transform:scaleY(.5);-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li.col2,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.col2,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li.col2,.nut-menu .nut-menu-panel .menu-simple ul li.col2{float:left;width:50%}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li.col2:nth-child(2n):after,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.col2:nth-child(2n):after,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li.col2:nth-child(2n):after,.nut-menu .nut-menu-panel .menu-simple ul li.col2:nth-child(2n):after{content:" ";position:absolute;z-index:1;pointer-events:none;background-color:#e5e5e5;width:1px;left:0;top:13px;bottom:13px;-webkit-transform:scaleX(.5);-ms-transform:scaleX(.5);transform:scaleX(.5);-webkit-transform-origin:0 50%;-ms-transform-origin:0 50%;transform-origin:0 50%}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li.col3,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.col3,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li.col3,.nut-menu .nut-menu-panel .menu-simple ul li.col3{float:left;width:33.33%}.nut-menu .nut-menu-panel .menu-multiple-style1 ul li.col3:not(:nth-child(3n+1)):after,.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.col3:not(:nth-child(3n+1)):after,.nut-menu .nut-menu-panel .menu-multiple-style3 ul li.col3:not(:nth-child(3n+1)):after,.nut-menu .nut-menu-panel .menu-simple ul li.col3:not(:nth-child(3n+1)):after{content:" ";position:absolute;z-index:1;pointer-events:none;background-color:#e5e5e5;width:1px;left:0;top:13px;bottom:13px;-webkit-transform:scaleX(.5);-ms-transform:scaleX(.5);transform:scaleX(.5);-webkit-transform-origin:0 50%;-ms-transform-origin:0 50%;transform-origin:0 50%}.nut-menu .nut-menu-panel .menu-multiple-style1 .nut-buttongroup .nut-button,.nut-menu .nut-menu-panel .menu-multiple-style2 .nut-buttongroup .nut-button,.nut-menu .nut-menu-panel .menu-multiple-style3 .nut-buttongroup .nut-button,.nut-menu .nut-menu-panel .menu-simple .nut-buttongroup .nut-button{-webkit-appearance:none}.nut-menu .nut-menu-panel .menu-simple li.selected span{position:absolute;top:10px;right:10px}.nut-menu .nut-menu-panel .menu-multiple-style1 li .nut-checkbox{margin-right:10px;vertical-align:middle}.nut-menu .nut-menu-panel .menu-multiple-style1 li label{vertical-align:middle}.nut-menu .nut-menu-panel .menu-multiple-style2 ul li{padding:0 10px;margin-bottom:10px;text-align:center;-webkit-border-radius:4px;border-radius:4px}.nut-menu .nut-menu-panel .menu-multiple-style2 ul li:before{height:0!important}.nut-menu .nut-menu-panel .menu-multiple-style2 ul li.selected a{background-color:#fdf0f0;color:#f0250f}.nut-menu .nut-menu-panel .menu-multiple-style2 ul li a{display:inline-block;width:100%;height:100%;color:#2d2d2d;text-decoration:none;background-color:#f6f6f6}.nut-menu .nut-menu-panel .menu-multiple-style3 li label{padding-left:5px;border-left:3px solid transparent}.nut-menu .nut-menu-panel .menu-multiple-style3 li.selected label{border-left:3px solid #f0250f}