[
  {
    "path": ".eslintignore",
    "content": "release.sh\nnode_modules\nlib\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"plugins\": [\"vue\"],\n  \"extends\": [\"elemefe\"]\n}"
  },
  {
    "path": ".github/CONTRIBUTING_en-us.md",
    "content": "# Mint UI Contributing Guide\n\nHi! Thank you for choosing Mint UI.\n\nMint UI is a mobile component library for Vue.js. It provides abundant CSS and JS components for building mobile applications. With it, you can create web pages in cohesive style ever faster.\n\nWe are excited that you are interested in contributing to Mint UI. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines.\n\n## Issue Guidelines\n- Issues are exclusively for bug reports and feature requests. Other questions may be closed directly.\n\n- Before submitting an issue, please check if similar problems have already been issued.\n\n- Please specify which version of Mint UI you are using, and provide OS and browser information. [JSFiddle](https://jsfiddle.net/) is recommended to build a live demo so that your issue can be reproduced clearly.\n\n## Pull Request Guidelines\n- Fork this repository to your own account. Do not create branches here.\n\n- **DO NOT** include files inside `lib` directory.\n\n- Rebase before creating a PR to keep commit history clear.\n\n- If you are fixing a bug, please include detailed description of the bug in the PR.\n\n- Merging a PR takes two maintainers: one approves the changes after reviewing, and then the other reviews and merges.\n\n## Code Style\nJust comply with the [ESLint](https://github.com/ElemeFE/eslint-config-elemefe) configuration of [ElemeFE](https://github.com/elemefe).\n"
  },
  {
    "path": ".github/CONTRIBUTING_zh-cn.md",
    "content": "# Mint UI Contributing Guide\n\nHi! 首先感谢你使用 Mint UI。\n\nMint UI 是一套基于 Vue.js 的移动端组件库，它包含丰富的 CSS 和 JS 组件，能够满足日常的移动端开发需要。通过它，可以快速构建出风格统一的页面，提升开发效率。\n\nMint UI 的成长离不开大家的支持，如果你愿意为 Mint UI 贡献代码或提供建议，请阅读以下内容。\n\n## Issue 规范\n- issue 仅用于提交 Bug 或 Feature，其它内容可能会被直接关闭。\n\n- 在提交 issue 之前，请搜索相关内容是否已被提出。\n\n- 请说明 Mint UI 的版本号，并提供操作系统和浏览器信息。推荐使用 [JSFiddle](https://jsfiddle.net/) 生成在线 demo，这能够更直观地重现问题。\n\n## Pull Request 规范\n- 请先 fork 一份到自己的项目下，不要直接在仓库下建分支。\n\n- **不要提交** `lib` 里面打包的文件。\n\n- 提交 PR 前请 rebase，确保 commit 记录的整洁。\n\n- 如果是修复 bug，请在 PR 中给出描述信息。\n\n- 合并代码需要两名维护人员参与：一人进行 review 后 approve，另一人再次 review，通过后即可合并。\n\n## 代码规范\n遵循饿了么前端的 [ESLint](https://github.com/ElemeFE/eslint-config-elemefe) 即可\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "<!--\n请使用 https://eleme-issue.surge.sh?repo=mint 提交 issue，否则 issue 会被直接关闭。提交 issue 前请务必查看 FAQ：https://github.com/ElemeFE/mint-ui/blob/master/FAQ.md。\n -->\n\n<!--\nissue 仅用于提交 bug 或 feature 以及设计相关的内容，其它疑问请到 gitter 聊天室找社区里面的小伙伴聊一聊：https://gitter.im/ElemeFE/mint-ui\n -->\n \n<!--\nIssues are exclusively for bug reports and feature requests. For other questions, please visit gitter: https://gitter.im/ElemeFE/mint-ui\n-->\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "Please makes sure these boxes are checked before submitting your PR, thank you!\n\n* [ ] Make sure you follow the contributing guide.\n* [ ] Rebase before creating a PR to keep commit history clear.\n* [ ] Add some descriptions and refer relative issues for you PR.\n"
  },
  {
    "path": ".gitignore",
    "content": "*.log*\n.cache\n.DS_Store\n.idea\n.vscode/\npackages/**/lib\nlib/*\n!lib/index.js\n!lib/style.css\nnode_modules\nexample/dist\n\n"
  },
  {
    "path": ".travis.yml",
    "content": "sudo: false\nlanguage: node_js\nnode_js:\n  - \"5\"\nscript: make dist\n"
  },
  {
    "path": "FAQ.md",
    "content": "## FAQ\n\n### 给组件绑定的事件为什么无法触发？\n\n在 Vue 2.0 中，为自定义组件绑定原生事件必须使用 `.native` 修饰符：\n```html\n<mt-button @click.native=\"handleButtonClick\">Click Me</mt-button>\n```\n\n### 在项目中引入 Mint UI，但是 CSS 报错/字体文件报错/组件没有样式是什么原因？\n\n请参考 webpack 文档，在 webpack 的 loaders 中正确配置 file-loader、css-loader 和 style-loader。\n\n### 在项目中引入 Mint UI，报 `Uncaught Error: Module build failed: SyntaxError: 'with' in strict mode` 是什么原因？\n\n请避免你使用的编译器处理 Mint UI。比如，若是使用 webpack，请在 loaders 中配置：\n```javascript\n{\n  test: /\\.js$/,\n  loader: 'babel',\n  exclude: /node_modules/\n}\n```\n\n### 将 Mint UI 克隆至本地，运行时为何会报错/跑不起来？\n\n首先，确保克隆的是 master 分支的最新代码，并且文件完整。其次，确保本地的 node 版本在 4.0 以上，npm 版本在 3.0 以上。最后，请按照 README 的方法启动开发环境：\n\n```bash\nnpm run dev\n```\n\n或是直接打包：\n\n```bash\nnpm run dist\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2016 mint-ui\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": ".PHONY: dist\ndefault: help\n\ndev:\n\tnpm run dev\n\ndist:\n\tnpm run dist\n\ndist-all:\n\tnode build/bin/build-all.js\n\ndeploy:\n\tnpm run deploy\n\npub:\n\tnpm run pub\n\npub-all:\n\tnpm run pub:all\n\nhelp:\n\t@echo \"   \\033[35mmake\\033[0m \\033[1m命令使用说明\\033[0m\"\n\t@echo \"   \\033[35mmake install\\033[0m\\t\\033[0m\\t---  安装依赖\"\n\t@echo \"   \\033[35mmake dev\\033[0m\\t\\033[0m\\t---  开发模式\"\n\t@echo \"   \\033[35mmake dist\\033[0m\\t\\033[0m\\t---  编译项目，生成目标文件\"\n\t@echo \"   \\033[35mmake dist-all\\033[0m\\t---  分别编译每个组件项目\"\n\t@echo \"   \\033[35mmake deploy\\033[0m\\t\\033[0m\\t---  部署 demo\"\n\t@echo \"   \\033[35mmake pub\\033[0m\\t\\033[0m\\t---  发布到 npm 上\"\n\t@echo \"   \\033[35mmake pub-all\\033[0m\\t\\033[0m\\t---  发布各组件到 npm 上\"\n"
  },
  {
    "path": "README.md",
    "content": "# Mint UI\n\n[![Build Status](https://travis-ci.org/ElemeFE/mint-ui.svg?branch=master)](https://travis-ci.org/ElemeFE/mint-ui)\n[![npm](https://img.shields.io/npm/v/mint-ui.svg?maxAge=3600)](https://www.npmjs.com/package/mint-ui)\n[![NPM downloads](http://img.shields.io/npm/dm/mint-ui.svg)](https://npmjs.org/package/mint-ui)\n![JS gzip size](http://img.badgesize.io/elemefe/mint-ui/master/lib/index.js.svg?compression=gzip&label=gzip%20size:%20JS)\n![CSS gzip size](http://img.badgesize.io/elemefe/mint-ui/master/lib/style.css.svg?compression=gzip&label=gzip%20size:%20CSS)\n[![Join the chat at https://gitter.im/ElemeFE/mint-ui](https://badges.gitter.im/ElemeFE/mint-ui.svg)](https://gitter.im/ElemeFE/mint-ui?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n> Mobile UI elements for **Vue 2.0**\n\n- [Homepage](http://mint-ui.github.io)\n- [Documentation](http://mint-ui.github.io/docs)\n\n\n\n## Installation\n```shell\nnpm i mint-ui -S\n\n# for Vue 1.x\nnpm i mint-ui@1 -S\n```\n\n## Usage\n\nImport all components.\n\n```javascript\nimport Vue from 'vue';\nimport Mint from 'mint-ui';\nimport 'mint-ui/lib/style.css';\n\nVue.use(Mint);\n```\n\nOr import specified component. (Use [babel-plugin-component](https://www.npmjs.com/package/babel-plugin-component))\n\n```javascript\nimport { Cell, Checklist } from 'mint-ui';\n\nVue.component(Cell.name, Cell);\nVue.component(Checklist.name, Checklist);\n```\n\n\nEquals to\n\n```javascript\nimport Vue from 'vue';\nimport Mint from 'mint-ui';\nimport 'mint-ui/lib/style.css';\n\nVue.use(Mint);\n\n// import specified component\n\nimport MtRadio from 'mint-ui/lib/radio';\nimport 'mint-ui/lib/radio/style.css';\n\nVue.component(MtRadio.name, MtRadio);\n```\n\n## babel-plugin-component\n- Auto import css file\n- Modular import component\n\nInstallation\n```shell\nnpm i babel-plugin-component -D\n```\n\nUsage\n\n.babelrc\n```json\n{\n  \"plugins\": [\"other-plugin\", [\"component\", [\n    { \"libraryName\": \"mint-ui\", \"style\": true }\n  ]]]\n}\n```\n\n## CDN\nRawGit\n\n- https://cdn.rawgit.com/ElemeFE/mint-ui/master/lib/index.js\n- https://cdn.rawgit.com/ElemeFE/mint-ui/master/lib/style.css\n\nNPMCDN\n\n- https://unpkg.com/mint-ui/lib/index.js\n- https://unpkg.com/mint-ui/lib/style.css\n\n## Development\n\n```shell\nnpm run dev\n```\n\n## Contribution\nPlease make sure to read the [Contributing Guide](https://github.com/ElemeFE/mint-ui/blob/master/.github/CONTRIBUTING_en-us.md) before making a pull request.\n\n## License\nMIT\n"
  },
  {
    "path": "build/bin/build-all.js",
    "content": "'use strict';\n\nconst components = require('../../components.json');\nconst execSync = require('child_process').execSync;\nconst existsSync = require('fs').existsSync;\nconst path = require('path');\n\nlet componentPaths = [];\n\ndelete components.font;\n\nObject.keys(components).forEach(key => {\n  const filePath = path.join(__dirname, `../../packages/${key}/cooking.conf.js`);\n\n  if (existsSync(filePath)) {\n    componentPaths.push(`packages/${key}/cooking.conf.js`);\n  }\n});\n\nconst paths = componentPaths.join(',');\nconst cli = `node_modules/.bin/cooking build -c ${paths} -p`;\n\nexecSync(cli, {\n  stdio: 'inherit'\n});\n"
  },
  {
    "path": "build/bin/build-entry.js",
    "content": "var Components = require('../../components.json');\nvar fs = require('fs');\nvar render = require('json-templater/string');\nvar uppercamelcase = require('uppercamelcase');\nvar path = require('path');\n\nvar OUTPUT_PATH = path.join(__dirname, '../../src/index.js');\nvar IMPORT_TEMPLATE = 'import {{name}} from \\'../packages/{{package}}\\';';\nvar ISNTALL_COMPONENT_TEMPLATE = '  Vue.component({{name}}.name, {{name}});';\nvar MAIN_TEMPLATE = `{{include}}\nimport '../src/assets/font/iconfont.css';\nimport merge from './utils/merge';\n\nconst version = '{{version}}';\nconst install = function(Vue, config = {}) {\n  if (install.installed) return;\n\n{{install}}\n  Vue.use(InfiniteScroll);\n  Vue.use(Lazyload, merge({\n    loading: require('./assets/loading-spin.svg'),\n    attempt: 3\n  }, config.lazyload));\n\n  Vue.$messagebox = Vue.prototype.$messagebox = MessageBox;\n  Vue.$toast = Vue.prototype.$toast = Toast;\n  Vue.$indicator = Vue.prototype.$indicator = Indicator;\n};\n\n// auto install\nif (typeof window !== 'undefined' && window.Vue) {\n  install(window.Vue);\n};\n\nmodule.exports = {\n  install,\n  version,\n{{list}}\n};\n`;\n\ndelete Components.font;\n\nvar ComponentNames = Object.keys(Components);\n\nvar includeComponentTemplate = [];\nvar installTemplate = [];\nvar listTemplate = [];\n\nComponentNames.forEach(name => {\n  var componentName = uppercamelcase(name);\n\n  includeComponentTemplate.push(render(IMPORT_TEMPLATE, {\n    name: componentName,\n    package: name\n  }));\n\n  if ([\n      // directives\n    'InfiniteScroll',\n    'Lazyload',\n\n      // services\n    'MessageBox',\n    'Toast',\n    'Indicator'\n  ].indexOf(componentName) === -1) {\n    installTemplate.push(render(ISNTALL_COMPONENT_TEMPLATE, {\n      name: componentName,\n      component: name\n    }));\n  }\n\n  listTemplate.push(`  ${componentName}`);\n});\n\nvar template = render(MAIN_TEMPLATE, {\n  include: includeComponentTemplate.join('\\n'),\n  install: installTemplate.join('\\n'),\n  version: process.env.VERSION || require('../../package.json').version,\n  list: listTemplate.join(',\\n')\n});\n\nfs.writeFileSync(OUTPUT_PATH, template);\nconsole.log('[build entry] DONE:', OUTPUT_PATH);\n"
  },
  {
    "path": "build/config.js",
    "content": "var Components = require('../components.json');\nvar path = require('path');\nvar dependencies = require('../package.json').dependencies;\nvar externals = {};\nvar pkg = {};\nObject.keys(Components).forEach(function(key) {\n  externals[`mint-ui/packages/${key}/index.js`] = `mint-ui/lib/${key}`;\n  externals[`mint-ui/packages/${key}/style.css`] = `mint-ui/lib/${key}/style.css`;\n});\nObject.keys(dependencies).forEach(function(key) {\n  externals[key] = key;\n  pkg[key] = key;\n});\nexports.externals = Object.assign({\n  vue: {\n    root: 'Vue',\n    commonjs: 'vue',\n    commonjs2: 'vue',\n    amd: 'vue'\n  }\n}, externals);\nexports.pkg = Object.assign({\n  vue: 'vue'\n}, pkg);\n\nexports.alias = {\n  'mint-ui': path.join(__dirname, '..'),\n  'src': path.join(__dirname, '../src')\n};\n\nexports.jsexclude = /node_modules|lib/;\n\nexports.extends = ['vue2', 'saladcss', 'buble'];\n\n"
  },
  {
    "path": "build/cooking.common.js",
    "content": "var cooking = require('cooking');\nvar config = require('./config');\n\ncooking.set({\n  entry: './src/index.js',\n  dist: './lib/',\n  clean: false,\n  template: false,\n  format: 'cjs',\n  minimize: false,\n  moduleName: 'MINT',\n  extractCSS: 'style.css',\n  extends: ['vue2', 'saladcss', 'buble'],\n  alias: config.alias,\n  externals: config.pkg\n});\n\ncooking.remove('output.publicPath');\ncooking.add('output.filename', 'mint-ui.common.js');\ncooking.add('performance.hints', false);\ncooking.add('loader.js.exclude', config.jsexclude);\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "build/cooking.component.js",
    "content": "var cooking = require('cooking');\nvar Components = require('../components.json');\nvar webpack = require('webpack');\nvar config = require('./config');\n\ncooking.set({\n  entry: Components,\n  dist: './lib/',\n  clean: false,\n  template: false,\n  minimize: false,\n  format: 'cjs',\n  extractCSS: '[name]/style.css',\n  extends: ['vue2', 'saladcss', 'buble'],\n  alias: config.alias,\n  externals: config.externals\n});\n\ncooking.remove('output.publicPath');\ncooking.add('output.filename', '[name]/index.js');\ncooking.add('loader.js.exclude', config.jsexclude);\ncooking.add('plugins.Define', new webpack.DefinePlugin({\n  'process.env.NODE_ENV': JSON.stringify('component')\n}));\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "build/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar config = require('./config');\n\ncooking.set({\n  entry: './src/index.js',\n  dist: './lib/',\n  clean: false,\n  template: false,\n  format: 'umd',\n  moduleName: 'MINT',\n  extractCSS: 'style.min.css',\n  extends: ['vue2', 'saladcss', 'buble'],\n  alias: config.alias,\n  externals: { vue: config.externals.vue }\n});\n\ncooking.remove('output.publicPath');\ncooking.add('output.filename', 'index.js');\ncooking.add('loader.js.exclude', config.jsexclude);\ncooking.add('vue.preserveWhitespace', false);\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "build/cooking.demo.js",
    "content": "var cooking = require('cooking');\nvar webpack = require('webpack');\nvar config = require('./config');\n\ncooking.set({\n  entry: './example/entry.js',\n  dist: './example/dist',\n  template: './example/index.tpl',\n  devServer: {\n    port: 8790,\n    host: require('my-local-ip')(),\n    publicPath: '/',\n    log: false\n  },\n  clean: true,\n  hash: true,\n  publicPath: '/mint-ui/',\n  assetsPath: 'static',\n  urlLoaderLimit: 10000,\n  extractCSS: true,\n  sourceMap: true,\n  extends: ['vue2', 'lint', 'saladcss', 'buble'],\n  alias: config.alias,\n  externals: process.env.NODE_ENV === 'production' ? {\n    vue: 'Vue',\n    'vue-router': 'VueRouter',\n    'fastclick': 'FastClick'\n  } : {}\n});\n\ncooking.add('loader.js.exclude', config.jsexclude);\n\nif (process.env.NODE_ENV !== 'production') {\n  cooking.add('plugins.Define', new webpack.DefinePlugin({\n    'process.env.NODE_ENV': JSON.stringify('development')\n  }));\n}\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "build/release.sh",
    "content": "set -e\necho \"[Mint UI for Vue 2.0]Enter release version: \"\nread VERSION\n\nread -p \"Releasing $VERSION - are you sure? (y/n)\" -n 1 -r\necho    # (optional) move to a new line\nif [[ $REPLY =~ ^[Yy]$ ]]\nthen\n  echo \"Releasing $VERSION ...\"\n\n  # build\n  VERSION=$VERSION npm run dist\n\n  # commit\n  git add -A\n  git commit -m \"[build] $VERSION\"\n  npm version $VERSION --message \"[release] $VERSION\"\n\n  # publish\n  git push eleme refs/tags/v$VERSION\n  git push eleme master\n  npm publish\nfi\n"
  },
  {
    "path": "components.json",
    "content": "{\n  \"font\": \"./src/assets/font/iconfont.css\",\n  \"header\": \"./packages/header/index.js\",\n  \"button\": \"./packages/button/index.js\",\n  \"cell\": \"./packages/cell/index.js\",\n  \"cell-swipe\": \"./packages/cell-swipe/index.js\",\n  \"field\": \"./packages/field/index.js\",\n  \"badge\": \"./packages/badge/index.js\",\n  \"switch\": \"./packages/switch/index.js\",\n  \"spinner\": \"./packages/spinner/index.js\",\n  \"tab-item\": \"./packages/tab-item/index.js\",\n  \"tab-container-item\": \"./packages/tab-container-item/index.js\",\n  \"tab-container\": \"./packages/tab-container/index.js\",\n  \"navbar\": \"./packages/navbar/index.js\",\n  \"tabbar\": \"./packages/tabbar/index.js\",\n  \"search\": \"./packages/search/index.js\",\n  \"checklist\": \"./packages/checklist/index.js\",\n  \"radio\": \"./packages/radio/index.js\",\n  \"loadmore\": \"./packages/loadmore/index.js\",\n  \"actionsheet\": \"./packages/actionsheet/index.js\",\n  \"popup\": \"./packages/popup/index.js\",\n  \"swipe\": \"./packages/swipe/index.js\",\n  \"swipe-item\": \"./packages/swipe-item/index.js\",\n  \"range\": \"./packages/range/index.js\",\n  \"picker\": \"./packages/picker/index.js\",\n  \"progress\": \"./packages/progress/index.js\",\n  \"toast\": \"./packages/toast/index.js\",\n  \"indicator\": \"./packages/indicator/index.js\",\n  \"message-box\": \"./packages/message-box/index.js\",\n  \"infinite-scroll\": \"./packages/infinite-scroll/index.js\",\n  \"lazyload\": \"./packages/lazyload/index.js\",\n  \"datetime-picker\": \"./packages/datetime-picker/index.js\",\n  \"index-list\": \"./packages/index-list/index.js\",\n  \"index-section\": \"./packages/index-section/index.js\",\n  \"palette-button\": \"./packages/palette-button/index.js\"\n}"
  },
  {
    "path": "example/app.vue",
    "content": "<template>\n  <div>\n    <router-link class=\"page-back\" v-if=\"visible\" :to=\"'/'\">\n      <i class=\"mintui mintui-back\"></i>\n    </router-link>\n    <router-view></router-view>\n  </div>\n</template>\n\n<style>\n  @reset-global mobile;\n\n  html, body {\n    background-color: #fafafa;\n    -webkit-overflow-scrolling: touch;\n    user-select: none;\n  }\n\n  a {\n    color: inherit;\n  }\n\n  .page-back {\n    display: inline-block;\n    position: absolute 12px * * 10px;\n    width: 40px;\n    height: 40px;\n    text-align: center;\n    i {\n      font-size: 24px;\n      line-height: 40px;\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import 'src/assets/font/iconfont.css';\n\n  export default {\n    computed: {\n      visible() {\n        return ['/', '/header', '/search'].indexOf(this.$route.path) < 0;\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/demos.vue",
    "content": "<template>\n  <section class=\"page-demo\">\n    <div v-for=\"group in navs\">\n      <div class=\"page-title\" v-text=\"group.title\"></div>\n      <mt-cell\n        v-for=\"item in group.list\"\n        :to=\"item.path\"\n        is-link>\n        <div slot=\"title\">\n          <i :class=\"['indexicon', 'icon-' + item.icon]\"></i>\n          <span>{{ item.name }}</span>\n        </div>\n      </mt-cell>\n    </div>\n  </section>\n</template>\n\n<style>\n  .page-demo {\n    padding-bottom: 50px;\n\n    .indexicon {\n      font-size: 22px;\n      color: #26a2ff;\n      display: inline-block;\n      width: 30px;\n      vertical-align: middle;\n\n      &.icon-swipe {\n        font-size: 26px;\n      }\n\n      &.icon-checklist {\n        font-size: 18px;\n      }\n    }\n  }\n  @component-namespace page {\n    @component title {\n      font-size: 20px;\n      margin: 20px auto;\n      text-align: center;\n      display: block;\n      line-height: 1;\n    }\n\n    @component part {\n      margin-bottom: 15px;\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { navs } from './route';\n\n  export default {\n    data() {\n      return {\n        navs: []\n      };\n    },\n\n    created() {\n      this.navs = navs;\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/entry.js",
    "content": "import Vue from 'vue';\nimport App from './app';\nimport routes from './route';\nimport { install as Mint } from 'src/index';\nimport VueRouter from 'vue-router';\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  if (window.FastClick) window.FastClick.attach(document.body);\n}, false);\n\nVue.use(Mint);\nVue.use(VueRouter);\n\nconst router = new VueRouter({\n  base: __dirname,\n  routes\n});\n\nnew Vue({ // eslint-disable-line\n  el: '#app',\n  render: h => h(App),\n  router\n});\n\nlet indexScrollTop = 0;\nrouter.beforeEach((route, redirect, next) => {\n  if (route.path !== '/') {\n    indexScrollTop = document.body.scrollTop;\n  }\n  document.title = route.meta.title || document.title;\n  next();\n});\n\nrouter.afterEach(route => {\n  if (route.path !== '/') {\n    document.body.scrollTop = 0;\n  } else {\n    Vue.nextTick(() => {\n      document.body.scrollTop = indexScrollTop;\n    });\n  }\n});\n"
  },
  {
    "path": "example/index.tpl",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">\n    <title>Mint UI</title>\n    <link rel=\"stylesheet\" href=\"//at.alicdn.com/t/font_1469597443_9221172.css\">\n  </head>\n  <body>\n    <div id=\"app\"></div><% if (process.env.NODE_ENV === 'production') { %>\n    <script src=\"//unpkg.com/vue@2.2.6/dist/vue.js\"></script>\n    <script src=\"//unpkg.com/vue-router@2.4.0/dist/vue-router.js\"></script>\n    <script src=\"//unpkg.com/fastclick@1.0.6/lib/fastclick.js\"></script><% } %>\n  </body>\n</html>\n"
  },
  {
    "path": "example/nav.config.json",
    "content": "[\n  {\n    \"title\": \"JS Components\",\n    \"list\": [\n      {\n        \"path\": \"/toast\",\n        \"name\": \"Toast\",\n        \"icon\": \"toast\"\n      },\n      {\n        \"path\": \"/indicator\",\n        \"name\": \"Indicator\",\n        \"icon\": \"indicator\"\n      },\n      {\n        \"path\": \"/pull-down\",\n        \"name\": \"Pull down\",\n        \"icon\": \"pull-down\"\n      },\n      {\n        \"path\": \"/pull-up\",\n        \"name\": \"Pull up\",\n        \"icon\": \"pull-up\"\n      },\n      {\n        \"path\": \"/infinite-scroll\",\n        \"name\": \"Infinite scroll\",\n        \"icon\": \"infinite-scroll\"\n      },\n      {\n        \"path\": \"/message-box\",\n        \"name\": \"Message box\",\n        \"icon\": \"message-box\"\n      },\n      {\n        \"path\": \"/action-sheet\",\n        \"name\": \"Action sheet\",\n        \"icon\": \"action-sheet\"\n      },\n      {\n        \"path\": \"/popup\",\n        \"name\": \"Popup\",\n        \"icon\": \"popup\"\n      },\n      {\n        \"path\": \"/swipe\",\n        \"name\": \"Swipe\",\n        \"icon\": \"swipe\"\n      },\n      {\n        \"path\": \"/lazyload\",\n        \"name\": \"Lazy load\",\n        \"icon\": \"lazyload\"\n      },\n      {\n        \"path\": \"/range\",\n        \"name\": \"Range\",\n        \"icon\": \"range\"\n      },\n      {\n        \"path\": \"/progress\",\n        \"name\": \"Progress\",\n        \"icon\": \"progress\"\n      },\n      {\n        \"path\": \"/picker\",\n        \"name\": \"Picker\",\n        \"icon\": \"picker\"\n      },\n      {\n        \"path\": \"/datetime-picker\",\n        \"name\": \"Datetime Picker\",\n        \"icon\": \"time\"\n      },\n      {\n        \"path\": \"/index-list\",\n        \"name\": \"Index List\",\n        \"icon\": \"alphabet\"\n      },\n      {\n        \"path\": \"/palette-button\",\n        \"name\": \"Palette Button\",\n        \"icon\": \"alphabet\"\n      }\n    ]\n  },\n  {\n    \"title\": \"CSS Components\",\n    \"list\": [\n      {\n        \"path\": \"/header\",\n        \"name\": \"Header\",\n        \"icon\": \"header\"\n      },\n      {\n        \"path\": \"/tabbar\",\n        \"name\": \"Tabbar\",\n        \"icon\": \"tabbar\"\n      },\n      {\n        \"path\": \"/navbar\",\n        \"name\": \"Navbar\",\n        \"icon\": \"navbar\"\n      },\n      {\n        \"path\": \"/button\",\n        \"name\": \"Button\",\n        \"icon\": \"button\"\n      },\n      {\n        \"path\": \"/cell\",\n        \"name\": \"Cell\",\n        \"icon\": \"cell\"\n      },\n      {\n        \"path\": \"/cell-swipe\",\n        \"name\": \"Cell Swipe\",\n        \"icon\": \"cell\"\n      },\n      {\n        \"path\": \"/spinner\",\n        \"name\": \"Spinner\",\n        \"icon\": \"spinner\"\n      },\n      {\n        \"path\": \"/tab-container\",\n        \"name\": \"TabContainer\",\n        \"icon\": \"panel\"\n      },\n      {\n        \"path\": \"/search\",\n        \"name\": \"Search\",\n        \"icon\": \"searchbar\"\n      }\n    ]\n  },\n  {\n    \"title\": \"Form Components\",\n    \"list\": [\n      {\n        \"path\": \"/switch\",\n        \"name\": \"Switch\",\n        \"icon\": \"switch\"\n      },\n      {\n        \"path\": \"/checklist\",\n        \"name\": \"Checklist\",\n        \"icon\": \"checklist\"\n      },\n      {\n        \"path\": \"/radio\",\n        \"name\": \"Radio\",\n        \"icon\": \"radio\"\n      },\n      {\n        \"path\": \"/field\",\n        \"name\": \"Field\",\n        \"icon\": \"field\"\n      },\n      {\n        \"path\": \"/badge\",\n        \"name\": \"Badge\",\n        \"icon\": \"badge\"\n      }\n    ]\n  }\n]"
  },
  {
    "path": "example/pages/action-sheet.vue",
    "content": "<template>\n  <div class=\"page-actionsheet\">\n    <h1 class=\"page-title\">Action Sheet</h1>\n    <div class=\"page-actionsheet-wrapper\">\n      <mt-button @click.native=\"sheetVisible = true\" size=\"large\">点击上拉 action sheet</mt-button>\n      <mt-button @click.native=\"sheetVisible2 = true\" size=\"large\">不带取消按钮的 action sheet</mt-button>\n    </div>\n    <mt-actionsheet :actions=\"actions\" v-model=\"sheetVisible\"></mt-actionsheet>\n    <mt-actionsheet :actions=\"actions2\" v-model=\"sheetVisible2\" cancel-text=\"\"></mt-actionsheet>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component actionsheet {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n\n        button:first-child {\n          margin-bottom: 20px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        sheetVisible: false,\n        sheetVisible2: false,\n        actions: [],\n        actions2: []\n      };\n    },\n\n    methods: {\n      takePhoto() {\n        console.log('taking photo');\n      },\n\n      openAlbum() {\n        console.log('opening album');\n      },\n\n      goBack() {\n        history.go(-1);\n      }\n    },\n\n    mounted() {\n      this.actions = [{\n        name: '拍照',\n        method: this.takePhoto\n      }, {\n        name: '从相册中选择',\n        method: this.openAlbum\n      }];\n      this.actions2 = [{\n        name: '确定'\n      }, {\n        name: '返回上一步',\n        method: this.goBack\n      }];\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/badge.vue",
    "content": "<template>\n  <div class=\"page-badge\">\n    <div class=\"page-title\">Badge</div>\n\n    <div class=\"page-badge-container\">\n      <div class=\"page-part\">\n        <mt-badge type=\"primary\" size=\"large\">30</mt-badge>\n        <mt-badge type=\"error\" size=\"large\">10</mt-badge>\n        <mt-badge type=\"success\" size=\"large\">10</mt-badge>\n        <mt-badge type=\"warning\" size=\"large\">10</mt-badge>\n      </div>\n\n      <div class=\"page-part\">\n        <mt-badge type=\"primary\">30</mt-badge>\n        <mt-badge type=\"error\">10</mt-badge>\n        <mt-badge type=\"success\">10</mt-badge>\n        <mt-badge type=\"warning\">10</mt-badge>\n      </div>\n\n      <div class=\"page-part\">\n        <mt-badge type=\"primary\" size=\"small\">30</mt-badge>\n        <mt-badge type=\"error\" size=\"small\">10</mt-badge>\n        <mt-badge type=\"success\" size=\"small\">10</mt-badge>\n        <mt-badge type=\"warning\" size=\"small\">10</mt-badge>\n      </div>\n\n      <div class=\"page-part\">\n        <mt-badge size=\"small\" color=\"#888\">自定义颜色</mt-badge>\n      </div>\n    </div>\n\n    <div class=\"page-part\">\n      <mt-cell title=\"徽章\">\n        <span style=\"margin-right: 5px;\">未读消息</span>\n        <mt-badge type=\"error\" size=\"small\">10</mt-badge>\n      </mt-cell>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-badge'\n};\n</script>\n\n<style lang=\"css\">\n  .page-badge-container {\n    padding: 0 10px;\n  }\n</style>\n"
  },
  {
    "path": "example/pages/button.vue",
    "content": "<template>\n  <div class=\"page-button\">\n    <h1 class=\"page-title\">Button</h1>\n    <div class=\"page-button-group\">\n      <mt-button size=\"large\">default</mt-button>\n      <mt-button size=\"large\" type=\"primary\">primary</mt-button>\n      <mt-button size=\"large\" type=\"danger\">danger</mt-button>\n    </div>\n\n    <div class=\"page-button-group\">\n      <mt-button>default</mt-button>\n      <mt-button type=\"primary\">primary</mt-button>\n      <mt-button type=\"danger\">danger</mt-button>\n    </div>\n\n    <div class=\"page-button-group\">\n      <mt-button size=\"small\">default</mt-button>\n      <mt-button size=\"small\" type=\"primary\">primary</mt-button>\n      <mt-button size=\"small\" type=\"danger\">danger</mt-button>\n    </div>\n\n    <div class=\"page-button-group\">\n      <mt-button disabled size=\"large\">default</mt-button>\n      <mt-button disabled size=\"large\" type=\"primary\">primary</mt-button>\n      <mt-button disabled size=\"large\" type=\"danger\">danger</mt-button>\n    </div>\n\n    <div class=\"page-button-group\">\n      <mt-button plain size=\"large\">default</mt-button>\n      <mt-button plain size=\"large\" type=\"primary\">primary</mt-button>\n      <mt-button plain size=\"large\" type=\"danger\">danger</mt-button>\n    </div>\n\n    <div class=\"page-button-group\">\n      <mt-button>\n        <img src=\"../assets/100x100.png\" height=\"20\" width=\"20\" slot=\"icon\">\n        带自定义图标\n      </mt-button>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'button'\n};\n</script>\n\n<style lang=\"css\">\n  @component-namespace page {\n    @component button {\n      padding: 0 15px 15px;\n\n      @descendent group {\n        margin-bottom: 15px;\n\n        & > * {\n          margin-bottom: 15px;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "example/pages/cell-swipe.vue",
    "content": "<template>\n  <div class=\"page-cell\">\n    <div class=\"page-title\">Cell Swipe</div>\n    <mt-cell-swipe\n      v-for=\"n in 15\"\n      :right=\"rightButtons\"\n      title=\"swipe me\">\n    </mt-cell-swipe>\n  </div>\n</template>\n\n<script>\n  export default {\n    created() {\n      this.rightButtons = [\n        {\n          content: 'Mark as Unread',\n          style: { background: 'lightgray', color: '#fff' }\n        },\n        {\n          content: 'Delete',\n          style: { background: 'red', color: '#fff' },\n          handler: () => this.$messagebox('delete')\n        }\n      ];\n    },\n\n    methods: {\n      leftButtonHandler(evt) {\n        console.log(123);\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/cell.vue",
    "content": "<template>\n  <div class=\"page-cell\">\n    <div class=\"page-title\">Cell</div>\n    <mt-cell title=\"标题文字\"></mt-cell>\n    <mt-cell title=\"标题文字\" value=\"说明文字\"></mt-cell>\n    <mt-cell title=\"标题文字\" icon=\"more\" value=\"带 icon\"></mt-cell>\n    <mt-cell title=\"标题文字\" icon=\"more\">\n      <span>icon 是图片</span>\n      <img slot=\"icon\" src=\"../assets/100x100.png\" width=\"24\" height=\"24\">\n    </mt-cell>\n    <mt-cell title=\"标题文字\" is-link value=\"带链接\"></mt-cell>\n    <mt-cell title=\"标题文字\" is-link>\n      <span style=\"color: green\">这里是元素</span>\n    </mt-cell>\n    <mt-cell title=\"标题文字\">\n      <mt-button size=\"small\" type=\"primary\" icon=\"back\">按钮</mt-button>\n    </mt-cell>\n\n    <mt-cell title=\"标题\" label=\"描述信息\" is-link></mt-cell>\n\n    <mt-cell title=\"原生跳转\" label=\"跳转到 https://mint-ui.github.io\" is-link to=\"https://mint-ui.github.io\"></mt-cell>\n    <mt-cell title=\"路由跳转\" label=\"跳转到 /#/toast\" is-link :to=\"{ name: 'Toast' }\"></mt-cell>\n  </div>\n</template>\n"
  },
  {
    "path": "example/pages/checklist.vue",
    "content": "<template>\n  <div class=\"page-checklist\">\n    <div class=\"page-title\">Checklist</div>\n\n    <mt-checklist\n      class=\"page-part\"\n      title=\"复选框列表\"\n      v-model=\"value1\"\n      :options=\"options1\">\n    </mt-checklist>\n\n    <div>\n      <mt-cell title=\"选中的项\">{{ value1 }}</mt-cell>\n    </div>\n\n    <mt-checklist\n      class=\"page-part\"\n      title=\"第二个复选框列表\"\n      v-model=\"value2\"\n      :options=\"options2\">\n    </mt-checklist>\n\n    <div>\n      <mt-cell title=\"选中的项\">{{ value2 }}</mt-cell>\n    </div>\n\n    <mt-checklist\n      class=\"page-part\"\n      title=\"最多选两个\"\n      :max=\"2\"\n      v-model=\"value3\"\n      :options=\"options3\">\n    </mt-checklist>\n\n    <div>\n      <mt-cell title=\"选中的项\">{{ value3 }}</mt-cell>\n    </div>\n\n    <mt-checklist\n      align=\"right\"\n      class=\"page-part\"\n      title=\"右对齐\"\n      v-model=\"value4\"\n      :options=\"options4\">\n    </mt-checklist>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-checklist',\n\n  data() {\n    return {\n      value1: [],\n      value2: ['选中禁用的值'],\n      value3: ['选项A'],\n      value4: []\n    };\n  },\n\n  created() {\n    this.options1 = ['选项A', '选项B', '选项C'];\n    this.options3 = ['选项A', '选项B', '选项C', '选项D'];\n    this.options4 = ['选项A', '选项B', '选项C', '选项D'];\n    this.options2 = [\n      {\n        label: '被禁用',\n        value: '值F',\n        disabled: true\n      },\n      {\n        label: '选中禁用',\n        value: '选中禁用的值',\n        disabled: true\n      },\n      {\n        label: '选项A',\n        value: '值A'\n      },\n      {\n        label: '选项B',\n        value: '值B'\n      }\n    ];\n  }\n};\n</script>\n\n<style lang=\"css\">\n  .page-checklist .page-part {\n    margin-top: 40px;\n  }\n</style>\n"
  },
  {
    "path": "example/pages/datetime-picker.vue",
    "content": "<template>\n  <div class=\"page-datetime\">\n    <h1 class=\"page-title\">Datetime Picker</h1>\n    <div class=\"page-datetime-wrapper\">\n      <mt-button @click.native=\"open('picker1')\" size=\"large\">点击弹出 DateTime Picker</mt-button>\n      <mt-button @click.native=\"open('picker2')\" size=\"large\">点击弹出 Date Picker</mt-button>\n      <mt-button @click.native=\"open('picker3')\" size=\"large\">点击弹出 Time Picker</mt-button>\n      <mt-button @click.native=\"open('picker4')\" size=\"large\">自定义模板</mt-button>\n      <mt-button @click.native=\"open('picker5')\" size=\"large\">设定初始值</mt-button>\n    </div>\n    <mt-datetime-picker\n      ref=\"picker1\"\n      v-model=\"value\"\n      :closeOnClickModal=\"false\"\n      @visible-change=\"handleVisibleChange\"\n      @confirm=\"handleChange\">\n    </mt-datetime-picker>\n    <mt-datetime-picker\n      ref=\"picker2\"\n      type=\"date\"\n      v-model=\"value2\"\n      @confirm=\"handleChange\">\n    </mt-datetime-picker>\n    <mt-datetime-picker\n      ref=\"picker3\"\n      type=\"time\"\n      v-model=\"value3\"\n      @confirm=\"handleChange\">\n    </mt-datetime-picker>\n    <mt-datetime-picker\n      ref=\"picker4\"\n      type=\"date\"\n      v-model=\"value4\"\n      year-format=\"{value} 年\"\n      month-format=\"{value} 月\"\n      date-format=\"{value} 日\"\n      @confirm=\"handleChange\">\n    </mt-datetime-picker>\n    <mt-datetime-picker\n      ref=\"picker5\"\n      type=\"time\"\n      v-model=\"value5\"\n      @confirm=\"handleChange\">\n    </mt-datetime-picker>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component datetime {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n\n        button:not:(last-child) {\n          margin-bottom: 20px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { Toast } from 'src/index';\n\n  export default {\n    data() {\n      return {\n        value: null,\n        value2: null,\n        value3: null,\n        value4: null,\n        value5: '04:32',\n        visible: false,\n        visible2: false,\n        visible3: false,\n        visible4: false,\n        visible5: false\n      };\n    },\n\n    methods: {\n      open(picker) {\n        this.$refs[picker].open();\n      },\n\n      handleChange(value) {\n        Toast({\n          message: '已选择 ' + value.toString(),\n          position: 'bottom'\n        });\n      },\n\n      handleVisibleChange(isVisible) {\n        console.log('弹窗是否展示:', isVisible);\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/field.vue",
    "content": "<template>\n  <div class=\"page-field\">\n    <div class=\"page-title\">Field</div>\n    <div class=\"page-part\">\n      <mt-field label=\"用户名\" placeholder=\"请输入用户名\" :attr=\"{ maxlength: 10 }\"></mt-field>\n      <mt-field label=\"邮箱\" placeholder=\"请输入邮箱\" type=\"email\"></mt-field>\n      <mt-field label=\"密码\" placeholder=\"请输入密码\" type=\"password\"></mt-field>\n      <mt-field label=\"手机号\" placeholder=\"请输入手机号\" type=\"tel\"></mt-field>\n      <mt-field label=\"网站\" placeholder=\"请输入网址\" type=\"url\"></mt-field>\n      <mt-field label=\"数字\" placeholder=\"请输入数字\" type=\"number\"></mt-field>\n      <mt-field label=\"生日\" placeholder=\"请输入生日\" type=\"date\"></mt-field>\n      <mt-field label=\"自我介绍\" placeholder=\"自我介绍\" type=\"textarea\" rows=\"4\"></mt-field>\n    </div>\n\n    <div class=\"page-part\">\n      <mt-field placeholder=\"登录邮箱\" type=\"email\"></mt-field>\n      <mt-field placeholder=\"密码\" type=\"password\"></mt-field>\n    </div>\n\n    <div class=\"page-part\">\n      <mt-field label=\"邮箱\" placeholder=\"成功状态\" state=\"success\"></mt-field>\n      <mt-field label=\"邮箱\" placeholder=\"失败状态\" state=\"error\"></mt-field>\n      <mt-field label=\"邮箱\" placeholder=\"警告状态\" state=\"warning\"></mt-field>\n    </div>\n\n    <div class=\"page-part\">\n      <mt-field label=\"验证码\" placeholder=\"输入验证码\">\n        <img src=\"../assets/100x100.png\" height=\"48px\" width=\"100px\">\n      </mt-field>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-field'\n};\n</script>\n"
  },
  {
    "path": "example/pages/header.vue",
    "content": "<template>\n  <div>\n    <mt-header fixed title=\"固定在顶部\"></mt-header>\n    <div class=\"page-header-main\">\n      <div class=\"page-title\">Header</div>\n      <mt-header title=\"标题过长会隐藏后面的内容啊哈哈哈哈\">\n        <router-link to=\"/\" slot=\"left\">\n          <mt-button icon=\"back\">返回</mt-button>\n        </router-link>\n        <mt-button icon=\"more\" slot=\"right\"></mt-button>\n      </mt-header>\n\n      <mt-header title=\"多个按钮\">\n        <router-link to=\"/\" slot=\"left\">\n          <mt-button icon=\"back\">返回</mt-button>\n        </router-link>\n        <mt-button @click=\"handleClose\">关闭</mt-button>\n        <mt-button icon=\"more\" slot=\"right\"></mt-button>\n      </mt-header>\n\n      <mt-header title=\"左侧仅文字\">\n        <router-link to=\"/\" slot=\"left\">\n            <mt-button>返回</mt-button>\n          </router-link>\n      </mt-header>\n\n      <mt-header title=\"右侧仅文字\">\n        <router-link to=\"/\" slot=\"right\">\n          <mt-button>分享</mt-button>\n        </router-link>\n      </mt-header>\n\n      <mt-header title=\"仅图标\">\n        <router-link to=\"/\" slot=\"left\">\n          <mt-button icon=\"back\"></mt-button>\n        </router-link>\n        <mt-button slot=\"right\" icon=\"more\"></mt-button>\n      </mt-header>\n    </div>\n\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'header',\n\n  data() {\n    return {\n\n    };\n  },\n\n  methods: {\n    handleClose() {\n      alert('close this page');\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @component-namespace page {\n    @component header {\n      @descendent main {\n        margin-top: 50px;\n        min-height: 120vh;\n\n        > * {\n          margin-bottom: 15px;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "example/pages/index-list.vue",
    "content": "<template>\n  <div class=\"page-indexlist\">\n    <h1 class=\"page-title\">Index List</h1>\n    <p class=\"page-indexlist-desc\">此例请使用手机查看</p>\n    <div class=\"page-indexlist-wrapper\">\n      <mt-index-list>\n        <mt-index-section v-for=\"item in alphabet\" :index=\"item.initial\">\n          <mt-cell v-for=\"cell in item.cells\" :title=\"cell\"></mt-cell>\n        </mt-index-section>\n      </mt-index-list>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component indexlist {\n      @descendent desc {\n        text-align: center;\n        color: #666;\n        padding-bottom: 5px;\n      }\n\n      @descendent wrapper {\n        width: 100%;\n        border-top: solid 1px #ddd;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  const NAMES = ['Aaron', 'Alden', 'Austin', 'Baldwin', 'Braden', 'Carl', 'Chandler', 'Clyde', 'David', 'Edgar', 'Elton', 'Floyd', 'Freeman', 'Gavin', 'Hector', 'Henry', 'Ian', 'Jason', 'Joshua', 'Kane', 'Lambert', 'Matthew', 'Morgan', 'Neville', 'Oliver', 'Oscar', 'Perry', 'Quinn', 'Ramsey', 'Scott', 'Seth', 'Spencer', 'Timothy', 'Todd', 'Trevor', 'Udolf', 'Victor', 'Vincent', 'Walton', 'Willis', 'Xavier', 'Yvonne', 'Zack', 'Zane'];\n\n  export default {\n    data() {\n      return {\n        alphabet: []\n      };\n    },\n\n    created() {\n      'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('').forEach(initial => {\n        let cells = NAMES.filter(name => name[0] === initial);\n        this.alphabet.push({\n          initial,\n          cells\n        });\n      });\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/indicator.vue",
    "content": "<template>\n  <div class=\"page-indicator\">\n    <h1 class=\"page-title\">Indicator</h1>\n    <div class=\"page-indicator-wrapper\">\n      <mt-button @click.native=\"openIndicator\" size=\"large\">点击弹出 Indicator</mt-button>\n      <mt-button @click.native=\"openIndicatorWithSpinner\" size=\"large\">可配置 spinner</mt-button>\n      <mt-button @click.native=\"openIndicatorWithText\" size=\"large\">点击弹出带有文字的 Indicator</mt-button>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component indicator {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n        button:not(:last-child) {\n          margin-bottom: 20px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { Indicator } from 'src/index';\n\n  export default {\n    methods: {\n      openIndicator() {\n        Indicator.open();\n        setTimeout(() => Indicator.close(), 2000);\n      },\n\n      openIndicatorWithSpinner() {\n        Indicator.open({ spinnerType: 'fading-circle' });\n        setTimeout(() => Indicator.close(), 2000);\n      },\n\n      openIndicatorWithText() {\n        Indicator.open('加载中...');\n        setTimeout(() => Indicator.close(), 2000);\n      }\n    },\n\n    beforeDestroy() {\n      Indicator.close();\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/infinite-scroll.vue",
    "content": "<template>\n  <div class=\"page-infinite\">\n    <h1 class=\"page-title\">Infinite Scroll</h1>\n    <p class=\"page-infinite-desc\">当即将滚动至列表底部时, 自动加载更多数据</p>\n    <div class=\"page-infinite-wrapper\" ref=\"wrapper\" :style=\"{ height: wrapperHeight + 'px' }\">\n      <ul class=\"page-infinite-list\" v-infinite-scroll=\"loadMore\" infinite-scroll-disabled=\"loading\" infinite-scroll-distance=\"50\">\n        <li v-for=\"item in list\" class=\"page-infinite-listitem\">{{ item }}</li>\n      </ul>\n      <p v-show=\"loading\" class=\"page-infinite-loading\">\n        <mt-spinner type=\"fading-circle\"></mt-spinner>\n        加载中...\n      </p>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component infinite {\n      @descendent desc {\n        text-align: center;\n        color: #666;\n        padding-bottom: 5px;\n        border-bottom: solid 1px #eee;\n      }\n\n      @descendent listitem {\n        height: 50px;\n        line-height: 50px;\n        border-bottom: solid 1px #eee;\n        text-align: center;\n        &:first-child {\n          border-top: solid 1px #eee;\n        }\n      }\n\n      @descendent wrapper {\n        margin-top: -1px;\n        overflow: scroll;\n      }\n\n      @descendent loading {\n        text-align: center;\n        height: 50px;\n        line-height: 50px;\n\n        div {\n          display: inline-block;\n          vertical-align: middle;\n          margin-right: 5px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        list: [],\n        loading: false,\n        allLoaded: false,\n        wrapperHeight: 0\n      };\n    },\n\n    methods: {\n      loadMore() {\n        this.loading = true;\n        setTimeout(() => {\n          let last = this.list[this.list.length - 1];\n          for (let i = 1; i <= 10; i++) {\n            this.list.push(last + i);\n          }\n          this.loading = false;\n        }, 2500);\n      }\n    },\n\n    mounted() {\n      this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;\n      for (let i = 1; i <= 20; i++) {\n        this.list.push(i);\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/lazyload.vue",
    "content": "<template>\n  <div class=\"page-lazyload\">\n    <h1 class=\"page-title\">Lazy Load</h1>\n    <ul class=\"page-lazyload-list\">\n      <li class=\"page-lazyload-listitem\" v-for=\"item in list\">\n        <img v-lazy=\"item\" class=\"page-lazyload-image\">\n      </li>\n    </ul>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component lazyload {\n      @descendent list {\n        text-align: center;\n      }\n\n      @descendent listitem {\n        width: 300px;\n        margin: 0 auto;\n        margin-bottom: 10px;\n        background-color: #ddd;\n      }\n\n      @descendent image {\n        display: block;\n        width: 100%;\n      }\n\n      @descendent image[lazy=loading] {\n        width: 40px;\n        height: 300px;\n        margin: auto;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        list: [\n          'http://fuss10.elemecdn.com/b/18/0678e57cb1b226c04888e7f244c20jpeg.jpeg',\n          'http://fuss10.elemecdn.com/3/1e/42634e29812e6594c98a89e922c60jpeg.jpeg',\n          'http://fuss10.elemecdn.com/1/c5/95c37272d3e554317dcec1e17a9f5jpeg.jpeg',\n          'http://fuss10.elemecdn.com/7/85/e478e4b26af74f4539c79f31fde80jpeg.jpeg',\n          'http://fuss10.elemecdn.com/b/df/b630636b444346e38cef6c59f6457jpeg.jpeg',\n          'http://fuss10.elemecdn.com/7/a5/596ab03934612236f807b92906fd8jpeg.jpeg'\n        ]\n      };\n    }\n  };\n</script>"
  },
  {
    "path": "example/pages/message-box.vue",
    "content": "<template>\n  <div class=\"page-msgbox\">\n    <h1 class=\"page-title\">Message Box</h1>\n    <div class=\"page-msgbox-wrapper\">\n      <mt-button @click.native=\"openAlert\" size=\"large\">打开 alert 提示框</mt-button>\n      <mt-button @click.native=\"openConfirm\" size=\"large\">打开 confirm 提示框</mt-button>\n      <mt-button @click.native=\"openPrompt\" size=\"large\">打开 prompt 提示框</mt-button>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component msgbox {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n        button:not(:last-child) {\n          margin-bottom: 20px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { MessageBox } from 'src/index';\n\n  export default {\n    methods: {\n      openAlert() {\n        MessageBox.alert('操作成功!', '提示');\n      },\n\n      openConfirm() {\n        MessageBox.confirm('确定执行此操作?', '提示');\n      },\n\n      openPrompt() {\n        MessageBox.prompt(' ', '请输入姓名').then(({ value }) => {\n          if (value) {\n            MessageBox.alert(`你的名字是 ${ value }`, '输入成功');\n          }\n        });\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/navbar.vue",
    "content": "<template>\n  <div class=\"page-navbar\">\n    <div class=\"page-title\">Navbar</div>\n    <mt-navbar class=\"page-part\" v-model=\"selected\">\n      <mt-tab-item id=\"1\">选项一</mt-tab-item>\n      <mt-tab-item id=\"2\">选项二</mt-tab-item>\n      <mt-tab-item id=\"3\">选项三</mt-tab-item>\n    </mt-navbar>\n\n    <div>\n      <mt-cell class=\"page-part\" title=\"当前选中\">{{ selected }}</mt-cell>\n    </div>\n\n    <mt-tab-container v-model=\"selected\">\n      <mt-tab-container-item id=\"1\">\n        <mt-cell v-for=\"n in 10\" :title=\"'内容 ' + n\" />\n      </mt-tab-container-item>\n      <mt-tab-container-item id=\"2\">\n        <mt-cell v-for=\"n in 4\" :title=\"'测试 ' + n\" />\n      </mt-tab-container-item>\n      <mt-tab-container-item id=\"3\">\n        <mt-cell v-for=\"n in 6\" :title=\"'选项 ' + n\" />\n      </mt-tab-container-item>\n    </mt-tab-container>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-navbar',\n\n  data() {\n    return {\n      selected: '1'\n    };\n  }\n};\n</script>\n"
  },
  {
    "path": "example/pages/palette-button.vue",
    "content": "<template>\n  <div style=\"text-align:center;padding-top:200px;\">\n    <mt-palette-button content=\"+\" @expand=\"main_log('expand')\" @expanded=\"main_log('expanded')\" @collapse=\"main_log('collapse')\"\n      direction=\"rt\" class=\"pb\" :radius=\"80\" ref=\"target_1\" mainButtonStyle=\"color:#fff;background-color:#26a2ff;\"\n      style=\"left:30px;\">\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(1)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(2)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(3)\"></div>\n    </mt-palette-button>\n    <mt-palette-button content=\"+\" @expand=\"main_log('expand')\" @expanded=\"main_log('expanded')\" @collapse=\"main_log('collapse')\"\n      direction=\"t\" class=\"pb\" :radius=\"80\" ref=\"target_2\" mainButtonStyle=\"color:yellow;background-color:#26a2ff;\" :offset=\"Math.PI / 12\"\n      style=\"left:calc(50% - 30px);\">\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(1)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(2)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(3)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(4)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(5)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(6)\"></div>\n    </mt-palette-button>\n    <mt-palette-button content=\"+\" @expand=\"main_log('expand')\" @expanded=\"main_log('expanded')\" @collapse=\"main_log('collapse')\"\n      direction=\"lt\" class=\"pb\" :radius=\"100\" ref=\"target_3\"\n      style=\"right:30px;\">\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(1)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(2)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(3)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(4)\"></div>\n      <div class=\"my-icon-button indexicon icon-popup\" @touchstart=\"sub_log(5)\"></div>\n    </mt-palette-button>\n  </div>\n</template>\n\n<script>\n  export default {\n    methods: {\n      main_log(val) {\n        console.log('main_log', val);\n      },\n      sub_log(val) {\n        console.log('sub_log', val);\n        this.$refs.target_1.collapse();\n      }\n    }\n  };\n</script>\n\n<style>\n  .pb{\n    width: 60px;\n    height: 60px;\n    line-height: 60px;\n    color: #FFF;\n    position:absolute;\n    bottom: 30px;\n  }\n  .my-icon-button{\n    width:30px;\n    height:30px;\n    border-radius:50%;\n    background-color:#26a2ff;\n    color: #fff;\n    line-height:30px;\n    text-align:center;\n  }\n  .mint-main-button{\n    color: #000;\n    background-color:#26a2ff;\n  }\n</style>\n "
  },
  {
    "path": "example/pages/picker.vue",
    "content": "<template>\n  <div class=\"page-picker\">\n    <h1 class=\"page-title\">Picker</h1>\n    <div class=\"page-picker-wrapper\">\n      <mt-picker :slots=\"yearSlot\" @change=\"onYearChange\" :visible-item-count=\"3\"></mt-picker>\n    </div>\n    <p class=\"page-picker-desc\">出生年份: {{ year }}</p>\n\n    <div class=\"page-picker-wrapper\">\n      <mt-picker :slots=\"dateSlots\" @change=\"onDateChange\" :visible-item-count=\"3\"></mt-picker>\n    </div>\n    <p class=\"page-picker-desc\">在校时间: {{ dateStart }} 至 {{ dateEnd }}</p>\n\n    <div class=\"page-picker-wrapper\">\n      <mt-picker :slots=\"addressSlots\" @change=\"onAddressChange\" :visible-item-count=\"5\"></mt-picker>\n    </div>\n    <p class=\"page-picker-desc\">地址: {{ addressProvince }} {{ addressCity }}</p>\n    \n    <!-- defaultIndex 参数变化 -->\n    <div class=\"page-picker-wrapper\">\n      <mt-picker :slots=\"numberSlot\" @change=\"onNumberChange\" :visible-item-count=\"3\"></mt-picker>\n    </div>\n    <p class=\"page-picker-desc\">动态默认选项\u001b: {{ number }}</p>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component picker {\n      padding: 0 10px 20px;\n      @descendent wrapper {\n        background-color: #fff;\n        text-align: center;\n      }\n\n      @descendent desc {\n        margin: 10px 0 50px;\n      }\n\n      .mint-button {\n        margin-top: 15px;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  const address = {\n    '北京': ['北京'],\n    '广东': ['广州', '深圳', '珠海', '汕头', '韶关', '佛山', '江门', '湛江', '茂名', '肇庆', '惠州', '梅州', '汕尾', '河源', '阳江', '清远', '东莞', '中山', '潮州', '揭阳', '云浮'],\n    '上海': ['上海'],\n    '天津': ['天津'],\n    '重庆': ['重庆'],\n    '辽宁': ['沈阳', '大连', '鞍山', '抚顺', '本溪', '丹东', '锦州', '营口', '阜新', '辽阳', '盘锦', '铁岭', '朝阳', '葫芦岛'],\n    '江苏': ['南京', '苏州', '无锡', '常州', '镇江', '南通', '泰州', '扬州', '盐城', '连云港', '徐州', '淮安', '宿迁'],\n    '湖北': ['武汉', '黄石', '十堰', '荆州', '宜昌', '襄樊', '鄂州', '荆门', '孝感', '黄冈', '咸宁', '随州', '恩施土家族苗族自治州', '仙桃', '天门', '潜江', '神农架林区'],\n    '四川': ['成都', '自贡', '攀枝花', '泸州', '德阳', '绵阳', '广元', '遂宁', '内江', '乐山', '南充', '眉山', '宜宾', '广安', '达州', '雅安', '巴中', '资阳', '阿坝藏族羌族自治州', '甘孜藏族自治州', '凉山彝族自治州'],\n    '陕西': ['西安', '铜川', '宝鸡', '咸阳', '渭南', '延安', '汉中', '榆林', '安康', '商洛'],\n    '河北': ['石家庄', '唐山', '秦皇岛', '邯郸', '邢台', '保定', '张家口', '承德', '沧州', '廊坊', '衡水'],\n    '山西': ['太原', '大同', '阳泉', '长治', '晋城', '朔州', '晋中', '运城', '忻州', '临汾', '吕梁'],\n    '河南': ['郑州', '开封', '洛阳', '平顶山', '安阳', '鹤壁', '新乡', '焦作', '濮阳', '许昌', '漯河', '三门峡', '南阳', '商丘', '信阳', '周口', '驻马店'],\n    '吉林': ['长春', '吉林', '四平', '辽源', '通化', '白山', '松原', '白城', '延边朝鲜族自治州'],\n    '黑龙江': ['哈尔滨', '齐齐哈尔', '鹤岗', '双鸭山', '鸡西', '大庆', '伊春', '牡丹江', '佳木斯', '七台河', '黑河', '绥化', '大兴安岭地区'],\n    '内蒙古': ['呼和浩特', '包头', '乌海', '赤峰', '通辽', '鄂尔多斯', '呼伦贝尔', '巴彦淖尔', '乌兰察布', '锡林郭勒盟', '兴安盟', '阿拉善盟'],\n    '山东': ['济南', '青岛', '淄博', '枣庄', '东营', '烟台', '潍坊', '济宁', '泰安', '威海', '日照', '莱芜', '临沂', '德州', '聊城', '滨州', '菏泽'],\n    '安徽': ['合肥', '芜湖', '蚌埠', '淮南', '马鞍山', '淮北', '铜陵', '安庆', '黄山', '滁州', '阜阳', '宿州', '巢湖', '六安', '亳州', '池州', '宣城'],\n    '浙江': ['杭州', '宁波', '温州', '嘉兴', '湖州', '绍兴', '金华', '衢州', '舟山', '台州', '丽水'],\n    '福建': ['福州', '厦门', '莆田', '三明', '泉州', '漳州', '南平', '龙岩', '宁德'],\n    '湖南': ['长沙', '株洲', '湘潭', '衡阳', '邵阳', '岳阳', '常德', '张家界', '益阳', '郴州', '永州', '怀化', '娄底', '湘西土家族苗族自治州'],\n    '广西': ['南宁', '柳州', '桂林', '梧州', '北海', '防城港', '钦州', '贵港', '玉林', '百色', '贺州', '河池', '来宾', '崇左'],\n    '江西': ['南昌', '景德镇', '萍乡', '九江', '新余', '鹰潭', '赣州', '吉安', '宜春', '抚州', '上饶'],\n    '贵州': ['贵阳', '六盘水', '遵义', '安顺', '铜仁地区', '毕节地区', '黔西南布依族苗族自治州', '黔东南苗族侗族自治州', '黔南布依族苗族自治州'],\n    '云南': ['昆明', '曲靖', '玉溪', '保山', '昭通', '丽江', '普洱', '临沧', '德宏傣族景颇族自治州', '怒江傈僳族自治州', '迪庆藏族自治州', '大理白族自治州', '楚雄彝族自治州', '红河哈尼族彝族自治州', '文山壮族苗族自治州', '西双版纳傣族自治州'],\n    '西藏': ['拉萨', '那曲地区', '昌都地区', '林芝地区', '山南地区', '日喀则地区', '阿里地区'],\n    '海南': ['海口', '三亚', '五指山', '琼海', '儋州', '文昌', '万宁', '东方', '澄迈县', '定安县', '屯昌县', '临高县', '白沙黎族自治县', '昌江黎族自治县', '乐东黎族自治县', '陵水黎族自治县', '保亭黎族苗族自治县', '琼中黎族苗族自治县'],\n    '甘肃': ['兰州', '嘉峪关', '金昌', '白银', '天水', '武威', '酒泉', '张掖', '庆阳', '平凉', '定西', '陇南', '临夏回族自治州', '甘南藏族自治州'],\n    '宁夏': ['银川', '石嘴山', '吴忠', '固原', '中卫'],\n    '青海': ['西宁', '海东地区', '海北藏族自治州', '海南藏族自治州', '黄南藏族自治州', '果洛藏族自治州', '玉树藏族自治州', '海西蒙古族藏族自治州'],\n    '新疆': ['乌鲁木齐', '克拉玛依', '吐鲁番地区', '哈密地区', '和田地区', '阿克苏地区', '喀什地区', '克孜勒苏柯尔克孜自治州', '巴音郭楞蒙古自治州', '昌吉回族自治州', '博尔塔拉蒙古自治州', '石河子', '阿拉尔', '图木舒克', '五家渠', '伊犁哈萨克自治州'],\n    '香港': ['香港'],\n    '澳门': ['澳门'],\n    '台湾': ['台北市', '高雄市', '台北县', '桃园县', '新竹县', '苗栗县', '台中县', '彰化县', '南投县', '云林县', '嘉义县', '台南县', '高雄县', '屏东县', '宜兰县', '花莲县', '台东县', '澎湖县', '基隆市', '新竹市', '台中市', '嘉义市', '台南市']\n  };\n\n  export default {\n    methods: {\n      onYearChange(picker, values) {\n        this.year = values[0];\n      },\n\n      onNumberChange(picker, values) {\n        this.number = values[0];\n      },\n\n      onDateChange(picker, values) {\n        if (values[0] > values[1]) {\n          picker.setSlotValue(1, values[0]);\n        }\n        this.dateStart = values[0];\n        this.dateEnd = values[1];\n      },\n\n      onAddressChange(picker, values) {\n        picker.setSlotValues(1, address[values[0]]);\n        this.addressProvince = values[0];\n        this.addressCity = values[1];\n      }\n    },\n\n    data() {\n      return {\n        year: '1984',\n        number: 0,\n        yearSlot: [{\n          flex: 1,\n          values: ['1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995'],\n          className: 'slot1'\n        }],\n        numberSlot: [{\n          flex: 1,\n          defaultIndex: 0,\n          values: [0, 1, 2, 3, 4, 5, 6],\n          className: 'slot1'\n        }],\n        dateSlots: [\n          {\n            flex: 1,\n            values: ['2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016'],\n            className: 'slot1',\n            textAlign: 'right'\n          }, {\n            divider: true,\n            content: '-',\n            className: 'slot2'\n          }, {\n            flex: 1,\n            values: ['2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015', '2016'],\n            className: 'slot3',\n            textAlign: 'left'\n          }\n        ],\n        dateStart: '2002',\n        dateEnd: '2002',\n        addressSlots: [\n          {\n            flex: 1,\n            values: Object.keys(address),\n            className: 'slot1',\n            textAlign: 'center'\n          }, {\n            divider: true,\n            content: '-',\n            className: 'slot2'\n          }, {\n            flex: 1,\n            values: ['北京'],\n            className: 'slot3',\n            textAlign: 'center'\n          }\n        ],\n        addressProvince: '北京',\n        addressCity: '北京'\n      };\n    },\n\n    mounted() {\n      this.$nextTick(() => {\n        let step = 0;\n        setInterval(() => {\n          this.numberSlot[0].defaultIndex = step++;\n          if (step > this.numberSlot[0].values.length - 1) {\n            step = 0;\n          }\n        }, 1000);\n      });\n    }\n  };\n</script>"
  },
  {
    "path": "example/pages/popup.vue",
    "content": "<template>\n  <div class=\"page-popup\">\n    <h1 class=\"page-title\">Popup</h1>\n    <div class=\"page-popup-wrapper\">\n      <mt-button @click.native=\"popupVisible1 = true\" size=\"large\" ref=\"button\">中部弹出 popup</mt-button>\n      <mt-button @click.native=\"popupVisible2 = true\" size=\"large\">上侧弹出 popup</mt-button>\n      <mt-button @click.native=\"popupVisible3 = true\" size=\"large\">右侧弹出 popup</mt-button>\n      <mt-button @click.native=\"popupVisible4 = true\" size=\"large\">下侧弹出 popup</mt-button>\n    </div>\n    <mt-popup v-model=\"popupVisible1\" popup-transition=\"popup-fade\" class=\"mint-popup-1\" :style=\"{ top: buttonBottom + 10 + 'px' }\">\n      <h1>popup</h1>\n      <p>/ ˈpɑpˌʌp /</p>\n      <p>n. 弹出式; [棒]内野飞球; 自动起跳式装置</p>\n      <p>adj. 弹起的; 有自动起跳装置的</p>\n    </mt-popup>\n    <mt-popup v-model=\"popupVisible2\" position=\"top\" class=\"mint-popup-2\" :modal=\"false\">\n      <p>更新成功</p>\n    </mt-popup>\n    <mt-popup v-model=\"popupVisible3\" position=\"right\" class=\"mint-popup-3\" :modal=\"false\">\n      <mt-button @click.native=\"popupVisible3 = false\" size=\"large\" type=\"primary\">关闭 popup</mt-button>\n    </mt-popup>\n    <mt-popup v-model=\"popupVisible4\" position=\"bottom\" class=\"mint-popup-4\">\n      <mt-picker :slots=\"dateSlots\" @change=\"onDateChange\" :visible-item-count=\"5\" :show-toolbar=\"false\"></mt-picker>\n    </mt-popup>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component popup {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n        button:not(:last-child) {\n          margin-bottom: 20px;\n        }\n      }\n\n      .mint-popup-1 {\n        width: 200px;\n        border-radius: 8px;\n        padding: 10px;\n        transform: translate(-50%, 0);\n\n        h1 {\n          font-size: 20px;\n          color: #26a2ff;\n        }\n\n        p {\n          margin-bottom: 10px;\n        }\n      }\n\n      .mint-popup-1::before {\n        triangle: 10px top #fff;\n        content: '';\n        position: absolute;\n        top: -20px;\n        right: 50px;\n      }\n\n      .mint-popup-2 {\n        width: 100%;\n        height: 50px;\n        text-align: center;\n        background-color: rgba(0,0,0,.7);\n        backface-visibility: hidden;\n      }\n\n      .mint-popup-2 p {\n        line-height: 50px;\n        color: #fff;\n      }\n\n      .mint-popup-3 {\n        width: 100%;\n        height: 100%;\n        background-color: #fff;\n      }\n\n      .mint-popup-3 .mint-button {\n        position: absolute;\n        width: 90%;\n        top: 50%;\n        left: 5%;\n        transform: translateY(-50%);\n      }\n\n      .mint-popup-4 {\n        width: 100%;\n        .picker-slot-wrapper, .picker-item {\n          backface-visibility: hidden;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        popupVisible1: false,\n        popupVisible2: false,\n        popupVisible3: false,\n        popupVisible4: false,\n        buttonBottom: 0,\n        dateSlots: [\n          {\n            flex: 1,\n            values: ['2016-01', '2016-02', '2016-03', '2016-04', '2016-05', '2016-06'],\n            className: 'slot1',\n            textAlign: 'right'\n          }, {\n            divider: true,\n            content: '-',\n            className: 'slot2'\n          }, {\n            flex: 1,\n            values: ['2016-01', '2016-02', '2016-03', '2016-04', '2016-05', '2016-06'],\n            className: 'slot3',\n            textAlign: 'left'\n          }\n        ]\n      };\n    },\n\n    watch: {\n      popupVisible2(val) {\n        if (val) {\n          setTimeout(() => {\n            this.popupVisible2 = false;\n          }, 2000);\n        }\n      }\n    },\n\n    methods: {\n      onDateChange(picker, values) {\n        if (values[0] > values[1]) {\n          picker.setSlotValue(1, values[0]);\n        }\n        this.dateStart = values[0];\n        this.dateEnd = values[1];\n      }\n    },\n\n    mounted() {\n      this.buttonBottom = this.$refs.button.$el.getBoundingClientRect().bottom;\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/progress.vue",
    "content": "<template>\n  <div class=\"page-progress\">\n    <h1 class=\"page-title\">Progress</h1>\n    <mt-cell title=\"默认\">\n      <mt-progress></mt-progress>\n    </mt-cell>\n    <mt-cell title=\"设置 value\">\n      <mt-progress :value=\"20\"></mt-progress>\n    </mt-cell>\n    <mt-cell title=\"左右文字\">\n      <mt-progress :value=\"40\">\n        <div slot=\"start\">0%</div>\n        <div slot=\"end\">100%</div>\n      </mt-progress>\n    </mt-cell>\n    <mt-cell title=\"定义线宽\">\n      <mt-progress :value=\"60\" :bar-height=\"5\"></mt-progress>\n    </mt-cell>\n    <div class=\"page-progress-wrapper\">\n      <mt-button size=\"large\" type=\"primary\" @click.native=\"uploadFile\">上传文件</mt-button>\n      <mt-progress :value=\"value\" v-if=\"progressVisible\" transition=\"progress-fade\">\n        <div slot=\"end\">{{ value }}%</div>\n      </mt-progress>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component progress {\n      .mint-cell-value {\n        flex: 2.5;\n        position: relative;\n        top: -20px;\n      }\n\n      .mt-progress {\n        width: 100%;\n        position: absolute;\n        top: 5px;\n      }\n\n      @descendent wrapper {\n        padding: 0 10px;\n        margin-top: 50px;\n\n        .mt-progress {\n          position: relative;\n        }\n\n        .progress-fade-transition {\n          transition: opacity .3s;\n        }\n\n        .progress-fade-enter,\n        .progress-fade-leave {\n          opacity: 0;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { Toast } from 'src/index';\n\n  export default {\n    data() {\n      return {\n        progressVisible: false,\n        value: 0,\n        uploading: false,\n        timer: null\n      };\n    },\n\n    watch: {\n      value(val) {\n        if (val >= 100) {\n          this.uploading = false;\n          this.progressVisible = false;\n          setTimeout(() => Toast({ message: '上传成功', position: 'bottom', duration: 1000 }), 200);\n          clearTimeout(this.timer);\n        }\n      }\n    },\n\n    methods: {\n      uploadFile() {\n        if (!this.uploading) {\n          this.value = 0;\n          this.progressVisible = true;\n          this.uploading = true;\n          this.timer = setInterval(() => this.value++, 10);\n        }\n      }\n    }\n  };\n</script>"
  },
  {
    "path": "example/pages/pull-down.vue",
    "content": "<template>\n  <div class=\"page-loadmore\">\n    <h1 class=\"page-title\">Pull down</h1>\n    <p class=\"page-loadmore-desc\">在列表顶端, 按住 - 下拉 - 释放可以获取更多数据</p>\n    <p class=\"page-loadmore-desc\">此例请使用手机查看</p>\n    <p class=\"page-loadmore-desc\">translate : {{ translate }}</p>\n    <div class=\"loading-background\" :style=\"{ transform: 'scale3d(' + moveTranslate + ',' + moveTranslate + ',1)' }\">\n      translateScale : {{ moveTranslate }} \n    </div>\n    <div class=\"page-loadmore-wrapper\" ref=\"wrapper\" :style=\"{ height: wrapperHeight + 'px' }\">\n      <mt-loadmore :top-method=\"loadTop\" @translate-change=\"translateChange\" @top-status-change=\"handleTopChange\" ref=\"loadmore\">\n        <ul class=\"page-loadmore-list\">\n          <li v-for=\"item in list\" class=\"page-loadmore-listitem\">{{ item }}</li>\n        </ul>\n        <div slot=\"top\" class=\"mint-loadmore-top\">\n          <span v-show=\"topStatus !== 'loading'\" :class=\"{ 'is-rotate': topStatus === 'drop' }\">↓</span>\n          <span v-show=\"topStatus === 'loading'\">\n            <mt-spinner type=\"snake\"></mt-spinner>\n          </span>\n        </div>\n      </mt-loadmore>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component loadmore {\n      width: 100%;\n      overflow-x: hidden;\n\n      @descendent desc {\n        text-align: center;\n        color: #666;\n        padding-bottom: 5px;\n        &:last-of-type {\n          border-bottom: solid 1px #eee;\n        }\n      }\n\n      @descendent listitem {\n        height: 50px;\n        line-height: 50px;\n        border-bottom: solid 1px #eee;\n        text-align: center;\n        &:first-child {\n          border-top: solid 1px #eee;\n        }\n      }\n\n      @descendent wrapper {\n        margin-top: -1px;\n        overflow: scroll;\n      }\n\n      .mint-spinner {\n        display: inline-block;\n        vertical-align: middle;\n      }\n    }\n  }\n  @component loading-background{\n    width: 100%;\n    height: 50px;\n    line-height: 50px;\n    text-align: center;\n    transition: .2s linear;\n  }\n  @component mint-loadmore-top {\n    span {\n      display: inline-block;\n      transition: .2s linear;\n      vertical-align: middle;\n\n      @when rotate {\n        transform: rotate(180deg);\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        list: [],\n        topStatus: '',\n        wrapperHeight: 0,\n        translate: 0,\n        moveTranslate: 0\n      };\n    },\n\n    methods: {\n      handleTopChange(status) {\n        this.moveTranslate = 1;\n        this.topStatus = status;\n      },\n      translateChange(translate) {\n        const translateNum = +translate;\n        this.translate = translateNum.toFixed(2);\n        this.moveTranslate = (1 + translateNum / 70).toFixed(2);\n      },\n      loadTop() {\n        setTimeout(() => {\n          let firstValue = this.list[0];\n          for (let i = 1; i <= 10; i++) {\n            this.list.unshift(firstValue - i);\n          }\n          this.$refs.loadmore.onTopLoaded();\n        }, 1500);\n      }\n    },\n\n    created() {\n      for (let i = 1; i <= 20; i++) {\n        this.list.push(i);\n      }\n    },\n\n    mounted() {\n      this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/pull-up.vue",
    "content": "<template>\n  <div class=\"page-loadmore\">\n    <h1 class=\"page-title\">Pull up</h1>\n    <p class=\"page-loadmore-desc\">在列表底部, 按住 - 上拉 - 释放可以获取更多数据</p>\n    <p class=\"page-loadmore-desc\">此例请使用手机查看</p>\n    <div class=\"page-loadmore-wrapper\" ref=\"wrapper\" :style=\"{ height: wrapperHeight + 'px' }\">\n      <mt-loadmore :bottom-method=\"loadBottom\" @bottom-status-change=\"handleBottomChange\" :bottom-all-loaded=\"allLoaded\" ref=\"loadmore\">\n        <ul class=\"page-loadmore-list\">\n          <li v-for=\"item in list\" class=\"page-loadmore-listitem\">{{ item }}</li>\n        </ul>\n        <div slot=\"bottom\" class=\"mint-loadmore-bottom\">\n          <span v-show=\"bottomStatus !== 'loading'\" :class=\"{ 'is-rotate': bottomStatus === 'drop' }\">↑</span>\n          <span v-show=\"bottomStatus === 'loading'\">\n            <mt-spinner type=\"snake\"></mt-spinner>\n          </span>\n        </div>\n      </mt-loadmore>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component loadmore {\n      @descendent desc {\n        text-align: center;\n        color: #666;\n        padding-bottom: 5px;\n        &:last-of-type {\n          border-bottom: solid 1px #eee;\n        }\n      }\n\n      @descendent listitem {\n        height: 50px;\n        line-height: 50px;\n        border-bottom: solid 1px #eee;\n        text-align: center;\n        &:first-child {\n          border-top: solid 1px #eee;\n        }\n      }\n\n      @descendent wrapper {\n        overflow: scroll;\n      }\n\n      .mint-spinner {\n        display: inline-block;\n        vertical-align: middle;\n      }\n    }\n  }\n\n  @component mint-loadmore-bottom {\n    span {\n      display: inline-block;\n      transition: .2s linear;\n      vertical-align: middle;\n\n      @when rotate {\n        transform: rotate(180deg);\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        list: [],\n        allLoaded: false,\n        bottomStatus: '',\n        wrapperHeight: 0\n      };\n    },\n\n    methods: {\n      handleBottomChange(status) {\n        this.bottomStatus = status;\n      },\n\n      loadBottom() {\n        setTimeout(() => {\n          let lastValue = this.list[this.list.length - 1];\n          if (lastValue < 40) {\n            for (let i = 1; i <= 10; i++) {\n              this.list.push(lastValue + i);\n            }\n          } else {\n            this.allLoaded = true;\n          }\n          this.$refs.loadmore.onBottomLoaded();\n        }, 1500);\n      }\n    },\n\n    created() {\n      for (let i = 1; i <= 20; i++) {\n        this.list.push(i);\n      }\n    },\n\n    mounted() {\n      this.wrapperHeight = document.documentElement.clientHeight - this.$refs.wrapper.getBoundingClientRect().top;\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/pages/radio.vue",
    "content": "<template>\n  <div class=\"page-radio\">\n    <div class=\"page-title\">radio</div>\n\n    <mt-radio\n      class=\"page-part\"\n      title=\"单选框列表\"\n      v-model=\"value1\"\n      :options=\"options1\" />\n    <div>\n      <mt-cell title=\"选中的项\">{{ value1 }}</mt-cell>\n    </div>\n\n    <mt-radio\n      class=\"page-part\"\n      title=\"第二个单选框列表\"\n      v-model=\"value2\"\n      :options=\"options2\" />\n    <div>\n      <mt-cell title=\"选中的项\">{{ value2 }}</mt-cell>\n    </div>\n\n    <mt-radio\n      align=\"right\"\n      class=\"page-part\"\n      title=\"右对齐\"\n      v-model=\"value3\"\n      :options=\"options3\" />\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-radio',\n\n  data() {\n    return {\n      value1: '',\n      value2: '值A',\n      value3: ''\n    };\n  },\n\n  created() {\n    this.options1 = ['选项A', '选项B', '选项C'];\n    this.options3 = ['选项A', '选项B', '选项C'];\n    this.options2 = [\n      {\n        label: '被禁用',\n        value: '值F',\n        disabled: true\n      },\n      {\n        label: '选项A',\n        value: '值A'\n      },\n      {\n        label: '选项B',\n        value: '值B'\n      }\n    ];\n  }\n};\n</script>\n\n<style lang=\"css\">\n  .page-radio .page-part {\n    margin-top: 40px;\n  }\n</style>\n\n"
  },
  {
    "path": "example/pages/range.vue",
    "content": "<template>\n  <div class=\"page-range\">\n    <h1 class=\"page-title\">Range</h1>\n    <p class=\"page-range-header\">基本功能</p>\n    <mt-cell v-for=\"item in cells1\" :title=\"item.title\" :label=\"'value:' + item.value\">\n      <mt-range v-model=\"item.value\">\n        <div slot=\"start\" v-if=\"item.start\">{{ item.start }}</div>\n        <div slot=\"end\" v-if=\"item.end\">{{ item.end }}</div>\n      </mt-range>\n    </mt-cell>\n    <p class=\"page-range-header\">自定义</p>\n    <mt-cell v-for=\"item in cells2\" :title=\"item.title\" :label=\"'value:' + item.value\">\n      <mt-range v-model=\"item.value\" :min=\"item.min || 0\" :max=\"item.max || 100\" :step=\"item.step || 1\" :bar-height=\"item.barHeight || 1\" :disabled=\"item.disabled\">\n        <div slot=\"start\" v-if=\"item.start\">{{ item.start }}</div>\n        <div slot=\"end\" v-if=\"item.end\">{{ item.end }}</div>\n      </mt-range>\n    </mt-cell>\n    <p class=\"page-range-header\">场景举例</p>\n    <mt-cell v-for=\"item in cells3\" :title=\"item.title\" :label=\"'value:' + item.value\">\n      <mt-range v-model=\"item.value\" :min=\"item.min || 0\" :max=\"item.max || 100\" :step=\"item.step || 1\">\n        <div slot=\"start\" v-if=\"item.start\" :style=\"{ 'font-size': item.start + 'px' }\">{{ item.start }}</div>\n        <div slot=\"end\" v-if=\"item.end\" :style=\"{ 'font-size': item.end + 'px' }\">{{ item.end }}</div>\n      </mt-range>\n    </mt-cell>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component range {\n      .mt-range {\n        width: 100%;\n      }\n\n      .mint-cell-value {\n        flex: 2.5;\n        position: relative;\n      }\n\n      @descendent header {\n        margin-bottom: 8px;\n        padding-left: 15px;\n\n        &:not(:first-of-type) {\n          margin-top: 28px;\n        }\n      }\n\n      @descendent desc {\n        padding: 5px 0 5px 5%;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    data() {\n      return {\n        value1: 0,\n        value2: 20,\n        value3: 0,\n        value4: 0,\n        value5: 10,\n        value6: 0,\n        value7: 40,\n        value8: 14,\n        cells1: null,\n        cells2: null,\n        cells3: null\n      };\n    },\n\n    mounted() {\n      this.cells1 = [{\n        title: '默认',\n        value: this.value1\n      }, {\n        title: '预设 value',\n        value: this.value2\n      }, {\n        title: '左右文字',\n        value: this.value3,\n        start: '0',\n        end: '100'\n      }];\n      this.cells2 = [{\n        title: '定义步长',\n        value: this.value4,\n        step: 10\n      }, {\n        title: '定义区间',\n        value: this.value5,\n        start: '10',\n        end: '90',\n        min: 10,\n        max: 90\n      }, {\n        title: '定义线宽',\n        value: this.value6,\n        barHeight: 5\n      }, {\n        title: '置为无效',\n        value: this.value7,\n        disabled: true\n      }];\n      this.cells3 = [{\n        title: '字体大小',\n        value: this.value8,\n        start: '14',\n        end: '22',\n        min: 14,\n        max: 22,\n        step: 2\n      }];\n    }\n  };\n</script>"
  },
  {
    "path": "example/pages/search.vue",
    "content": "<template>\n  <div class=\"page-search\">\n    <mt-search autofocus v-model=\"value\" :result=\"filterResult\"></mt-search>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-search',\n\n  data() {\n    return {\n      value: '',\n      defaultResult: [\n        'Apple',\n        'Banana',\n        'Orange',\n        'Durian',\n        'Lemon',\n        'Peach',\n        'Cherry',\n        'Berry',\n        'Core',\n        'Fig',\n        'Haw',\n        'Melon',\n        'Plum',\n        'Pear',\n        'Peanut',\n        'Other'\n      ]\n    };\n  },\n\n  computed: {\n    filterResult() {\n      return this.defaultResult.filter(value => new RegExp(this.value, 'i').test(value));\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  .page-search {\n    height: 100%;\n  }\n</style>\n"
  },
  {
    "path": "example/pages/spinner.vue",
    "content": "<template>\n  <div class=\"page-spinner\">\n    <div class=\"page-title\">Spinner</div>\n\n    <mt-cell title=\"snake\">\n      <mt-spinner color=\"#26a2ff\" type=\"snake\"></mt-spinner>\n    </mt-cell>\n\n    <mt-cell title=\"double-bounce\">\n      <mt-spinner color=\"#26a2ff\" type=\"double-bounce\"></mt-spinner>\n    </mt-cell>\n\n    <mt-cell title=\"triple-bounce\">\n      <mt-spinner color=\"#26a2ff\" type=\"triple-bounce\"></mt-spinner>\n    </mt-cell>\n\n    <mt-cell title=\"fading-circle\">\n      <mt-spinner color=\"#26a2ff\" type=\"fading-circle\"></mt-spinner>\n    </mt-cell>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-spinner',\n\n  data() {\n    return {\n\n    };\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @component-namespace page {\n    @component spinner {\n      .mint-cell {\n        min-height: 50px;\n      }\n    }\n  }\n</style>"
  },
  {
    "path": "example/pages/swipe.vue",
    "content": "<template>\n  <div class=\"page-swipe\">\n    <h1 class=\"page-title\">Swipe</h1>\n    <p class=\"page-swipe-desc\">基础用法</p>\n    <mt-swipe :auto=\"4000\">\n      <mt-swipe-item class=\"slide1\">1</mt-swipe-item>\n      <mt-swipe-item class=\"slide2\">2</mt-swipe-item>\n      <mt-swipe-item class=\"slide3\">3</mt-swipe-item>\n    </mt-swipe>\n\n    <p class=\"page-swipe-desc\">隐藏 indicators</p>\n    <mt-swipe :show-indicators=\"false\">\n      <mt-swipe-item class=\"slide1\">1</mt-swipe-item>\n      <mt-swipe-item class=\"slide2\">2</mt-swipe-item>\n      <mt-swipe-item class=\"slide3\">3</mt-swipe-item>\n    </mt-swipe>\n\n    <p class=\"page-swipe-desc\">取消自动播放</p>\n    <mt-swipe :auto=\"0\">\n      <mt-swipe-item class=\"slide1\">1</mt-swipe-item>\n      <mt-swipe-item class=\"slide2\">2</mt-swipe-item>\n      <mt-swipe-item class=\"slide3\">3</mt-swipe-item>\n    </mt-swipe>\n\n    <p class=\"page-swipe-desc\">设置默认显示页</p>\n    <mt-swipe :auto=\"0\" :defaultIndex=\"1\">\n      <mt-swipe-item class=\"slide1\">1</mt-swipe-item>\n      <mt-swipe-item class=\"slide2\">2</mt-swipe-item>\n      <mt-swipe-item class=\"slide3\">3</mt-swipe-item>\n    </mt-swipe>\n\n    <p class=\"page-swipe-desc\">单个幻灯片</p>\n    <mt-swipe :show-indicators=\"false\">\n      <mt-swipe-item class=\"slide1\">SINGLE SLIDE</mt-swipe-item>\n    </mt-swipe>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component swipe {\n      @descendent desc {\n        text-align: center;\n        color: #666;\n        margin-bottom: 5px;\n      }\n      .mint-swipe {\n        height: 200px;\n        color: #fff;\n        font-size: 30px;\n        text-align: center;\n        margin-bottom: 20px;\n      }\n\n      .mint-swipe-item {\n        line-height: 200px;\n      }\n\n      .slide1 {\n        background-color: #0089dc;\n        color: #fff;\n      }\n\n      .slide2 {\n        background-color: #ffd705;\n        color: #000;\n      }\n\n      .slide3 {\n        background-color: #ff2d4b;\n        color: #fff;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "example/pages/switch.vue",
    "content": "<template>\n  <div class=\"page-switch\">\n    <div class=\"page-title\">Switch</div>\n    <div class=\"page-part page-switch-padding\">\n      <mt-switch v-model=\"value1\" @change=\"handleChange\">\n        <label v-text=\"value1\"></label>\n      </mt-switch>\n    </div>\n\n    <div class=\"page-part page-switch-padding\">\n      <mt-switch v-model=\"value4\" @change=\"handleChange\">\n        <label v-text=\"value4\"></label>\n      </mt-switch>\n    </div>\n\n    <mt-cell :title=\"'选项 ' + value2\">\n      <mt-switch v-model=\"value2\" @change=\"handleChange\"></mt-switch>\n    </mt-cell>\n    <mt-cell :title=\"'选项 ' + value3\">\n      <mt-switch v-model=\"value3\" @change=\"handleChange\"></mt-switch>\n    </mt-cell>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-switch',\n\n  data() {\n    return {\n      value1: false,\n      value2: false,\n      value3: true,\n      value4: true\n    };\n  },\n\n  methods: {\n    handleChange(event) {\n      console.log(event);\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @component-namespace page {\n    @component switch {\n      @descendent padding {\n        padding: 0 10px;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "example/pages/tab-container.vue",
    "content": "<template>\n  <div>\n    <div class=\"nav\">\n      <mt-button size=\"small\" @click.native.prevent=\"active = 'tab-container1'\">tab 1</mt-button>\n      <mt-button size=\"small\" @click.native.prevent=\"active = 'tab-container2'\">tab 2</mt-button>\n      <mt-button size=\"small\" @click.native.prevent=\"active = 'tab-container3'\">tab 3</mt-button>\n    </div>\n    <div class=\"page-tab-container\">\n      <mt-tab-container class=\"page-tabbar-tab-container\" v-model=\"active\" swipeable>\n        <mt-tab-container-item id=\"tab-container1\">\n          <mt-cell v-for=\"n in 10\" title=\"tab-container 1\"></mt-cell>\n        </mt-tab-container-item>\n        <mt-tab-container-item id=\"tab-container2\">\n          <mt-cell v-for=\"n in 5\" title=\"tab-container 2\"></mt-cell>\n        </mt-tab-container-item>\n        <mt-tab-container-item id=\"tab-container3\">\n          <mt-cell v-for=\"n in 7\" title=\"tab-container 3\"></mt-cell>\n        </mt-tab-container-item>\n      </mt-tab-container>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-tab-container',\n  data() {\n    return {\n      active: 'tab-container1'\n    };\n  }\n};\n</script>\n\n<style lang=\"css\" scoped>\n  .item {\n    display: inline-block;\n  }\n\n  .nav {\n    padding: 10px;\n  }\n\n  .link {\n    color: inherit;\n    padding: 20px;\n    display: block;\n  }\n</style>\n"
  },
  {
    "path": "example/pages/tabbar.vue",
    "content": "<template>\n  <div class=\"page-tabbar\">\n    <div class=\"page-wrap\">\n      <div class=\"page-title\">Tabbar</div>\n      <div>\n        <mt-cell class=\"page-part\" title=\"当前选中\" :value=\"selected\" />\n      </div>\n\n      <mt-tab-container class=\"page-tabbar-container\" v-model=\"selected\">\n        <mt-tab-container-item id=\"外卖\">\n          <mt-cell v-for=\"n in 10\" :title=\"'餐厅 ' + n\" />\n        </mt-tab-container-item>\n        <mt-tab-container-item id=\"订单\">\n          <mt-cell v-for=\"n in 5\" :title=\"'订单 ' + n\" />\n        </mt-tab-container-item>\n        <mt-tab-container-item id=\"发现\">\n          <mt-cell v-for=\"n in 7\" :title=\"'发现 ' + n\" />\n        </mt-tab-container-item>\n        <mt-tab-container-item id=\"我的\">\n          <div class=\"page-part\">\n            <mt-cell v-for=\"n in 12\" :title=\"'我的 ' + n\" />\n          </div>\n          <router-link to=\"/\">\n            <mt-button type=\"danger\" size=\"large\">退出</mt-button>\n          </router-link>\n        </mt-tab-container-item>\n      </mt-tab-container>\n    </div>\n\n    <mt-tabbar v-model=\"selected\" fixed>\n      <mt-tab-item id=\"外卖\">\n        <img slot=\"icon\" src=\"../assets/100x100.png\">\n        外卖\n      </mt-tab-item>\n      <mt-tab-item id=\"订单\">\n        <img slot=\"icon\" src=\"../assets/100x100.png\">\n        订单\n      </mt-tab-item>\n      <mt-tab-item id=\"发现\">\n        <img slot=\"icon\" src=\"../assets/100x100.png\">\n        发现\n      </mt-tab-item>\n      <mt-tab-item id=\"我的\">\n        <img slot=\"icon\" src=\"../assets/100x100.png\">\n        我的\n      </mt-tab-item>\n    </mt-tabbar>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'page-tabbar',\n  data() {\n    return {\n      selected: '外卖'\n    };\n  }\n};\n</script>\n\n<style>\n  .page-tabbar {\n    overflow: hidden;\n    height: 100vh;\n  }\n\n  .page-wrap {\n    overflow: auto;\n    height: 100%;\n    padding-bottom: 100px;\n  }\n</style>\n"
  },
  {
    "path": "example/pages/toast.vue",
    "content": "<template>\n  <div class=\"page-toast\">\n    <h1 class=\"page-title\">Toast</h1>\n    <div class=\"page-toast-wrapper\">\n      <mt-button @click.native=\"openToast\" size=\"large\">点击弹出 Toast</mt-button>\n      <mt-button @click.native=\"openToastWithIcon\" size=\"large\">点击弹出带有 icon 的 Toast</mt-button>\n      <mt-button @click.native=\"openBottomToast\" size=\"large\">自定义 Toast 位置</mt-button>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace page {\n    @component toast {\n      @descendent wrapper {\n        padding: 0 20px;\n        position: absolute 50% * * *;\n        width: 100%;\n        transform: translateY(-50%);\n        button:not(:last-child) {\n          margin-bottom: 20px;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import { Toast } from 'src/index';\n\n  export default {\n    methods: {\n      openToast() {\n        Toast('提示信息');\n      },\n\n      openToastWithIcon() {\n        Toast({\n          message: '操作成功',\n          iconClass: 'mintui mintui-success'\n        });\n      },\n\n      openBottomToast() {\n        Toast({\n          message: '提示信息',\n          position: 'bottom'\n        });\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "example/route.js",
    "content": "import NavConfig from './nav.config.json';\n\nconst registerRoute = (config) => {\n  let route = [];\n  config.map(nav =>\n    nav.list.map(page =>\n      route.push({\n        name: page.name,\n        path: page.path,\n        component: require(`./pages${page.path}`),\n        meta: {\n          title: page.title || page.name,\n          description: page.description\n        }\n      })\n    )\n  );\n\n  return { route, navs: config };\n};\n\nconst route = registerRoute(NavConfig);\n\nroute.route.push({\n  path: '/',\n  component: require('./demos.vue')\n});\n\nexport const navs = route.navs;\nexport default route.route;\n"
  },
  {
    "path": "lerna.json",
    "content": "{\n  \"lerna\": \"2.0.0-beta.18\",\n  \"version\": \"independent\"\n}\n"
  },
  {
    "path": "lib/index.js",
    "content": "!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e(require(\"vue\")):\"function\"==typeof define&&define.amd?define(\"MINT\",[\"vue\"],e):\"object\"==typeof exports?exports.MINT=e(require(\"vue\")):t.MINT=e(t.Vue)}(this,function(t){return function(t){function e(i){if(n[i])return n[i].exports;var a=n[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,\"a\",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=202)}([function(t,e){t.exports=function(t,e,n,i,a){var s,r=t=t||{},o=typeof t.default;\"object\"!==o&&\"function\"!==o||(s=t,r=t.default);var l=\"function\"==typeof r?r.options:r;e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns),i&&(l._scopeId=i);var u;if(a?(u=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},l._ssrRegister=u):n&&(u=n),u){var c=l.functional,d=c?l.render:l.beforeCreate;c?l.render=function(t,e){return u.call(e),d(t,e)}:l.beforeCreate=d?[].concat(d,u):[u]}return{esModule:s,exports:r,options:l}}},function(e,n){e.exports=t},function(t,e,n){\"use strict\";var i=n(135),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";function i(t,e){if(!t||!e)return!1;if(e.indexOf(\" \")!==-1)throw new Error(\"className should not contain space.\");return t.classList?t.classList.contains(e):(\" \"+t.className+\" \").indexOf(\" \"+e+\" \")>-1}function a(t,e){if(t){for(var n=t.className,a=(e||\"\").split(\" \"),s=0,r=a.length;s<r;s++){var o=a[s];o&&(t.classList?t.classList.add(o):i(t,o)||(n+=\" \"+o))}t.classList||(t.className=n)}}function s(t,e){if(t&&e){for(var n=e.split(\" \"),a=\" \"+t.className+\" \",s=0,r=n.length;s<r;s++){var o=n[s];o&&(t.classList?t.classList.remove(o):i(t,o)&&(a=a.replace(\" \"+o+\" \",\" \")))}t.classList||(t.className=u(a))}}var r=n(1),o=n.n(r);n.d(e,\"c\",function(){return h}),e.a=a,e.b=s;var l=o.a.prototype.$isServer,u=(l?0:Number(document.documentMode),function(t){return(t||\"\").replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g,\"\")}),c=function(){return!l&&document.addEventListener?function(t,e,n){t&&e&&n&&t.addEventListener(e,n,!1)}:function(t,e,n){t&&e&&n&&t.attachEvent(\"on\"+e,n)}}(),d=function(){return!l&&document.removeEventListener?function(t,e,n){t&&e&&t.removeEventListener(e,n,!1)}:function(t,e,n){t&&e&&t.detachEvent(\"on\"+e,n)}}(),h=function(t,e,n){var i=function(){n&&n.apply(this,arguments),d(t,e,i)};c(t,e,i)}},function(t,e){},function(t,e,n){var i=n(0)(n(40),null,null,null,null);t.exports=i.exports},function(t,e,n){\"use strict\";var i,a=n(1),s=n.n(a),r=n(11),o=n(91),l=1,u=[],c=function(t){if(u.indexOf(t)===-1){var e=function(t){var e=t.__vue__;if(!e){var n=t.previousSibling;n.__vue__&&(e=n.__vue__)}return e};s.a.transition(t,{afterEnter:function(t){var n=e(t);n&&n.doAfterOpen&&n.doAfterOpen()},afterLeave:function(t){var n=e(t);n&&n.doAfterClose&&n.doAfterClose()}})}},d=function(){if(!s.a.prototype.$isServer){if(void 0!==i)return i;var t=document.createElement(\"div\");t.style.visibility=\"hidden\",t.style.width=\"100px\",t.style.position=\"absolute\",t.style.top=\"-9999px\",document.body.appendChild(t);var e=t.offsetWidth;t.style.overflow=\"scroll\";var n=document.createElement(\"div\");n.style.width=\"100%\",t.appendChild(n);var a=n.offsetWidth;return t.parentNode.removeChild(t),e-a}},h=function(t){return 3===t.nodeType&&(t=t.nextElementSibling||t.nextSibling,h(t)),t};e.a={props:{value:{type:Boolean,default:!1},transition:{type:String,default:\"\"},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},created:function(){this.transition&&c(this.transition)},beforeMount:function(){this._popupId=\"popup-\"+l++,o.a.register(this._popupId,this)},beforeDestroy:function(){o.a.deregister(this._popupId),o.a.closeModal(this._popupId),this.modal&&null!==this.bodyOverflow&&\"hidden\"!==this.bodyOverflow&&(document.body.style.overflow=this.bodyOverflow,document.body.style.paddingRight=this.bodyPaddingRight),this.bodyOverflow=null,this.bodyPaddingRight=null},data:function(){return{opened:!1,bodyOverflow:null,bodyPaddingRight:null,rendered:!1}},watch:{value:function(t){var e=this;if(t){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,s.a.nextTick(function(){e.open()}))}else this.close()}},methods:{open:function(t){var e=this;this.rendered||(this.rendered=!0,this.$emit(\"input\",!0));var i=n.i(r.a)({},this,t,this.$props);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var a=Number(i.openDelay);a>0?this._openTimer=setTimeout(function(){e._openTimer=null,e.doOpen(i)},a):this.doOpen(i)},doOpen:function(t){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0,this.visible=!0,this.$emit(\"input\",!0);var e=h(this.$el),n=t.modal,a=t.zIndex;if(a&&(o.a.zIndex=a),n&&(this._closing&&(o.a.closeModal(this._popupId),this._closing=!1),o.a.openModal(this._popupId,o.a.nextZIndex(),e,t.modalClass,t.modalFade),t.lockScroll)){this.bodyOverflow||(this.bodyPaddingRight=document.body.style.paddingRight,this.bodyOverflow=document.body.style.overflow),i=d();var s=document.documentElement.clientHeight<document.body.scrollHeight;i>0&&s&&(document.body.style.paddingRight=i+\"px\"),document.body.style.overflow=\"hidden\"}\"static\"===getComputedStyle(e).position&&(e.style.position=\"absolute\"),e.style.zIndex=o.a.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.transition||this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var t=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var e=Number(this.closeDelay);e>0?this._closeTimer=setTimeout(function(){t._closeTimer=null,t.doClose()},e):this.doClose()}},doClose:function(){var t=this;this.visible=!1,this.$emit(\"input\",!1),this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(function(){t.modal&&\"hidden\"!==t.bodyOverflow&&(document.body.style.overflow=t.bodyOverflow,document.body.style.paddingRight=t.bodyPaddingRight),t.bodyOverflow=null,t.bodyPaddingRight=null},200),this.opened=!1,this.transition||this.doAfterClose()},doAfterClose:function(){o.a.closeModal(this._popupId),this._closing=!1}}}},function(t,e,n){\"use strict\";var i=n(148),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(149),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(154),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=\"@@clickoutsideContext\";e.a={bind:function(t,e,n){var a=function(e){n.context&&!t.contains(e.target)&&n.context[t[i].methodName]()};t[i]={documentHandler:a,methodName:e.expression,arg:e.arg||\"click\"},document.addEventListener(t[i].arg,a)},update:function(t,e){t[i].methodName=e.expression},unbind:function(t){document.removeEventListener(t[i].arg,t[i].documentHandler)},install:function(t){t.directive(\"clickoutside\",{bind:this.bind,unbind:this.unbind})}}},function(t,e,n){\"use strict\";e.a=function(t){for(var e=arguments,n=1,i=arguments.length;n<i;n++){var a=e[n]||{};for(var s in a)if(a.hasOwnProperty(s)){var r=a[s];void 0!==r&&(t[s]=r)}}return t}},function(t,e){},function(t,e,n){function i(t){n(105)}var a=n(0)(n(42),n(178),i,null,null);t.exports=a.exports},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(60),a=n(55),s=n(2),r=n(56),o=n(59),l=n(54),u=n(83),c=n(9),d=n(86),h=n(84),f=n(85),p=n(72),m=n(87),v=n(80),g=n(57),b=n(77),y=n(69),x=n(53),w=n(8),C=n(82),T=n(81),_=n(78),S=n(7),E=n(76),k=n(88),$=n(63),M=n(70),V=n(64),I=n(67),L=n(58),D=n(61),P=n(62),A=n(73),N=n(92),O=(n.n(N),n(11)),B=\"2.2.13\",F=function(t,e){void 0===e&&(e={}),F.installed||(t.component(i.a.name,i.a),t.component(a.a.name,a.a),t.component(s.a.name,s.a),t.component(r.a.name,r.a),t.component(o.a.name,o.a),t.component(l.a.name,l.a),t.component(u.a.name,u.a),t.component(c.a.name,c.a),t.component(d.a.name,d.a),t.component(h.a.name,h.a),t.component(f.a.name,f.a),t.component(p.a.name,p.a),t.component(m.a.name,m.a),t.component(v.a.name,v.a),t.component(g.a.name,g.a),t.component(b.a.name,b.a),t.component(y.a.name,y.a),t.component(x.a.name,x.a),t.component(w.a.name,w.a),t.component(C.a.name,C.a),t.component(T.a.name,T.a),t.component(_.a.name,_.a),t.component(S.a.name,S.a),t.component(E.a.name,E.a),t.component(L.a.name,L.a),t.component(D.a.name,D.a),t.component(P.a.name,P.a),t.component(A.a.name,A.a),t.use(V.a),t.use(I.a,n.i(O.a)({loading:n(129),attempt:3},e.lazyload)),t.$messagebox=t.prototype.$messagebox=M.a,t.$toast=t.prototype.$toast=k.a,t.$indicator=t.prototype.$indicator=$.a)};\"undefined\"!=typeof window&&window.Vue&&F(window.Vue),t.exports={install:F,version:B,Header:i.a,Button:a.a,Cell:s.a,CellSwipe:r.a,Field:o.a,Badge:l.a,Switch:u.a,Spinner:c.a,TabItem:d.a,TabContainerItem:h.a,TabContainer:f.a,Navbar:p.a,Tabbar:m.a,Search:v.a,Checklist:g.a,Radio:b.a,Loadmore:y.a,Actionsheet:x.a,Popup:w.a,Swipe:C.a,SwipeItem:T.a,Range:_.a,Picker:S.a,Progress:E.a,Toast:k.a,Indicator:$.a,MessageBox:M.a,InfiniteScroll:V.a,Lazyload:I.a,DatetimePicker:L.a,IndexList:D.a,IndexSection:P.a,PaletteButton:A.a}},function(t,e,n){\"use strict\";t.exports=function(t,e,n){if(\"function\"==typeof Array.prototype.findIndex)return t.findIndex(e,n);if(\"function\"!=typeof e)throw new TypeError(\"predicate must be a function\");var i=Object(t),a=i.length;if(0===a)return-1;for(var s=0;s<a;s++)if(e.call(n,i[s],s,i))return s;return-1}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(6),a=n(12);n.n(a);e.default={name:\"mt-actionsheet\",mixins:[i.a],props:{modal:{default:!0},modalFade:{default:!1},lockScroll:{default:!1},closeOnClickModal:{default:!0},cancelText:{type:String,default:\"取消\"},actions:{type:Array,default:function(){return[]}}},data:function(){return{currentValue:!1}},watch:{currentValue:function(t){this.$emit(\"input\",t)},value:function(t){this.currentValue=t}},methods:{itemClick:function(t,e){t.method&&\"function\"==typeof t.method&&t.method(t,e),this.currentValue=!1}},mounted:function(){this.value&&(this.rendered=!0,this.currentValue=!0,this.open())}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-badge\",props:{color:String,type:{type:String,default:\"primary\"},size:{type:String,default:\"normal\"}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-button\",methods:{handleClick:function(t){this.$emit(\"click\",t)}},props:{icon:String,disabled:Boolean,nativeType:String,plain:Boolean,type:{type:String,default:\"default\",validator:function(t){return[\"default\",\"danger\",\"primary\"].indexOf(t)>-1}},size:{type:String,default:\"normal\",validator:function(t){return[\"small\",\"normal\",\"large\"].indexOf(t)>-1}}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(3),a=n(2),s=n(10);e.default={name:\"mt-cell-swipe\",components:{XCell:a.a},directives:{Clickoutside:s.a},props:{to:String,left:Array,right:Array,icon:String,title:String,label:String,isLink:Boolean,value:{}},data:function(){return{start:{x:0,y:0}}},mounted:function(){this.wrap=this.$refs.cell.$el.querySelector(\".mint-cell-wrapper\"),this.leftElm=this.$refs.left,this.rightElm=this.$refs.right,this.leftWrapElm=this.leftElm.parentNode,this.rightWrapElm=this.rightElm.parentNode,this.leftWidth=this.leftElm.getBoundingClientRect().width,this.rightWidth=this.rightElm.getBoundingClientRect().width,this.leftDefaultTransform=this.translate3d(-this.leftWidth-1),this.rightDefaultTransform=this.translate3d(this.rightWidth),this.rightWrapElm.style.webkitTransform=this.rightDefaultTransform,this.leftWrapElm.style.webkitTransform=this.leftDefaultTransform},methods:{resetSwipeStatus:function(){this.swiping=!1,this.opened=!0,this.offsetLeft=0},translate3d:function(t){return\"translate3d(\"+t+\"px, 0, 0)\"},setAnimations:function(t){this.wrap.style.transitionDuration=t,this.rightWrapElm.style.transitionDuration=t,this.leftWrapElm.style.transitionDuration=t},swipeMove:function(t){void 0===t&&(t=0),this.wrap.style.webkitTransform=this.translate3d(t),this.rightWrapElm.style.webkitTransform=this.translate3d(this.rightWidth+t),this.leftWrapElm.style.webkitTransform=this.translate3d(-this.leftWidth+t),t&&(this.swiping=!0)},swipeLeaveTransition:function(t){var e=this;setTimeout(function(){return e.swipeLeave=!0,t>0&&-e.offsetLeft>.4*e.rightWidth?(e.swipeMove(-e.rightWidth),void e.resetSwipeStatus()):t<0&&e.offsetLeft>.4*e.leftWidth?(e.swipeMove(e.leftWidth),void e.resetSwipeStatus()):(e.swipeMove(0),void n.i(i.c)(e.wrap,\"webkitTransitionEnd\",function(t){e.wrap.style.webkitTransform=\"\",e.rightWrapElm.style.webkitTransform=e.rightDefaultTransform,e.leftWrapElm.style.webkitTransform=e.leftDefaultTransform,e.swipeLeave=!1,e.swiping=!1}))},0)},startDrag:function(t){t=t.changedTouches?t.changedTouches[0]:t,this.dragging=!0,this.start.x=t.pageX,this.start.y=t.pageY,this.direction=\"\"},onDrag:function(t){if(this.opened)return this.swiping||(this.swipeMove(0),this.setAnimations(\"\")),void(this.opened=!1);if(this.dragging){var e,n=t.changedTouches?t.changedTouches[0]:t,i=n.pageY-this.start.y,a=this.offsetLeft=n.pageX-this.start.x,s=Math.abs(i),r=Math.abs(a);if(this.setAnimations(\"0ms\"),\"\"===this.direction&&(this.direction=r>s?\"horizonal\":\"vertical\"),\"horizonal\"===this.direction){if(t.preventDefault(),t.stopPropagation(),e=!(r<5||r>=5&&s>=1.73*r),!e)return;a<0&&-a>this.rightWidth||a>0&&a>this.leftWidth||a>0&&!this.leftWidth||a<0&&!this.rightWidth||this.swipeMove(a)}}},endDrag:function(){this.direction=\"\",this.setAnimations(\"\"),this.swiping&&this.swipeLeaveTransition(this.offsetLeft>0?-1:1)}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-cell\",props:{to:[String,Object],icon:String,title:String,label:String,isLink:Boolean,value:{}},computed:{href:function(){var t=this;if(this.to&&!this.added&&this.$router){var e=this.$router.match(this.to);return e.matched.length?(this.$nextTick(function(){t.added=!0,t.$el.addEventListener(\"click\",t.handleClick)}),e.fullPath||e.path):this.to}return this.to}},methods:{handleClick:function(t){t.preventDefault(),this.$router.push(this.href)}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(2);e.default={name:\"mt-checklist\",props:{max:Number,title:String,align:String,options:{type:Array,required:!0},value:Array},components:{XCell:i.a},data:function(){return{currentValue:this.value}},computed:{limit:function(){return this.max<this.currentValue.length}},watch:{value:function(t){this.currentValue=t},currentValue:function(t){this.limit&&t.pop(),this.$emit(\"input\",t)}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(7),a=n(8),s={Y:\"year\",M:\"month\",D:\"date\",H:\"hour\",m:\"minute\"};e.default={name:\"mt-datetime-picker\",props:{cancelText:{type:String,default:\"取消\"},confirmText:{type:String,default:\"确定\"},type:{type:String,default:\"datetime\"},startDate:{type:Date,default:function(){return new Date((new Date).getFullYear()-10,0,1)}},endDate:{type:Date,default:function(){return new Date((new Date).getFullYear()+10,11,31)}},startHour:{type:Number,default:0},endHour:{type:Number,default:23},yearFormat:{type:String,default:\"{value}\"},monthFormat:{type:String,default:\"{value}\"},dateFormat:{type:String,default:\"{value}\"},hourFormat:{type:String,default:\"{value}\"},minuteFormat:{type:String,default:\"{value}\"},visibleItemCount:{type:Number,default:7},closeOnClickModal:{type:Boolean,default:!0},value:null},data:function(){return{visible:!1,startYear:null,endYear:null,startMonth:1,endMonth:12,startDay:1,endDay:31,currentValue:null,selfTriggered:!1,dateSlots:[],shortMonthDates:[],longMonthDates:[],febDates:[],leapFebDates:[]}},components:{\"mt-picker\":i.a,\"mt-popup\":a.a},methods:{open:function(){this.visible=!0},close:function(){this.visible=!1},isLeapYear:function(t){return t%400===0||t%100!==0&&t%4===0},isShortMonth:function(t){return[4,6,9,11].indexOf(t)>-1},getMonthEndDay:function(t,e){return this.isShortMonth(e)?30:2===e?this.isLeapYear(t)?29:28:31},getTrueValue:function(t){if(t){for(;isNaN(parseInt(t,10));)t=t.slice(1);return parseInt(t,10)}},getValue:function(t){var e,n=this;if(\"time\"===this.type)e=t.map(function(t){return(\"0\"+n.getTrueValue(t)).slice(-2)}).join(\":\");else{var i=this.getTrueValue(t[0]),a=this.getTrueValue(t[1]),s=this.getTrueValue(t[2]),r=this.getMonthEndDay(i,a);s>r&&(this.selfTriggered=!0,s=1);var o=this.typeStr.indexOf(\"H\")>-1?this.getTrueValue(t[this.typeStr.indexOf(\"H\")]):0,l=this.typeStr.indexOf(\"m\")>-1?this.getTrueValue(t[this.typeStr.indexOf(\"m\")]):0;e=new Date(i,a-1,s,o,l)}return e},onChange:function(t){var e=t.$children.filter(function(t){return void 0!==t.currentValue}).map(function(t){return t.currentValue});return this.selfTriggered?void(this.selfTriggered=!1):void(0!==e.length&&(this.currentValue=this.getValue(e),this.handleValueChange()))},fillValues:function(t,e,n){for(var i=this,a=[],r=e;r<=n;r++)r<10?a.push(i[s[t]+\"Format\"].replace(\"{value}\",(\"0\"+r).slice(-2))):a.push(i[s[t]+\"Format\"].replace(\"{value}\",r));return a},pushSlots:function(t,e,n,i){t.push({flex:1,values:this.fillValues(e,n,i)})},generateSlots:function(){var t=this,e=[],n={Y:this.rims.year,M:this.rims.month,D:this.rims.date,H:this.rims.hour,m:this.rims.min},i=this.typeStr.split(\"\");i.forEach(function(i){n[i]&&t.pushSlots.apply(null,[e,i].concat(n[i]))}),\"Hm\"===this.typeStr&&e.splice(1,0,{divider:!0,content:\":\"}),this.dateSlots=e,this.handleExceededValue()},handleExceededValue:function(){var t=this,e=[];if(\"time\"===this.type){var n=this.currentValue.split(\":\");e=[this.hourFormat.replace(\"{value}\",n[0]),this.minuteFormat.replace(\"{value}\",n[1])]}else e=[this.yearFormat.replace(\"{value}\",this.getYear(this.currentValue)),this.monthFormat.replace(\"{value}\",(\"0\"+this.getMonth(this.currentValue)).slice(-2)),this.dateFormat.replace(\"{value}\",(\"0\"+this.getDate(this.currentValue)).slice(-2))],\"datetime\"===this.type&&e.push(this.hourFormat.replace(\"{value}\",(\"0\"+this.getHour(this.currentValue)).slice(-2)),this.minuteFormat.replace(\"{value}\",(\"0\"+this.getMinute(this.currentValue)).slice(-2)));this.dateSlots.filter(function(t){return void 0!==t.values}).map(function(t){return t.values}).forEach(function(t,n){t.indexOf(e[n])===-1&&(e[n]=t[0])}),this.$nextTick(function(){t.setSlotsByValues(e)})},setSlotsByValues:function(t){var e=this.$refs.picker.setSlotValue;\"time\"===this.type&&(e(0,t[0]),e(1,t[1])),\"time\"!==this.type&&(e(0,t[0]),e(1,t[1]),e(2,t[2]),\"datetime\"===this.type&&(e(3,t[3]),e(4,t[4]))),[].forEach.call(this.$refs.picker.$children,function(t){return t.doOnValueChange()})},rimDetect:function(t,e){var n=\"start\"===e?0:1,i=\"start\"===e?this.startDate:this.endDate;this.getYear(this.currentValue)===i.getFullYear()&&(t.month[n]=i.getMonth()+1,this.getMonth(this.currentValue)===i.getMonth()+1&&(t.date[n]=i.getDate(),this.getDate(this.currentValue)===i.getDate()&&(t.hour[n]=i.getHours(),this.getHour(this.currentValue)===i.getHours()&&(t.min[n]=i.getMinutes()))))},isDateString:function(t){return/\\d{4}(\\-|\\/|.)\\d{1,2}\\1\\d{1,2}/.test(t)},getYear:function(t){return this.isDateString(t)?t.split(\" \")[0].split(/-|\\/|\\./)[0]:t.getFullYear()},getMonth:function(t){return this.isDateString(t)?t.split(\" \")[0].split(/-|\\/|\\./)[1]:t.getMonth()+1},getDate:function(t){return this.isDateString(t)?t.split(\" \")[0].split(/-|\\/|\\./)[2]:t.getDate()},getHour:function(t){if(this.isDateString(t)){var e=t.split(\" \")[1]||\"00:00:00\";return e.split(\":\")[0]}return t.getHours()},getMinute:function(t){if(this.isDateString(t)){var e=t.split(\" \")[1]||\"00:00:00\";return e.split(\":\")[1]}return t.getMinutes()},confirm:function(){this.visible=!1,this.$emit(\"confirm\",this.currentValue)},handleValueChange:function(){this.$emit(\"input\",this.currentValue)}},computed:{rims:function(){if(!this.currentValue)return{year:[],month:[],date:[],hour:[],min:[]};var t;return\"time\"===this.type?t={hour:[this.startHour,this.endHour],min:[0,59]}:(t={year:[this.startDate.getFullYear(),this.endDate.getFullYear()],month:[1,12],date:[1,this.getMonthEndDay(this.getYear(this.currentValue),this.getMonth(this.currentValue))],hour:[0,23],min:[0,59]},this.rimDetect(t,\"start\"),this.rimDetect(t,\"end\"),t)},typeStr:function(){return\"time\"===this.type?\"Hm\":\"date\"===this.type?\"YMD\":\"YMDHm\"}},watch:{value:function(t){this.currentValue=t},rims:function(){this.generateSlots()},visible:function(t){this.$emit(\"visible-change\",t)}},mounted:function(){this.currentValue=this.value,this.value||(this.type.indexOf(\"date\")>-1?this.currentValue=this.startDate:this.currentValue=(\"0\"+this.startHour).slice(-2)+\":00\"),this.generateSlots()}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(2),a=n(10);e.default={name:\"mt-field\",data:function(){return{active:!1,currentValue:this.value}},directives:{Clickoutside:a.a},props:{type:{type:String,default:\"text\"},rows:String,label:String,placeholder:String,readonly:Boolean,disabled:Boolean,disableClear:Boolean,state:{type:String,default:\"default\"},value:{},attr:Object},components:{XCell:i.a},methods:{doCloseActive:function(){this.active=!1},handleInput:function(t){this.currentValue=t.target.value},handleClear:function(){this.disabled||this.readonly||(this.currentValue=\"\")}},watch:{value:function(t){this.currentValue=t},currentValue:function(t){this.$emit(\"input\",t)},attr:{immediate:!0,handler:function(t){var e=this;this.$nextTick(function(){var n=[e.$refs.input,e.$refs.textarea];n.forEach(function(e){e&&t&&Object.keys(t).map(function(n){return e.setAttribute(n,t[n])})})})}}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-header\",props:{fixed:Boolean,title:String}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-index-list\",props:{height:Number,showIndicator:{type:Boolean,default:!0}},data:function(){return{sections:[],navWidth:0,indicatorTime:null,moving:!1,firstSection:null,currentIndicator:\"\",currentHeight:this.height,navOffsetX:0}},watch:{sections:function(){this.init()},height:function(t){t&&(this.currentHeight=t)}},methods:{init:function(){var t=this;this.$nextTick(function(){t.navWidth=t.$refs.nav.clientWidth});var e=this.$refs.content.getElementsByTagName(\"li\");e.length>0&&(this.firstSection=e[0])},handleTouchStart:function(t){\"LI\"===t.target.tagName&&(this.navOffsetX=t.changedTouches[0].clientX,this.scrollList(t.changedTouches[0].clientY),this.indicatorTime&&clearTimeout(this.indicatorTime),this.moving=!0,window.addEventListener(\"touchmove\",this.handleTouchMove),window.addEventListener(\"touchend\",this.handleTouchEnd))},handleTouchMove:function(t){t.preventDefault(),this.scrollList(t.changedTouches[0].clientY)},handleTouchEnd:function(){var t=this;this.indicatorTime=setTimeout(function(){t.moving=!1,t.currentIndicator=\"\"},500),window.removeEventListener(\"touchmove\",this.handleTouchMove),window.removeEventListener(\"touchend\",this.handleTouchEnd)},scrollList:function(t){var e=document.elementFromPoint(this.navOffsetX,t);if(e&&e.classList.contains(\"mint-indexlist-navitem\")){this.currentIndicator=e.innerText;var n,i=this.sections.filter(function(t){return t.index===e.innerText});i.length>0&&(n=i[0].$el,this.$refs.content.scrollTop=n.getBoundingClientRect().top-this.firstSection.getBoundingClientRect().top)}}},mounted:function(){var t=this;this.currentHeight||(window.scrollTo(0,0),requestAnimationFrame(function(){t.currentHeight=document.documentElement.clientHeight-t.$refs.content.getBoundingClientRect().top})),this.init()}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-index-section\",props:{index:{type:String,required:!0}},mounted:function(){this.$parent.sections.push(this)},beforeDestroy:function(){var t=this.$parent.sections.indexOf(this);t>-1&&this.$parent.sections.splice(t,1)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(9);e.default={data:function(){return{visible:!1}},components:{Spinner:i.a},computed:{convertedSpinnerType:function(){switch(this.spinnerType){case\"double-bounce\":return 1;case\"triple-bounce\":return 2;case\"fading-circle\":return 3;default:return 0}}},props:{text:String,spinnerType:{type:String,default:\"snake\"}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(13),a=n.n(i);e.default={name:\"mt-loadmore\",components:{spinner:a.a},props:{maxDistance:{type:Number,default:0},autoFill:{type:Boolean,default:!0},distanceIndex:{type:Number,default:2},topPullText:{type:String,default:\"下拉刷新\"},topDropText:{type:String,default:\"释放更新\"},topLoadingText:{type:String,default:\"加载中...\"},topDistance:{type:Number,default:70},topMethod:{type:Function},bottomPullText:{type:String,default:\"上拉刷新\"},bottomDropText:{type:String,default:\"释放更新\"},bottomLoadingText:{type:String,default:\"加载中...\"},bottomDistance:{type:Number,default:70},bottomMethod:{type:Function},bottomAllLoaded:{type:Boolean,default:!1}},data:function(){return{translate:0,scrollEventTarget:null,containerFilled:!1,topText:\"\",topDropped:!1,bottomText:\"\",bottomDropped:!1,bottomReached:!1,direction:\"\",startY:0,startScrollTop:0,currentY:0,topStatus:\"\",bottomStatus:\"\"}},computed:{transform:function(){return 0===this.translate?null:\"translate3d(0, \"+this.translate+\"px, 0)\"}},watch:{topStatus:function(t){switch(this.$emit(\"top-status-change\",t),t){case\"pull\":this.topText=this.topPullText;break;case\"drop\":this.topText=this.topDropText;break;case\"loading\":this.topText=this.topLoadingText}},bottomStatus:function(t){switch(this.$emit(\"bottom-status-change\",t),t){case\"pull\":this.bottomText=this.bottomPullText;break;case\"drop\":this.bottomText=this.bottomDropText;break;case\"loading\":this.bottomText=this.bottomLoadingText}}},methods:{onTopLoaded:function(){var t=this;this.translate=0,setTimeout(function(){t.topStatus=\"pull\"},200)},onBottomLoaded:function(){var t=this;this.bottomStatus=\"pull\",this.bottomDropped=!1,this.$nextTick(function(){t.scrollEventTarget===window?document.body.scrollTop+=50:t.scrollEventTarget.scrollTop+=50,t.translate=0}),this.bottomAllLoaded||this.containerFilled||this.fillContainer()},getScrollEventTarget:function(t){for(var e=t;e&&\"HTML\"!==e.tagName&&\"BODY\"!==e.tagName&&1===e.nodeType;){var n=document.defaultView.getComputedStyle(e).overflowY;if(\"scroll\"===n||\"auto\"===n)return e;e=e.parentNode}return window},getScrollTop:function(t){return t===window?Math.max(window.pageYOffset||0,document.documentElement.scrollTop):t.scrollTop},bindTouchEvents:function(){this.$el.addEventListener(\"touchstart\",this.handleTouchStart),this.$el.addEventListener(\"touchmove\",this.handleTouchMove),this.$el.addEventListener(\"touchend\",this.handleTouchEnd)},init:function(){this.topStatus=\"pull\",this.bottomStatus=\"pull\",this.topText=this.topPullText,this.scrollEventTarget=this.getScrollEventTarget(this.$el),\"function\"==typeof this.bottomMethod&&(this.fillContainer(),this.bindTouchEvents()),\"function\"==typeof this.topMethod&&this.bindTouchEvents()},fillContainer:function(){var t=this;this.autoFill&&this.$nextTick(function(){t.scrollEventTarget===window?t.containerFilled=t.$el.getBoundingClientRect().bottom>=document.documentElement.getBoundingClientRect().bottom:t.containerFilled=t.$el.getBoundingClientRect().bottom>=t.scrollEventTarget.getBoundingClientRect().bottom,t.containerFilled||(t.bottomStatus=\"loading\",t.bottomMethod())})},checkBottomReached:function(){return this.scrollEventTarget===window?document.body.scrollTop+document.documentElement.clientHeight>=document.body.scrollHeight:this.$el.getBoundingClientRect().bottom<=this.scrollEventTarget.getBoundingClientRect().bottom+1},handleTouchStart:function(t){this.startY=t.touches[0].clientY,this.startScrollTop=this.getScrollTop(this.scrollEventTarget),this.bottomReached=!1,\"loading\"!==this.topStatus&&(this.topStatus=\"pull\",this.topDropped=!1),\"loading\"!==this.bottomStatus&&(this.bottomStatus=\"pull\",this.bottomDropped=!1)},handleTouchMove:function(t){if(!(this.startY<this.$el.getBoundingClientRect().top&&this.startY>this.$el.getBoundingClientRect().bottom)){this.currentY=t.touches[0].clientY;var e=(this.currentY-this.startY)/this.distanceIndex;this.direction=e>0?\"down\":\"up\",\"function\"==typeof this.topMethod&&\"down\"===this.direction&&0===this.getScrollTop(this.scrollEventTarget)&&\"loading\"!==this.topStatus&&(t.preventDefault(),t.stopPropagation(),this.maxDistance>0?this.translate=e<=this.maxDistance?e-this.startScrollTop:this.translate:this.translate=e-this.startScrollTop,this.translate<0&&(this.translate=0),this.topStatus=this.translate>=this.topDistance?\"drop\":\"pull\"),\"up\"===this.direction&&(this.bottomReached=this.bottomReached||this.checkBottomReached()),\"function\"==typeof this.bottomMethod&&\"up\"===this.direction&&this.bottomReached&&\"loading\"!==this.bottomStatus&&!this.bottomAllLoaded&&(t.preventDefault(),t.stopPropagation(),this.maxDistance>0?this.translate=Math.abs(e)<=this.maxDistance?this.getScrollTop(this.scrollEventTarget)-this.startScrollTop+e:this.translate:this.translate=this.getScrollTop(this.scrollEventTarget)-this.startScrollTop+e,this.translate>0&&(this.translate=0),this.bottomStatus=-this.translate>=this.bottomDistance?\"drop\":\"pull\"),this.$emit(\"translate-change\",this.translate)}},handleTouchEnd:function(){\"down\"===this.direction&&0===this.getScrollTop(this.scrollEventTarget)&&this.translate>0&&(this.topDropped=!0,\"drop\"===this.topStatus?(this.translate=\"50\",this.topStatus=\"loading\",this.topMethod()):(this.translate=\"0\",this.topStatus=\"pull\")),\"up\"===this.direction&&this.bottomReached&&this.translate<0&&(this.bottomDropped=!0,this.bottomReached=!1,\"drop\"===this.bottomStatus?(this.translate=\"-50\",this.bottomStatus=\"loading\",this.bottomMethod()):(this.translate=\"0\",this.bottomStatus=\"pull\")),this.$emit(\"translate-change\",this.translate),this.direction=\"\"}},mounted:function(){this.init()}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(6),a=\"确定\",s=\"取消\";e.default={mixins:[i.a],props:{modal:{default:!0},showClose:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!1},closeOnClickModal:{default:!0},closeOnPressEscape:{default:!0},inputType:{type:String,default:\"text\"}},computed:{confirmButtonClasses:function(){var t=\"mint-msgbox-btn mint-msgbox-confirm \"+this.confirmButtonClass;return this.confirmButtonHighlight&&(t+=\" mint-msgbox-confirm-highlight\"),t},cancelButtonClasses:function(){var t=\"mint-msgbox-btn mint-msgbox-cancel \"+this.cancelButtonClass;return this.cancelButtonHighlight&&(t+=\" mint-msgbox-cancel-highlight\"),t}},methods:{doClose:function(){var t=this;this.value=!1,this._closing=!0,this.onClose&&this.onClose(),setTimeout(function(){t.modal&&\"hidden\"!==t.bodyOverflow&&(document.body.style.overflow=t.bodyOverflow,document.body.style.paddingRight=t.bodyPaddingRight),t.bodyOverflow=null,t.bodyPaddingRight=null},200),this.opened=!1,this.transition||this.doAfterClose()},handleAction:function(t){if(\"prompt\"!==this.$type||\"confirm\"!==t||this.validate()){var e=this.callback;this.value=!1,e(t)}},validate:function(){if(\"prompt\"===this.$type){var t=this.inputPattern;if(t&&!t.test(this.inputValue||\"\"))return this.editorErrorMessage=this.inputErrorMessage||\"输入的数据不合法!\",this.$refs.input.classList.add(\"invalid\"),!1;var e=this.inputValidator;if(\"function\"==typeof e){var n=e(this.inputValue);if(n===!1)return this.editorErrorMessage=this.inputErrorMessage||\"输入的数据不合法!\",\nthis.$refs.input.classList.add(\"invalid\"),!1;if(\"string\"==typeof n)return this.editorErrorMessage=n,!1}}return this.editorErrorMessage=\"\",this.$refs.input.classList.remove(\"invalid\"),!0},handleInputType:function(t){\"range\"!==t&&this.$refs.input&&(this.$refs.input.type=t)}},watch:{inputValue:function(){\"prompt\"===this.$type&&this.validate()},value:function(t){var e=this;this.handleInputType(this.inputType),t&&\"prompt\"===this.$type&&setTimeout(function(){e.$refs.input&&e.$refs.input.focus()},500)},inputType:function(t){this.handleInputType(t)}},data:function(){return{title:\"\",message:\"\",type:\"\",showInput:!1,inputValue:null,inputPlaceholder:\"\",inputPattern:null,inputValidator:null,inputErrorMessage:\"\",showConfirmButton:!0,showCancelButton:!1,confirmButtonText:a,cancelButtonText:s,confirmButtonClass:\"\",confirmButtonDisabled:!1,cancelButtonClass:\"\",editorErrorMessage:null,callback:null}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-navbar\",props:{fixed:Boolean,value:{}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-palette-button\",data:function(){return{transforming:!1,expanded:!1}},props:{content:{type:String,default:\"\"},offset:{type:Number,default:Math.PI/4},direction:{type:String,default:\"lt\"},radius:{type:Number,default:90},mainButtonStyle:{type:String,default:\"\"}},methods:{toggle:function(t){this.transforming||(this.expanded?this.collapse(t):this.expand(t))},onMainAnimationEnd:function(t){this.transforming=!1,this.$emit(\"expanded\")},expand:function(t){this.expanded=!0,this.transforming=!0,this.$emit(\"expand\",t)},collapse:function(t){this.expanded=!1,this.$emit(\"collapse\",t)}},mounted:function(){var t=this;this.slotChildren=[];for(var e=0;e<this.$slots.default.length;e++)3!==t.$slots.default[e].elm.nodeType&&t.slotChildren.push(t.$slots.default[e]);for(var n=\"\",i=Math.PI*(3+Math.max([\"lt\",\"t\",\"rt\",\"r\",\"rb\",\"b\",\"lb\",\"l\"].indexOf(this.direction),0))/4,a=0;a<this.slotChildren.length;a++){var s=(Math.PI-2*t.offset)/(t.slotChildren.length-1)*a+t.offset+i,r=(Math.cos(s)*t.radius).toFixed(2),o=(Math.sin(s)*t.radius).toFixed(2),l=\".expand .palette-button-\"+t._uid+\"-sub-\"+a+\"{transform:translate(\"+r+\"px,\"+o+\"px) rotate(720deg);transition-delay:\"+.03*a+\"s}\";n+=l,t.slotChildren[a].elm.className+=\" palette-button-\"+t._uid+\"-sub-\"+a}this.styleNode=document.createElement(\"style\"),this.styleNode.type=\"text/css\",this.styleNode.rel=\"stylesheet\",this.styleNode.title=\"palette button style\",this.styleNode.appendChild(document.createTextNode(n)),document.getElementsByTagName(\"head\")[0].appendChild(this.styleNode)},destroyed:function(){this.styleNode&&this.styleNode.parentNode.removeChild(this.styleNode)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(74),a=n(75),s=n(3),r=n(90),o=n(1),l=n.n(o);l.a.prototype.$isServer||n(128);var u=function(t,e){if(t){var n=a.a.transformProperty;t.style[n]=t.style[n].replace(/rotateX\\(.+?deg\\)/gi,\"\")+\" rotateX(\"+e+\"deg)\"}},c=36,d={3:-45,5:-20,7:-15};e.default={name:\"picker-slot\",props:{values:{type:Array,default:function(){return[]}},value:{},visibleItemCount:{type:Number,default:5},valueKey:String,rotateEffect:{type:Boolean,default:!1},divider:{type:Boolean,default:!1},textAlign:{type:String,default:\"center\"},flex:{},className:{},content:{},itemHeight:{type:Number,default:c},defaultIndex:{type:Number,default:0,require:!1}},data:function(){return{currentValue:this.value,mutatingValues:this.values,dragging:!1,animationFrameId:null}},mixins:[r.a],computed:{flexStyle:function(){return{flex:this.flex,\"-webkit-box-flex\":this.flex,\"-moz-box-flex\":this.flex,\"-ms-flex\":this.flex}},classNames:function(){var t=\"picker-slot-\",e=[];this.rotateEffect&&e.push(t+\"absolute\");var n=this.textAlign||\"center\";return e.push(t+n),this.divider&&e.push(t+\"divider\"),this.className&&e.push(this.className),e.join(\" \")},contentHeight:function(){return this.itemHeight*this.visibleItemCount},valueIndex:function(){var t=this,e=this.valueKey;if(this.currentValue instanceof Object){for(var n=0,i=this.mutatingValues.length;n<i;n++)if(t.currentValue[e]===t.mutatingValues[n][e])return n;return-1}return this.mutatingValues.indexOf(this.currentValue)},dragRange:function(){var t=this.mutatingValues,e=this.visibleItemCount,n=this.itemHeight;return[-n*(t.length-Math.ceil(e/2)),n*Math.floor(e/2)]},minTranslateY:function(){return this.itemHeight*(Math.ceil(this.visibleItemCount/2)-this.mutatingValues.length)},maxTranslateY:function(){return this.itemHeight*Math.floor(this.visibleItemCount/2)}},methods:{value2Translate:function(t){var e=this.mutatingValues,n=e.indexOf(t),i=Math.floor(this.visibleItemCount/2),a=this.itemHeight;if(n!==-1)return(n-i)*-a},translate2Value:function(t){var e=this.itemHeight;t=Math.round(t/e)*e;var n=-(t-Math.floor(this.visibleItemCount/2)*e)/e;return this.mutatingValues[n]},updateRotate:function(t,e){var i=this;if(!this.divider){var r=this.dragRange,o=this.$refs.wrapper;e||(e=o.querySelectorAll(\".picker-item\")),void 0===t&&(t=a.a.getElementTranslate(o).top);var l=Math.ceil(this.visibleItemCount/2),c=d[this.visibleItemCount]||-20;[].forEach.call(e,function(e,a){var o=a*i.itemHeight,d=r[1]-t,h=o-d,f=h/i.itemHeight,p=c*f;p>180&&(p=180),p<-180&&(p=-180),u(e,p),Math.abs(f)>l?n.i(s.a)(e,\"picker-item-far\"):n.i(s.b)(e,\"picker-item-far\")})}},planUpdateRotate:function(){var t=this,e=this.$refs.wrapper;cancelAnimationFrame(this.animationFrameId),this.animationFrameId=requestAnimationFrame(function(){t.updateRotate()}),n.i(s.c)(e,a.a.transitionEndProperty,function(){cancelAnimationFrame(t.animationFrameId),t.animationFrameId=null})},initEvents:function(){var t,e,s,r=this,o=this.$refs.wrapper,l={};n.i(i.a)(o,{start:function(t){cancelAnimationFrame(r.animationFrameId),r.animationFrameId=null,l={range:r.dragRange,start:new Date,startLeft:t.pageX,startTop:t.pageY,startTranslateTop:a.a.getElementTranslate(o).top},s=o.querySelectorAll(\".picker-item\")},drag:function(n){r.dragging=!0,l.left=n.pageX,l.top=n.pageY;var i=l.top-l.startTop,u=l.startTranslateTop+i;a.a.translateElement(o,null,u),t=u-e||u,e=u,r.rotateEffect&&r.updateRotate(e,s)},end:function(e){r.dragging=!1;var n,i,s=7,u=a.a.getElementTranslate(o).top,c=new Date-l.start,d=Math.abs(l.startTranslateTop-u),h=r.itemHeight,f=r.visibleItemCount;d<6&&(n=r.$el.getBoundingClientRect(),i=Math.floor((e.clientY-(n.top+(f-1)*h/2))/h)*h,i>r.maxTranslateY&&(i=r.maxTranslateY),t=0,u-=i);var p;c<300&&(p=u+t*s);var m=l.range;r.$nextTick(function(){var t;t=p?Math.round(p/h)*h:Math.round(u/h)*h,t=Math.max(Math.min(t,m[1]),m[0]),a.a.translateElement(o,null,t),r.currentValue=r.translate2Value(t),r.rotateEffect&&r.planUpdateRotate()}),l={}}})},doOnValueChange:function(){var t=this.currentValue,e=this.$refs.wrapper;a.a.translateElement(e,null,this.value2Translate(t))},doOnValuesChange:function(){var t=this,e=this.$el,n=e.querySelectorAll(\".picker-item\");[].forEach.call(n,function(e,n){a.a.translateElement(e,null,t.itemHeight*n)}),this.rotateEffect&&this.planUpdateRotate()}},mounted:function(){this.ready=!0,this.divider||(this.initEvents(),this.doOnValueChange()),this.rotateEffect&&this.doOnValuesChange()},watch:{values:function(t){this.mutatingValues=t},mutatingValues:function(t){var e=this;this.valueIndex===-1&&(this.currentValue=(t||[])[0]),this.rotateEffect&&this.$nextTick(function(){e.doOnValuesChange()})},currentValue:function(t){this.doOnValueChange(),this.rotateEffect&&this.planUpdateRotate(),this.$emit(\"input\",t),this.dispatch(\"picker\",\"slotValueChange\",this)},defaultIndex:function(t){void 0!==this.mutatingValues[t]&&this.mutatingValues.length>=t+1&&(this.currentValue=this.mutatingValues[t])}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-picker\",componentName:\"picker\",props:{slots:{type:Array},showToolbar:{type:Boolean,default:!1},visibleItemCount:{type:Number,default:5},valueKey:String,rotateEffect:{type:Boolean,default:!1},itemHeight:{type:Number,default:36}},created:function(){this.$on(\"slotValueChange\",this.slotValueChange),this.slotValueChange()},methods:{slotValueChange:function(){this.$emit(\"change\",this,this.values)},getSlot:function(t){var e,n=this.slots||[],i=0,a=this.$children.filter(function(t){return\"picker-slot\"===t.$options.name});return n.forEach(function(n,s){n.divider||(t===i&&(e=a[s]),i++)}),e},getSlotValue:function(t){var e=this.getSlot(t);return e?e.currentValue:null},setSlotValue:function(t,e){var n=this.getSlot(t);n&&(n.currentValue=e)},getSlotValues:function(t){var e=this.getSlot(t);return e?e.mutatingValues:null},setSlotValues:function(t,e){var n=this.getSlot(t);n&&(n.mutatingValues=e)},getValues:function(){return this.values},setValues:function(t){var e=this,n=this.slotCount;if(t=t||[],n!==t.length)throw new Error(\"values length is not equal slot count.\");t.forEach(function(t,n){e.setSlotValue(n,t)})}},computed:{values:{get:function(){var t=this.slots||[],e=[],n=0;return t.forEach(function(t){t.divider||(t.valueIndex=n++,e[t.valueIndex]=(t.values||[])[t.defaultIndex||0])}),e}},slotCount:function(){var t=this.slots||[],e=0;return t.forEach(function(t){t.divider||e++}),e}},components:{PickerSlot:n(147)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(6),a=n(1),s=n.n(a);s.a.prototype.$isServer||n(12),e.default={name:\"mt-popup\",mixins:[i.a],props:{modal:{default:!0},modalFade:{default:!1},lockScroll:{default:!1},closeOnClickModal:{default:!0},popupTransition:{type:String,default:\"popup-slide\"},position:{type:String,default:\"\"}},data:function(){return{currentValue:!1,currentTransition:this.popupTransition}},watch:{currentValue:function(t){this.$emit(\"input\",t)},value:function(t){this.currentValue=t}},beforeMount:function(){\"popup-fade\"!==this.popupTransition&&(this.currentTransition=\"popup-slide-\"+this.position)},mounted:function(){this.value&&(this.rendered=!0,this.currentValue=!0,this.open())}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-progress\",props:{value:Number,barHeight:{type:Number,default:3}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(2);e.default={name:\"mt-radio\",props:{title:String,align:String,options:{type:Array,required:!0},value:String},data:function(){return{currentValue:this.value}},watch:{value:function(t){this.currentValue=t},currentValue:function(t){this.$emit(\"input\",t)}},components:{XCell:i.a}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(79);e.default={name:\"mt-range\",props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},disabled:{type:Boolean,default:!1},value:{type:Number},barHeight:{type:Number,default:1}},computed:{progress:function(){var t=this.value;return\"undefined\"==typeof t||null===t?0:Math.floor((t-this.min)/(this.max-this.min)*100)}},mounted:function(){var t=this,e=this.$refs.thumb,a=this.$refs.content,s=function(){var t=a.getBoundingClientRect(),n=e.getBoundingClientRect();return{left:n.left-t.left,top:n.top-t.top,thumbBoxLeft:n.left}},r={};n.i(i.a)(e,{start:function(e){if(!t.disabled){var n=s(),i=e.clientX-n.thumbBoxLeft;r={thumbStartLeft:n.left,thumbStartTop:n.top,thumbClickDetalX:i}}},drag:function(e){if(!t.disabled){var n=a.getBoundingClientRect(),i=e.pageX-n.left-r.thumbStartLeft-r.thumbClickDetalX,s=Math.ceil((t.max-t.min)/t.step),o=r.thumbStartLeft+i-(r.thumbStartLeft+i)%(n.width/s),l=o/n.width;l<0?l=0:l>1&&(l=1),t.$emit(\"input\",Math.round(t.min+l*(t.max-t.min)))}},end:function(){t.disabled||(t.$emit(\"change\",t.value),r={})}})}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(2);e.default={name:\"mt-search\",data:function(){return{visible:!1,currentValue:this.value}},components:{XCell:i.a},watch:{currentValue:function(t){this.$emit(\"input\",t)},value:function(t){this.currentValue=t}},props:{value:String,autofocus:Boolean,show:Boolean,cancelText:{default:\"取消\"},placeholder:{default:\"搜索\"},result:Array},mounted:function(){this.autofocus&&this.$refs.input.focus()}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=[\"snake\",\"double-bounce\",\"triple-bounce\",\"fading-circle\"],a=function(t){return\"[object Number]\"==={}.toString.call(t)?(i.length<=t&&(console.warn(\"'\"+t+\"' spinner not found, use the default spinner.\"),t=0),i[t]):(i.indexOf(t)===-1&&(console.warn(\"'\"+t+\"' spinner not found, use the default spinner.\"),t=i[0]),t)};e.default={name:\"mt-spinner\",computed:{spinner:function(){return\"spinner-\"+a(this.type)}},components:{SpinnerSnake:n(156),SpinnerDoubleBounce:n(155),SpinnerTripleBounce:n(157),SpinnerFadingCircle:n(13)},props:{type:{default:0},size:{type:Number,default:28},color:{type:String,default:\"#ccc\"}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={computed:{spinnerColor:function(){return this.color||this.$parent.color||\"#ccc\"},spinnerSize:function(){return(this.size||this.$parent.size||28)+\"px\"}},props:{size:Number,color:String}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(5),a=n.n(i);e.default={name:\"double-bounce\",mixins:[a.a]}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(5),a=n.n(i);e.default={name:\"fading-circle\",mixins:[a.a],created:function(){if(!this.$isServer){this.styleNode=document.createElement(\"style\");var t=\".circle-color-\"+this._uid+\" > div::before { background-color: \"+this.spinnerColor+\"; }\";this.styleNode.type=\"text/css\",this.styleNode.rel=\"stylesheet\",this.styleNode.title=\"fading circle style\",document.getElementsByTagName(\"head\")[0].appendChild(this.styleNode),this.styleNode.appendChild(document.createTextNode(t))}},destroyed:function(){this.styleNode&&this.styleNode.parentNode.removeChild(this.styleNode)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(5),a=n.n(i);e.default={name:\"snake\",mixins:[a.a]}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(5),a=n.n(i);e.default={name:\"triple-bounce\",mixins:[a.a],computed:{spinnerSize:function(){return(this.size||this.$parent.size||28)/3+\"px\"},bounceStyle:function(){return{width:this.spinnerSize,height:this.spinnerSize,backgroundColor:this.spinnerColor}}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-swipe-item\",mounted:function(){this.$parent&&this.$parent.swipeItemCreated(this)},destroyed:function(){this.$parent&&this.$parent.swipeItemDestroyed(this)}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(3);e.default={name:\"mt-swipe\",created:function(){this.dragState={}},data:function(){return{ready:!1,dragging:!1,userScrolling:!1,animating:!1,index:0,pages:[],timer:null,reInitTimer:null,noDrag:!1,isDone:!1}},props:{speed:{type:Number,default:300},defaultIndex:{type:Number,default:0},auto:{type:Number,default:3e3},continuous:{type:Boolean,default:!0},showIndicators:{type:Boolean,default:!0},noDragWhenSingle:{type:Boolean,default:!0},prevent:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1}},watch:{index:function(t){this.$emit(\"change\",t)}},methods:{swipeItemCreated:function(){var t=this;this.ready&&(clearTimeout(this.reInitTimer),this.reInitTimer=setTimeout(function(){t.reInitPages()},100))},swipeItemDestroyed:function(){var t=this;this.ready&&(clearTimeout(this.reInitTimer),this.reInitTimer=setTimeout(function(){t.reInitPages()},100))},rafTranslate:function(t,e,n,i,a){function s(){return Math.abs(o-n)<.5?(this.animating=!1,o=n,t.style.webkitTransform=\"\",a&&(a.style.webkitTransform=\"\"),cancelAnimationFrame(l),void(i&&i())):(o=r*o+(1-r)*n,t.style.webkitTransform=\"translate3d(\"+o+\"px, 0, 0)\",a&&(a.style.webkitTransform=\"translate3d(\"+(o-n)+\"px, 0, 0)\"),void(l=requestAnimationFrame(s.bind(this))))}var r=.88;this.animating=!0;var o=e,l=0;s.call(this)},translate:function(t,e,a,s){var r=arguments,o=this;if(a){this.animating=!0,t.style.webkitTransition=\"-webkit-transform \"+a+\"ms ease-in-out\",setTimeout(function(){t.style.webkitTransform=\"translate3d(\"+e+\"px, 0, 0)\"},50);var l=!1,u=function(){l||(l=!0,o.animating=!1,t.style.webkitTransition=\"\",t.style.webkitTransform=\"\",s&&s.apply(o,r))};n.i(i.c)(t,\"webkitTransitionEnd\",u),setTimeout(u,a+100)}else t.style.webkitTransition=\"\",t.style.webkitTransform=\"translate3d(\"+e+\"px, 0, 0)\"},reInitPages:function(){var t=this.$children;this.noDrag=1===t.length&&this.noDragWhenSingle;var e=[],a=Math.floor(this.defaultIndex),s=a>=0&&a<t.length?a:0;this.index=s,t.forEach(function(t,a){e.push(t.$el),n.i(i.b)(t.$el,\"is-active\"),a===s&&n.i(i.a)(t.$el,\"is-active\")}),this.pages=e},doAnimate:function(t,e){var a=this;if(0!==this.$children.length&&(e||!(this.$children.length<2))){var s,r,o,l,u,c,d=this.speed||300,h=this.index,f=this.pages,p=f.length;e?(s=e.prevPage,o=e.currentPage,r=e.nextPage,l=e.pageWidth,u=e.offsetLeft,c=e.speedX):(l=this.$el.clientWidth,o=f[h],s=f[h-1],r=f[h+1],this.continuous&&f.length>1&&(s||(s=f[f.length-1]),r||(r=f[0])),s&&(s.style.display=\"block\",this.translate(s,-l)),r&&(r.style.display=\"block\",this.translate(r,l)));var m,v=this.$children[h].$el;\"prev\"===t?(h>0&&(m=h-1),this.continuous&&0===h&&(m=p-1)):\"next\"===t&&(h<p-1&&(m=h+1),this.continuous&&h===p-1&&(m=0));var g=function(){if(void 0!==m){var t=a.$children[m].$el;n.i(i.b)(v,\"is-active\"),n.i(i.a)(t,\"is-active\"),a.index=m}a.isDone&&a.end(),s&&(s.style.display=\"\"),r&&(r.style.display=\"\")};setTimeout(function(){\"next\"===t?(a.isDone=!0,a.before(o),c?a.rafTranslate(o,u,-l,g,r):(a.translate(o,-l,d,g),r&&a.translate(r,0,d))):\"prev\"===t?(a.isDone=!0,a.before(o),c?a.rafTranslate(o,u,l,g,s):(a.translate(o,l,d,g),s&&a.translate(s,0,d))):(a.isDone=!1,a.translate(o,0,d,g),\"undefined\"!=typeof u?(s&&u>0&&a.translate(s,l*-1,d),r&&u<0&&a.translate(r,l,d)):(s&&a.translate(s,l*-1,d),r&&a.translate(r,l,d)))},10)}},next:function(){this.doAnimate(\"next\")},prev:function(){this.doAnimate(\"prev\")},before:function(){this.$emit(\"before\",this.index)},end:function(){this.$emit(\"end\",this.index)},doOnTouchStart:function(t){if(!this.noDrag){var e=this.$el,n=this.dragState,i=t.touches[0];n.startTime=new Date,n.startLeft=i.pageX,n.startTop=i.pageY,n.startTopAbsolute=i.clientY,n.pageWidth=e.offsetWidth,n.pageHeight=e.offsetHeight;var a=this.$children[this.index-1],s=this.$children[this.index],r=this.$children[this.index+1];this.continuous&&this.pages.length>1&&(a||(a=this.$children[this.$children.length-1]),r||(r=this.$children[0])),n.prevPage=a?a.$el:null,n.dragPage=s?s.$el:null,n.nextPage=r?r.$el:null,n.prevPage&&(n.prevPage.style.display=\"block\"),n.nextPage&&(n.nextPage.style.display=\"block\")}},doOnTouchMove:function(t){if(!this.noDrag){var e=this.dragState,n=t.touches[0];e.speedX=n.pageX-e.currentLeft,e.currentLeft=n.pageX,e.currentTop=n.pageY,e.currentTopAbsolute=n.clientY;var i=e.currentLeft-e.startLeft,a=e.currentTopAbsolute-e.startTopAbsolute,s=Math.abs(i),r=Math.abs(a);if(s<5||s>=5&&r>=1.73*s)return void(this.userScrolling=!0);this.userScrolling=!1,t.preventDefault(),i=Math.min(Math.max(-e.pageWidth+1,i),e.pageWidth-1);var o=i<0?\"next\":\"prev\";e.prevPage&&\"prev\"===o&&this.translate(e.prevPage,i-e.pageWidth),this.translate(e.dragPage,i),e.nextPage&&\"next\"===o&&this.translate(e.nextPage,i+e.pageWidth)}},doOnTouchEnd:function(){if(!this.noDrag){var t=this.dragState,e=new Date-t.startTime,n=null,i=t.currentLeft-t.startLeft,a=t.currentTop-t.startTop,s=t.pageWidth,r=this.index,o=this.pages.length;if(e<300){var l=Math.abs(i)<5&&Math.abs(a)<5;(isNaN(i)||isNaN(a))&&(l=!0),l&&this.$children[this.index].$emit(\"tap\")}e<300&&void 0===t.currentLeft||((e<300||Math.abs(i)>s/2)&&(n=i<0?\"next\":\"prev\"),this.continuous||(0===r&&\"prev\"===n||r===o-1&&\"next\"===n)&&(n=null),this.$children.length<2&&(n=null),this.doAnimate(n,{offsetLeft:i,pageWidth:t.pageWidth,prevPage:t.prevPage,currentPage:t.dragPage,nextPage:t.nextPage,speedX:t.speedX}),this.dragState={})}},initTimer:function(){var t=this;this.auto>0&&!this.timer&&(this.timer=setInterval(function(){return!t.continuous&&t.index>=t.pages.length-1?t.clearTimer():void(t.dragging||t.animating||t.next())},this.auto))},clearTimer:function(){clearInterval(this.timer),this.timer=null}},destroyed:function(){this.timer&&this.clearTimer(),this.reInitTimer&&(clearTimeout(this.reInitTimer),this.reInitTimer=null)},mounted:function(){var t=this;this.ready=!0,this.initTimer(),this.reInitPages();var e=this.$el;e.addEventListener(\"touchstart\",function(e){t.prevent&&e.preventDefault(),t.stopPropagation&&e.stopPropagation(),t.animating||(t.dragging=!0,t.userScrolling=!1,t.doOnTouchStart(e))}),e.addEventListener(\"touchmove\",function(e){t.dragging&&(t.timer&&t.clearTimer(),t.doOnTouchMove(e))}),e.addEventListener(\"touchend\",function(e){return t.userScrolling?(t.dragging=!1,void(t.dragState={})):void(t.dragging&&(t.initTimer(),t.doOnTouchEnd(e),t.dragging=!1))})}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-switch\",props:{value:Boolean,disabled:{type:Boolean,default:!1}},computed:{currentValue:{get:function(){return this.value},set:function(t){this.$emit(\"input\",t)}}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-tab-container-item\",props:[\"id\"]}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(3),a=n(15),s=n.n(a);e.default={name:\"mt-tab-container\",props:{value:{},swipeable:Boolean},data:function(){return{start:{x:0,y:0},swiping:!1,activeItems:[],pageWidth:0,currentActive:this.value}},watch:{value:function(t){this.currentActive=t},currentActive:function(t,e){if(this.$emit(\"input\",t),this.swipeable){var n=s()(this.$children,function(t){return t.id===e});this.swipeLeaveTransition(n)}}},mounted:function(){this.swipeable&&(this.wrap=this.$refs.wrap,this.pageWidth=this.wrap.clientWidth,this.limitWidth=this.pageWidth/4)},methods:{swipeLeaveTransition:function(t){var e=this;void 0===t&&(t=0),\"number\"!=typeof this.index&&(this.index=s()(this.$children,function(t){return t.id===e.currentActive}),this.swipeMove(-t*this.pageWidth)),setTimeout(function(){e.wrap.classList.add(\"swipe-transition\"),e.swipeMove(-e.index*e.pageWidth),n.i(i.c)(e.wrap,\"webkitTransitionEnd\",function(t){e.wrap.classList.remove(\"swipe-transition\"),e.wrap.style.webkitTransform=\"\",e.swiping=!1,e.index=null})},0)},swipeMove:function(t){this.wrap.style.webkitTransform=\"translate3d(\"+t+\"px, 0, 0)\",this.swiping=!0},startDrag:function(t){this.swipeable&&(t=t.changedTouches?t.changedTouches[0]:t,this.dragging=!0,this.start.x=t.pageX,this.start.y=t.pageY)},onDrag:function(t){var e=this;if(this.dragging){var n,i=t.changedTouches?t.changedTouches[0]:t,a=i.pageY-this.start.y,r=i.pageX-this.start.x,o=Math.abs(a),l=Math.abs(r);if(n=!(l<5||l>=5&&o>=1.73*l)){t.preventDefault();var u=this.$children.length-1,c=s()(this.$children,function(t){return t.id===e.currentActive}),d=c*this.pageWidth,h=r-d,f=Math.abs(h);if(f>u*this.pageWidth||h>0&&h<this.pageWidth)return void(this.swiping=!1);this.offsetLeft=r,this.index=c,this.swipeMove(h)}}},endDrag:function(){if(this.swiping){this.dragging=!1;var t=this.offsetLeft>0?-1:1,e=Math.abs(this.offsetLeft)>this.limitWidth;if(e){this.index+=t;var n=this.$children[this.index];if(n)return void(this.currentActive=n.id)}this.swipeLeaveTransition()}}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-tab-item\",props:[\"id\"]}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={name:\"mt-tabbar\",props:{fixed:Boolean,value:{}}}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.default={props:{message:String,className:{type:String,default:\"\"},position:{type:String,default:\"middle\"},iconClass:{type:String,default:\"\"}},data:function(){return{visible:!1}},computed:{customClass:function(){var t=[];switch(this.position){case\"top\":t.push(\"is-placetop\");break;case\"bottom\":t.push(\"is-placebottom\");break;default:t.push(\"is-placemiddle\")}return t.push(this.className),t.join(\" \")}}}},function(t,e,n){\"use strict\";var i=n(131),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(132),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(133),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(134),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(136),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(137),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(138),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(139),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(140),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(141),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i,a=n(1),s=n.n(a),r=s.a.extend(n(142));e.a={open:function(t){void 0===t&&(t={}),i||(i=new r({el:document.createElement(\"div\")})),i.visible||(i.text=\"string\"==typeof t?t:t.text||\"\",i.spinnerType=t.spinnerType||\"snake\",document.body.appendChild(i.$el),s.a.nextTick(function(){i.visible=!0}))},close:function(){i&&(i.visible=!1)}}},function(t,e,n){\"use strict\";var i=n(4),a=(n.n(i),n(66));n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s=\"@@InfiniteScroll\",r=function(t,e){var n,i,a,s,r,o=function(){t.apply(s,r),i=n};return function(){if(s=this,r=arguments,n=Date.now(),a&&(clearTimeout(a),a=null),i){var t=e-(n-i);t<0?o():a=setTimeout(function(){o()},t)}else o()}},o=function(t){return t===window?Math.max(window.pageYOffset||0,document.documentElement.scrollTop):t.scrollTop},l=a.a.prototype.$isServer?{}:document.defaultView.getComputedStyle,u=function(t){for(var e=t;e&&\"HTML\"!==e.tagName&&\"BODY\"!==e.tagName&&1===e.nodeType;){var n=l(e).overflowY;if(\"scroll\"===n||\"auto\"===n)return e;e=e.parentNode}return window},c=function(t){return t===window?document.documentElement.clientHeight:t.clientHeight},d=function(t){return t===window?o(window):t.getBoundingClientRect().top+o(window)},h=function(t){for(var e=t.parentNode;e;){if(\"HTML\"===e.tagName)return!0;if(11===e.nodeType)return!1;e=e.parentNode}return!1},f=function(){if(!this.binded){this.binded=!0;var t=this,e=t.el;t.scrollEventTarget=u(e),t.scrollListener=r(p.bind(t),200),t.scrollEventTarget.addEventListener(\"scroll\",t.scrollListener);var n=e.getAttribute(\"infinite-scroll-disabled\"),i=!1;n&&(this.vm.$watch(n,function(e){t.disabled=e,!e&&t.immediateCheck&&p.call(t)}),i=Boolean(t.vm[n])),t.disabled=i;var a=e.getAttribute(\"infinite-scroll-distance\"),s=0;a&&(s=Number(t.vm[a]||a),isNaN(s)&&(s=0)),t.distance=s;var o=e.getAttribute(\"infinite-scroll-immediate-check\"),l=!0;o&&(l=Boolean(t.vm[o])),t.immediateCheck=l,l&&p.call(t);var c=e.getAttribute(\"infinite-scroll-listen-for-event\");c&&t.vm.$on(c,function(){p.call(t)})}},p=function(t){var e=this.scrollEventTarget,n=this.el,i=this.distance;if(t===!0||!this.disabled){var a=o(e),s=a+c(e),r=!1;if(e===n)r=e.scrollHeight-s<=i;else{var l=d(n)-d(e)+n.offsetHeight+a;r=s+i>=l}r&&this.expression&&this.expression()}};e.a={bind:function(t,e,n){t[s]={el:t,vm:n.context,expression:e.value};var i=arguments,a=function(){t[s].vm.$nextTick(function(){h(t)&&f.call(t[s],i),t[s].bindTryCount=0;var e=function(){t[s].bindTryCount>10||(t[s].bindTryCount++,h(t)?f.call(t[s],i):setTimeout(e,50))};e()})};return t[s].vm._isMounted?void a():void t[s].vm.$on(\"hook:mounted\",a)},unbind:function(t){t[s]&&t[s].scrollEventTarget&&t[s].scrollEventTarget.removeEventListener(\"scroll\",t[s].scrollListener)}}},function(t,e,n){\"use strict\";var i=n(65),a=n(4),s=(n.n(a),n(1)),r=n.n(s),o=function(t){t.directive(\"InfiniteScroll\",i.a)};!r.a.prototype.$isServer&&window.Vue&&(window.infiniteScroll=i.a,r.a.use(o)),i.a.install=o,e.a=i.a},function(t,e,n){\"use strict\";var i=n(4),a=(n.n(i),n(68));n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(130),a=n.n(i),s=n(4);n.n(s);e.a=a.a},function(t,e,n){\"use strict\";var i=n(143),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(71);n.d(e,\"a\",function(){return i.a})},function(t,e,n){\"use strict\";var i,a,s=n(1),r=n.n(s),o=n(144),l=n.n(o),u=\"确定\",c=\"取消\",d={title:\"提示\",message:\"\",type:\"\",showInput:!1,showClose:!0,modalFade:!1,lockScroll:!1,closeOnClickModal:!0,inputValue:null,inputPlaceholder:\"\",inputPattern:null,inputValidator:null,inputErrorMessage:\"\",showConfirmButton:!0,showCancelButton:!1,confirmButtonPosition:\"right\",confirmButtonHighlight:!1,cancelButtonHighlight:!1,confirmButtonText:u,cancelButtonText:c,confirmButtonClass:\"\",cancelButtonClass:\"\"},h=function(t){for(var e=arguments,n=1,i=arguments.length;n<i;n++){var a=e[n];for(var s in a)if(a.hasOwnProperty(s)){var r=a[s];void 0!==r&&(t[s]=r)}}return t},f=r.a.extend(l.a),p=[],m=function(t){if(i){var e=i.callback;if(\"function\"==typeof e&&(a.showInput?e(a.inputValue,t):e(t)),i.resolve){var n=i.options.$type;\"confirm\"===n||\"prompt\"===n?\"confirm\"===t?a.showInput?i.resolve({value:a.inputValue,action:t}):i.resolve(t):\"cancel\"===t&&i.reject&&i.reject(t):i.resolve(t)}}},v=function(){a=new f({el:document.createElement(\"div\")}),a.callback=m},g=function(){if(a||v(),(!a.value||a.closeTimer)&&p.length>0){i=p.shift();var t=i.options;for(var e in t)t.hasOwnProperty(e)&&(a[e]=t[e]);void 0===t.callback&&(a.callback=m),[\"modal\",\"showClose\",\"closeOnClickModal\",\"closeOnPressEscape\"].forEach(function(t){void 0===a[t]&&(a[t]=!0)}),document.body.appendChild(a.$el),r.a.nextTick(function(){a.value=!0})}},b=function(t,e){return\"string\"==typeof t?(t={title:t},arguments[1]&&(t.message=arguments[1]),arguments[2]&&(t.type=arguments[2])):t.callback&&!e&&(e=t.callback),\"undefined\"!=typeof Promise?new Promise(function(n,i){p.push({options:h({},d,b.defaults||{},t),callback:e,resolve:n,reject:i}),g()}):(p.push({options:h({},d,b.defaults||{},t),callback:e}),void g())};b.setDefaults=function(t){b.defaults=t},b.alert=function(t,e,n){return\"object\"==typeof e&&(n=e,e=\"\"),b(h({title:e,message:t,$type:\"alert\",closeOnPressEscape:!1,closeOnClickModal:!1},n))},b.confirm=function(t,e,n){return\"object\"==typeof e&&(n=e,e=\"\"),b(h({title:e,message:t,$type:\"confirm\",showCancelButton:!0},n))},b.prompt=function(t,e,n){return\"object\"==typeof e&&(n=e,e=\"\"),b(h({title:e,message:t,showCancelButton:!0,showInput:!0,$type:\"prompt\"},n))},b.close=function(){a&&(a.value=!1,p=[],i=null)},e.a=b},function(t,e,n){\"use strict\";var i=n(145),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(146),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s=!1,r=!a.a.prototype.$isServer&&\"ontouchstart\"in window;e.a=function(t,e){var n=function(t){e.drag&&e.drag(r?t.changedTouches[0]||t.touches[0]:t)},i=function(t){r||(document.removeEventListener(\"mousemove\",n),document.removeEventListener(\"mouseup\",i)),document.onselectstart=null,document.ondragstart=null,s=!1,e.end&&e.end(r?t.changedTouches[0]||t.touches[0]:t)};t.addEventListener(r?\"touchstart\":\"mousedown\",function(t){s||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},r||(document.addEventListener(\"mousemove\",n),document.addEventListener(\"mouseup\",i)),s=!0,e.start&&(t.preventDefault(),e.start(r?t.changedTouches[0]||t.touches[0]:t)))}),r&&(t.addEventListener(\"touchmove\",n),t.addEventListener(\"touchend\",i),t.addEventListener(\"touchcancel\",i))}},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s={};if(!a.a.prototype.$isServer){var r,o=document.documentElement.style,l=!1;window.opera&&\"[object Opera]\"===Object.prototype.toString.call(opera)?r=\"presto\":\"MozAppearance\"in o?r=\"gecko\":\"WebkitAppearance\"in o?r=\"webkit\":\"string\"==typeof navigator.cpuClass&&(r=\"trident\");var u={trident:\"-ms-\",gecko:\"-moz-\",webkit:\"-webkit-\",\npresto:\"-o-\"}[r],c={trident:\"ms\",gecko:\"Moz\",webkit:\"Webkit\",presto:\"O\"}[r],d=document.createElement(\"div\"),h=c+\"Perspective\",f=c+\"Transform\",p=u+\"transform\",m=c+\"Transition\",v=u+\"transition\",g=c.toLowerCase()+\"TransitionEnd\";void 0!==d.style[h]&&(l=!0);var b=function(t){var e={left:0,top:0};if(null===t||null===t.style)return e;var n=t.style[f],i=/translate\\(\\s*(-?\\d+(\\.?\\d+?)?)px,\\s*(-?\\d+(\\.\\d+)?)px\\)\\s*translateZ\\(0px\\)/gi.exec(n);return i&&(e.left=+i[1],e.top=+i[3]),e},y=function(t,e,n){if((null!==e||null!==n)&&null!==t&&void 0!==t&&null!==t.style&&(t.style[f]||0!==e||0!==n)){if(null===e||null===n){var i=b(t);null===e&&(e=i.left),null===n&&(n=i.top)}x(t),l?t.style[f]+=\" translate(\"+(e?e+\"px\":\"0px\")+\",\"+(n?n+\"px\":\"0px\")+\") translateZ(0px)\":t.style[f]+=\" translate(\"+(e?e+\"px\":\"0px\")+\",\"+(n?n+\"px\":\"0px\")+\")\"}},x=function(t){if(null!==t&&null!==t.style){var e=t.style[f];e&&(e=e.replace(/translate\\(\\s*(-?\\d+(\\.?\\d+?)?)px,\\s*(-?\\d+(\\.\\d+)?)px\\)\\s*translateZ\\(0px\\)/g,\"\"),t.style[f]=e)}};s={transformProperty:f,transformStyleName:p,transitionProperty:m,transitionStyleName:v,transitionEndProperty:g,getElementTranslate:b,translateElement:y,cancelTranslateElement:x}}e.a=s},function(t,e,n){\"use strict\";var i=n(150),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(151),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(152),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s=!1,r=!a.a.prototype.$isServer&&\"ontouchstart\"in window;e.a=function(t,e){var n=function(t){e.drag&&e.drag(r?t.changedTouches[0]||t.touches[0]:t)},i=function(t){r||(document.removeEventListener(\"mousemove\",n),document.removeEventListener(\"mouseup\",i)),document.onselectstart=null,document.ondragstart=null,s=!1,e.end&&e.end(r?t.changedTouches[0]||t.touches[0]:t)};t.addEventListener(r?\"touchstart\":\"mousedown\",function(t){s||(t.preventDefault(),document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},r||(document.addEventListener(\"mousemove\",n),document.addEventListener(\"mouseup\",i)),s=!0,e.start&&e.start(r?t.changedTouches[0]||t.touches[0]:t))}),r&&(t.addEventListener(\"touchmove\",n),t.addEventListener(\"touchend\",i),t.addEventListener(\"touchcancel\",i))}},function(t,e,n){\"use strict\";var i=n(153),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(4),a=(n.n(i),n(158)),s=n.n(a);n.d(e,\"a\",function(){return s.a})},function(t,e,n){\"use strict\";var i=n(159),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(160),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(161),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(162),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(163),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(164),a=n.n(i);n.d(e,\"a\",function(){return a.a})},function(t,e,n){\"use strict\";var i=n(89);n.d(e,\"a\",function(){return i.a})},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s=a.a.extend(n(165)),r=[],o=function(){if(r.length>0){var t=r[0];return r.splice(0,1),t}return new s({el:document.createElement(\"div\")})},l=function(t){t&&r.push(t)},u=function(t){t.target.parentNode&&t.target.parentNode.removeChild(t.target)};s.prototype.close=function(){this.visible=!1,this.$el.addEventListener(\"transitionend\",u),this.closed=!0,l(this)};var c=function(t){void 0===t&&(t={});var e=t.duration||3e3,n=o();return n.closed=!1,clearTimeout(n.timer),n.message=\"string\"==typeof t?t:t.message,n.position=t.position||\"middle\",n.className=t.className||\"\",n.iconClass=t.iconClass||\"\",document.body.appendChild(n.$el),a.a.nextTick(function(){n.visible=!0,n.$el.removeEventListener(\"transitionend\",u),~e&&(n.timer=setTimeout(function(){n.closed||n.close()},e))}),n};e.a=c},function(t,e,n){\"use strict\";function i(t,e,n){this.$children.forEach(function(a){var s=a.$options.componentName;s===t?a.$emit.apply(a,[e].concat(n)):i.apply(a,[t,e].concat(n))})}e.a={methods:{dispatch:function(t,e,n){for(var i=this.$parent,a=i.$options.componentName;i&&(!a||a!==t);)i=i.$parent,i&&(a=i.$options.componentName);i&&i.$emit.apply(i,[e].concat(n))},broadcast:function(t,e,n){i.call(this,t,e,n)}}}},function(t,e,n){\"use strict\";var i=n(1),a=n.n(i),s=n(3),r=!1,o=function(){if(!a.a.prototype.$isServer){var t=u.modalDom;return t?r=!0:(r=!1,t=document.createElement(\"div\"),u.modalDom=t,t.addEventListener(\"touchmove\",function(t){t.preventDefault(),t.stopPropagation()}),t.addEventListener(\"click\",function(){u.doOnModalClick&&u.doOnModalClick()})),t}},l={},u={zIndex:2e3,modalFade:!0,getInstance:function(t){return l[t]},register:function(t,e){t&&e&&(l[t]=e)},deregister:function(t){t&&(l[t]=null,delete l[t])},nextZIndex:function(){return u.zIndex++},modalStack:[],doOnModalClick:function(){var t=u.modalStack[u.modalStack.length-1];if(t){var e=u.getInstance(t.id);e&&e.closeOnClickModal&&e.close()}},openModal:function(t,e,i,l,u){if(!a.a.prototype.$isServer&&t&&void 0!==e){this.modalFade=u;for(var c=this.modalStack,d=0,h=c.length;d<h;d++){var f=c[d];if(f.id===t)return}var p=o();if(n.i(s.a)(p,\"v-modal\"),this.modalFade&&!r&&n.i(s.a)(p,\"v-modal-enter\"),l){var m=l.trim().split(/\\s+/);m.forEach(function(t){return n.i(s.a)(p,t)})}setTimeout(function(){n.i(s.b)(p,\"v-modal-enter\")},200),i&&i.parentNode&&11!==i.parentNode.nodeType?i.parentNode.appendChild(p):document.body.appendChild(p),e&&(p.style.zIndex=e),p.style.display=\"\",this.modalStack.push({id:t,zIndex:e,modalClass:l})}},closeModal:function(t){var e=this.modalStack,i=o();if(e.length>0){var a=e[e.length-1];if(a.id===t){if(a.modalClass){var r=a.modalClass.trim().split(/\\s+/);r.forEach(function(t){return n.i(s.b)(i,t)})}e.pop(),e.length>0&&(i.style.zIndex=e[e.length-1].zIndex)}else for(var l=e.length-1;l>=0;l--)if(e[l].id===t){e.splice(l,1);break}}0===e.length&&(this.modalFade&&n.i(s.a)(i,\"v-modal-leave\"),setTimeout(function(){0===e.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display=\"none\",u.modalDom=void 0),n.i(s.b)(i,\"v-modal-leave\")},200))}};!a.a.prototype.$isServer&&window.addEventListener(\"keydown\",function(t){if(27===t.keyCode&&u.modalStack.length>0){var e=u.modalStack[u.modalStack.length-1];if(!e)return;var n=u.getInstance(e.id);n.closeOnPressEscape&&n.close()}}),e.a=u},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){},function(t,e){!function(t){for(var e=0,n=[\"webkit\",\"moz\"],i=t.requestAnimationFrame,a=t.cancelAnimationFrame,s=n.length;--s>=0&&!i;)i=t[n[s]+\"RequestAnimationFrame\"],a=t[n[s]+\"CancelAnimationFrame\"];i&&a||(i=function(t){var n=+new Date,i=Math.max(e+16,n);return setTimeout(function(){t(e=i)},i-n)},a=clearTimeout),t.requestAnimationFrame=i,t.cancelAnimationFrame=a}(window)},function(t,e){t.exports=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiBmaWxsPSJ3aGl0ZSI+CiAgPHBhdGggb3BhY2l0eT0iLjI1IiBkPSJNMTYgMCBBMTYgMTYgMCAwIDAgMTYgMzIgQTE2IDE2IDAgMCAwIDE2IDAgTTE2IDQgQTEyIDEyIDAgMCAxIDE2IDI4IEExMiAxMiAwIDAgMSAxNiA0Ii8+CiAgPHBhdGggZD0iTTE2IDAgQTE2IDE2IDAgMCAxIDMyIDE2IEwyOCAxNiBBMTIgMTIgMCAwIDAgMTYgNHoiPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgMTYgMTYiIHRvPSIzNjAgMTYgMTYiIGR1cj0iMC44cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+CiAgPC9wYXRoPgo8L3N2Zz4K\"},function(t,e,n){!function(e,n){t.exports=n()}(this,function(){\"use strict\";function t(t,e){if(t.length){var n=t.indexOf(e);return n>-1?t.splice(n,1):void 0}}function e(t,e){if(!t||!e)return t||{};if(t instanceof Object)for(var n in e)t[n]=e[n];return t}function n(t,e){for(var n=!1,i=0,a=t.length;i<a;i++)if(e(t[i])){n=!0;break}return n}function i(t,e){if(\"IMG\"===t.tagName&&t.getAttribute(\"data-srcset\")){var n=t.getAttribute(\"data-srcset\"),i=[],a=t.parentNode,s=a.offsetWidth*e,r=void 0,o=void 0,l=void 0;n=n.trim().split(\",\"),n.map(function(t){t=t.trim(),r=t.lastIndexOf(\" \"),r===-1?(o=t,l=999998):(o=t.substr(0,r),l=parseInt(t.substr(r+1,t.length-r-2),10)),i.push([l,o])}),i.sort(function(t,e){if(t[0]<e[0])return-1;if(t[0]>e[0])return 1;if(t[0]===e[0]){if(e[1].indexOf(\".webp\",e[1].length-5)!==-1)return 1;if(t[1].indexOf(\".webp\",t[1].length-5)!==-1)return-1}return 0});for(var u=\"\",c=void 0,d=i.length,h=0;h<d;h++)if(c=i[h],c[0]>=s){u=c[1];break}return u}}function a(t,e){for(var n=void 0,i=0,a=t.length;i<a;i++)if(e(t[i])){n=t[i];break}return n}function s(){if(!h)return!1;var t=!0,e=document;try{var n=e.createElement(\"object\");n.type=\"image/webp\",n.innerHTML=\"!\",e.body.appendChild(n),t=!n.offsetWidth,e.body.removeChild(n)}catch(e){t=!1}return t}function r(t,e){var n=null,i=0;return function(){if(!n){var a=Date.now()-i,s=this,r=arguments,o=function(){i=Date.now(),n=!1,t.apply(s,r)};a>=e?o():n=setTimeout(o,e)}}}function o(){if(h){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"test\",null,e)}catch(t){}return t}}function l(t){return null!==t&&\"object\"===(\"undefined\"==typeof t?\"undefined\":u(t))}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t},c=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")},d=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),h=\"undefined\"!=typeof window,f=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return h&&window.devicePixelRatio||t},p=o(),m={on:function(t,e,n){p?t.addEventListener(e,n,{passive:!0}):t.addEventListener(e,n,!1)},off:function(t,e,n){t.removeEventListener(e,n)}},v=function(t,e,n){var i=new Image;i.src=t.src,i.onload=function(){e({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(t){n(t)}},g=function(t,e){return\"undefined\"!=typeof getComputedStyle?getComputedStyle(t,null).getPropertyValue(e):t.style[e]},b=function(t){return g(t,\"overflow\")+g(t,\"overflow-y\")+g(t,\"overflow-x\")},y=function(t){if(h){if(!(t instanceof HTMLElement))return window;for(var e=t;e&&e!==document.body&&e!==document.documentElement&&e.parentNode;){if(/(scroll|auto)/.test(b(e)))return e;e=e.parentNode}return window}},x={},w=function(){function t(e){var n=e.el,i=e.src,a=e.error,s=e.loading,r=e.bindType,o=e.$parent,l=e.options,u=e.elRenderer;c(this,t),this.el=n,this.src=i,this.error=a,this.loading=s,this.bindType=r,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=l,this.initState(),this.performanceData={init:Date.now(),loadStart:null,loadEnd:null},this.rect=n.getBoundingClientRect(),this.$parent=o,this.elRenderer=u,this.render(\"loading\",!1)}return d(t,[{key:\"initState\",value:function(){this.state={error:!1,loaded:!1,rendered:!1}}},{key:\"record\",value:function(t){this.performanceData[t]=Date.now()}},{key:\"update\",value:function(t){var e=t.src,n=t.loading,i=t.error;this.src=e,this.loading=n,this.error=i,this.attempt=0,this.initState()}},{key:\"getRect\",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:\"checkInView\",value:function(){return this.getRect(),this.rect.top<window.innerHeight*this.options.preLoad&&this.rect.bottom>0&&this.rect.left<window.innerWidth*this.options.preLoad&&this.rect.right>0}},{key:\"load\",value:function(){var t=this;return this.attempt>this.options.attempt-1&&this.state.error?void(this.options.silent||console.log(\"error end\")):this.state.loaded||x[this.src]?this.render(\"loaded\",!0):(this.render(\"loading\",!1),this.attempt++,this.record(\"loadStart\"),void v({src:this.src},function(e){t.src=e.src,t.naturalHeight=e.naturalHeight,t.naturalWidth=e.naturalWidth,t.state.loaded=!0,t.state.error=!1,t.record(\"loadEnd\"),t.render(\"loaded\",!1),x[t.src]=1},function(e){t.state.error=!0,t.state.loaded=!1,t.render(\"error\",!1)}))}},{key:\"render\",value:function(t,e){this.elRenderer(this,t,e)}},{key:\"performance\",value:function(){var t=\"loading\",e=0;return this.state.loaded&&(t=\"loaded\",e=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(t=\"error\"),{src:this.src,state:t,time:e}}},{key:\"destroy\",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),t}(),C=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\",T=[\"scroll\",\"wheel\",\"mousewheel\",\"resize\",\"animationend\",\"transitionend\",\"touchmove\"],_=function(o){return function(){function u(t){var e=this,n=t.preLoad,i=t.error,a=t.loading,o=t.attempt,l=t.silent,d=t.scale,h=t.listenEvents,p=(t.hasbind,t.filter),m=t.adapter;c(this,u),this.ListenerQueue=[],this.options={silent:l||!0,preLoad:n||1.3,error:i||C,loading:a||C,attempt:o||3,scale:f(d),ListenEvents:h||T,hasbind:!1,supportWebp:s(),filter:p||{},adapter:m||{}},this.initEvent(),this.lazyLoadHandler=r(function(){var t=!1;e.ListenerQueue.forEach(function(e){e.state.loaded||(t=e.checkInView(),t&&e.load())})},200)}return d(u,[{key:\"config\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this.options,t)}},{key:\"addLazyBox\",value:function(t){this.ListenerQueue.push(t),this.options.hasbind=!0,this.initListen(window,!0)}},{key:\"add\",value:function(t,e,a){var s=this;if(n(this.ListenerQueue,function(e){return e.el===t}))return this.update(t,e),o.nextTick(this.lazyLoadHandler);var r=this.valueFormatter(e.value),l=r.src,u=r.loading,c=r.error;o.nextTick(function(){var n=i(t,s.options.scale);n&&(l=n);var r=Object.keys(e.modifiers)[0],d=void 0;r&&(d=a.context.$refs[r],d=d?d.$el||d:document.getElementById(r)),d||(d=y(t));var h=new w({bindType:e.arg,$parent:d,el:t,loading:u,error:c,src:l,elRenderer:s.elRenderer.bind(s),options:s.options});s.ListenerQueue.push(s.listenerFilter(h)),s.ListenerQueue.length&&!s.options.hasbind&&(s.options.hasbind=!0,s.initListen(window,!0),d&&s.initListen(d,!0),s.lazyLoadHandler(),o.nextTick(function(){return s.lazyLoadHandler()}))})}},{key:\"update\",value:function(t,e){var n=this,i=this.valueFormatter(e.value),s=i.src,r=i.loading,l=i.error,u=a(this.ListenerQueue,function(e){return e.el===t});u&&u.src!==s&&u.update({src:s,loading:r,error:l}),this.lazyLoadHandler(),o.nextTick(function(){return n.lazyLoadHandler()})}},{key:\"remove\",value:function(e){if(e){var n=a(this.ListenerQueue,function(t){return t.el===e});n&&t(this.ListenerQueue,n)&&n.destroy(),this.options.hasbind&&!this.ListenerQueue.length&&this.initListen(window,!1)}}},{key:\"removeComponent\",value:function(e){e&&t(this.ListenerQueue,e),this.options.hasbind&&!this.ListenerQueue.length&&this.initListen(window,!1)}},{key:\"initListen\",value:function(t,e){var n=this;this.options.hasbind=e,this.options.ListenEvents.forEach(function(i){return m[e?\"on\":\"off\"](t,i,n.lazyLoadHandler)})}},{key:\"initEvent\",value:function(){var e=this;this.Event={listeners:{loading:[],loaded:[],error:[]}},this.$on=function(t,n){e.Event.listeners[t].push(n)},this.$once=function(t,n){function i(){a.$off(t,i),n.apply(a,arguments)}var a=e;e.$on(t,i)},this.$off=function(n,i){return i?void t(e.Event.listeners[n],i):void(e.Event.listeners[n]=[])},this.$emit=function(t,n,i){e.Event.listeners[t].forEach(function(t){return t(n,i)})}}},{key:\"performance\",value:function(){var t=[];return this.ListenerQueue.map(function(e){t.push(e.performance())}),t}},{key:\"elRenderer\",value:function(t,e,n){if(t.el){var i=t.el,a=t.bindType,s=void 0;switch(e){case\"loading\":s=t.loading;break;case\"error\":s=t.error;break;default:s=t.src}a?i.style[a]=\"url(\"+s+\")\":i.getAttribute(\"src\")!==s&&i.setAttribute(\"src\",s),i.setAttribute(\"lazy\",e),this.$emit(e,t,n),this.options.adapter[e]&&this.options.adapter[e](t,this.options)}}},{key:\"listenerFilter\",value:function(t){return this.options.filter.webp&&this.options.supportWebp&&(t.src=this.options.filter.webp(t,this.options)),this.options.filter.customer&&(t.src=this.options.filter.customer(t,this.options)),t}},{key:\"valueFormatter\",value:function(t){var e=t,n=this.options.loading,i=this.options.error;return l(t)&&(t.src||this.options.silent||console.error(\"Vue Lazyload warning: miss src with \"+t),e=t.src,n=t.loading||this.options.loading,i=t.error||this.options.error),{src:e,loading:n,error:i}}}]),u}()},S=function(t){return{props:{tag:{type:String,default:\"div\"}},render:function(t){return this.show===!1?t(this.tag):t(this.tag,null,this.$slots.default)},data:function(){return{state:{loaded:!1},rect:{},show:!1}},mounted:function(){t.addLazyBox(this),t.lazyLoadHandler()},beforeDestroy:function(){t.removeComponent(this)},methods:{getRect:function(){this.rect=this.$el.getBoundingClientRect()},checkInView:function(){return this.getRect(),h&&this.rect.top<window.innerHeight*t.options.preLoad&&this.rect.bottom>0&&this.rect.left<window.innerWidth*t.options.preLoad&&this.rect.right>0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit(\"show\",this)}}}},E={install:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=_(t),a=new i(n),s=\"2\"===t.version.split(\".\")[0];t.prototype.$Lazyload=a,n.lazyComponent&&t.component(\"lazy-component\",S(a)),s?t.directive(\"lazy\",{bind:a.add.bind(a),update:a.update.bind(a),componentUpdated:a.lazyLoadHandler.bind(a),unbind:a.remove.bind(a)}):t.directive(\"lazy\",{bind:a.lazyLoadHandler.bind(a),update:function(t,n){e(this.vm.$refs,this.vm.$els),a.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:n},{context:this.vm})},unbind:function(){a.remove(this.el)}})}};return E})},function(t,e,n){function i(t){n(101)}var a=n(0)(n(16),n(174),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(103)}var a=n(0)(n(17),n(176),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(107)}var a=n(0)(n(18),n(180),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(99)}var a=n(0)(n(19),n(172),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(114)}var a=n(0)(n(20),n(188),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(125)}var a=n(0)(n(21),n(199),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(110)}var a=n(0)(n(22),n(184),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(117)}var a=n(0)(n(23),n(190),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(109)}var a=n(0)(n(24),n(182),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(94)}var a=n(0)(n(25),n(167),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(95)}var a=n(0)(n(26),n(168),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(120)}var a=n(0)(n(27),n(194),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(122)}var a=n(0)(n(28),n(196),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(115),n(116)}var a=n(0)(n(29),n(189),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(124)}var a=n(0)(n(30),n(198),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(113)}var a=n(0)(n(31),n(187),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(93)}var a=n(0)(n(32),n(166),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(127)}var a=n(0)(n(33),n(201),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(121)}var a=n(0)(n(34),n(195),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(97)}var a=n(0)(n(35),n(170),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(119)}var a=n(0)(n(36),n(193),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(123)}var a=n(0)(n(37),n(197),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(126)}var a=n(0)(n(38),n(200),i,null,null);t.exports=a.exports},function(t,e,n){var i=n(0)(n(39),n(192),null,null,null);t.exports=i.exports},function(t,e,n){function i(t){n(112)}var a=n(0)(n(41),n(186),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(104)}var a=n(0)(n(43),n(177),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(100)}var a=n(0)(n(44),n(173),i,null,null);t.exports=a.exports},function(t,e,n){var i=n(0)(n(45),n(183),null,null,null);t.exports=i.exports},function(t,e,n){function i(t){n(96)}var a=n(0)(n(46),n(169),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(108)}var a=n(0)(n(47),n(181),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(118)}var a=n(0)(n(48),n(191),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(102)}var a=n(0)(n(49),n(175),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(106)}var a=n(0)(n(50),n(179),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(111)}var a=n(0)(n(51),n(185),i,null,null);t.exports=a.exports},function(t,e,n){function i(t){n(98)}var a=n(0)(n(52),n(171),i,null,null);t.exports=a.exports},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"picker-slot\",class:t.classNames,style:t.flexStyle},[t.divider?t._e():n(\"div\",{ref:\"wrapper\",staticClass:\"picker-slot-wrapper\",class:{dragging:t.dragging},style:{height:t.contentHeight+\"px\"}},t._l(t.mutatingValues,function(e){return n(\"div\",{staticClass:\"picker-item\",class:{\"picker-selected\":e===t.currentValue},style:{height:t.itemHeight+\"px\",lineHeight:t.itemHeight+\"px\"}},[t._v(\"\\n      \"+t._s(\"object\"==typeof e&&e[t.valueKey]?e[t.valueKey]:e)+\"\\n    \")])})),t.divider?n(\"div\",[t._v(t._s(t.content))]):t._e()])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-indexlist\"},[n(\"ul\",{ref:\"content\",staticClass:\"mint-indexlist-content\",style:{height:t.currentHeight+\"px\",\"margin-right\":t.navWidth+\"px\"}},[t._t(\"default\")],2),n(\"div\",{ref:\"nav\",staticClass:\"mint-indexlist-nav\",on:{touchstart:t.handleTouchStart}},[n(\"ul\",{staticClass:\"mint-indexlist-navlist\"},t._l(t.sections,function(e){return n(\"li\",{staticClass:\"mint-indexlist-navitem\"},[t._v(t._s(e.index))])}))]),t.showIndicator?n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.moving,expression:\"moving\"}],staticClass:\"mint-indexlist-indicator\"},[t._v(t._s(t.currentIndicator))]):t._e()])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"li\",{staticClass:\"mint-indexsection\"},[n(\"p\",{staticClass:\"mint-indexsection-index\"},[t._v(t._s(t.index))]),n(\"ul\",[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-swipe\"},[n(\"div\",{ref:\"wrap\",staticClass:\"mint-swipe-items-wrap\"},[t._t(\"default\")],2),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showIndicators,expression:\"showIndicators\"}],staticClass:\"mint-swipe-indicators\"},t._l(t.pages,function(e,i){return n(\"div\",{staticClass:\"mint-swipe-indicator\",class:{\"is-active\":i===t.index}})}))])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mt-progress\"},[t._t(\"start\"),n(\"div\",{staticClass:\"mt-progress-content\"},[n(\"div\",{staticClass:\"mt-progress-runway\",style:{height:t.barHeight+\"px\"}}),n(\"div\",{staticClass:\"mt-progress-progress\",style:{width:t.value+\"%\",height:t.barHeight+\"px\"}})]),t._t(\"end\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"mint-toast-pop\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visible,expression:\"visible\"}],staticClass:\"mint-toast\",class:t.customClass,style:{padding:\"\"===t.iconClass?\"10px\":\"20px\"}},[\"\"!==t.iconClass?n(\"i\",{staticClass:\"mint-toast-icon\",class:t.iconClass}):t._e(),n(\"span\",{staticClass:\"mint-toast-text\",style:{\"padding-top\":\"\"===t.iconClass?\"0\":\"10px\"}},[t._v(t._s(t.message))])])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"x-cell\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside:touchstart\",value:t.swipeMove,expression:\"swipeMove\",arg:\"touchstart\"}],ref:\"cell\",staticClass:\"mint-cell-swipe\",attrs:{title:t.title,icon:t.icon,label:t.label,to:t.to,\"is-link\":t.isLink,value:t.value},nativeOn:{click:function(e){t.swipeMove()},touchstart:function(e){t.startDrag(e)},touchmove:function(e){t.onDrag(e)},touchend:function(e){t.endDrag(e)}}},[n(\"div\",{ref:\"right\",staticClass:\"mint-cell-swipe-buttongroup\",slot:\"right\"},t._l(t.right,function(e){return n(\"a\",{staticClass:\"mint-cell-swipe-button\",style:e.style,domProps:{innerHTML:t._s(e.content)},on:{click:function(n){n.preventDefault(),n.stopPropagation(),e.handler&&e.handler(),t.swipeMove()}}})})),n(\"div\",{ref:\"left\",staticClass:\"mint-cell-swipe-buttongroup\",slot:\"left\"},t._l(t.left,function(e){return n(\"a\",{staticClass:\"mint-cell-swipe-button\",style:e.style,domProps:{innerHTML:t._s(e.content)},on:{click:function(n){n.preventDefault(),n.stopPropagation(),e.handler&&e.handler(),t.swipeMove()}}})})),t._t(\"default\"),t.$slots.title?n(\"span\",{slot:\"title\"},[t._t(\"title\")],2):t._e(),t.$slots.icon?n(\"span\",{slot:\"icon\"},[t._t(\"icon\")],2):t._e()],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-spinner-triple-bounce\"},[n(\"div\",{staticClass:\"mint-spinner-triple-bounce-bounce1\",style:t.bounceStyle}),n(\"div\",{staticClass:\"mint-spinner-triple-bounce-bounce2\",style:t.bounceStyle}),n(\"div\",{staticClass:\"mint-spinner-triple-bounce-bounce3\",style:t.bounceStyle})])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"actionsheet-float\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.currentValue,expression:\"currentValue\"}],staticClass:\"mint-actionsheet\"},[n(\"ul\",{staticClass:\"mint-actionsheet-list\",style:{\"margin-bottom\":t.cancelText?\"5px\":\"0\"}},t._l(t.actions,function(e,i){return n(\"li\",{staticClass:\"mint-actionsheet-listitem\",on:{click:function(n){n.stopPropagation(),t.itemClick(e,i)}}},[t._v(t._s(e.name))])})),t.cancelText?n(\"a\",{staticClass:\"mint-actionsheet-button\",on:{click:function(e){e.stopPropagation(),t.currentValue=!1}}},[t._v(t._s(t.cancelText))]):t._e()])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-tab-container\",on:{touchstart:t.startDrag,mousedown:t.startDrag,touchmove:t.onDrag,mousemove:t.onDrag,mouseup:t.endDrag,touchend:t.endDrag}},[n(\"div\",{ref:\"wrap\",staticClass:\"mint-tab-container-wrap\"},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"span\",{staticClass:\"mint-badge\",class:[\"is-\"+t.type,\"is-size-\"+t.size],style:{backgroundColor:t.color}},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-spinner-snake\",style:{\"border-top-color\":t.spinnerColor,\"border-left-color\":t.spinnerColor,\"border-bottom-color\":t.spinnerColor,height:t.spinnerSize,width:t.spinnerSize}})},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{class:[\"mint-spinner-fading-circle circle-color-\"+t._uid],style:{width:t.spinnerSize,height:t.spinnerSize}},t._l(12,function(t){return n(\"div\",{staticClass:\"mint-spinner-fading-circle-circle\",class:[\"is-circle\"+(t+1)]})}))},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"a\",{staticClass:\"mint-tab-item\",class:{\"is-selected\":t.$parent.value===t.id},on:{click:function(e){t.$parent.$emit(\"input\",t.id)}}},[n(\"div\",{staticClass:\"mint-tab-item-icon\"},[t._t(\"icon\")],2),n(\"div\",{staticClass:\"mint-tab-item-label\"},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"button\",{staticClass:\"mint-button\",class:[\"mint-button--\"+t.type,\"mint-button--\"+t.size,{\"is-disabled\":t.disabled,\"is-plain\":t.plain}],attrs:{type:t.nativeType,disabled:t.disabled},on:{click:t.handleClick}},[t.icon||t.$slots.icon?n(\"span\",{staticClass:\"mint-button-icon\"},[t._t(\"icon\",[t.icon?n(\"i\",{staticClass:\"mintui\",class:\"mintui-\"+t.icon}):t._e()])],2):t._e(),n(\"label\",{staticClass:\"mint-button-text\"},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"label\",{staticClass:\"mint-switch\"},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.currentValue,expression:\"currentValue\"}],staticClass:\"mint-switch-input\",attrs:{disabled:t.disabled,type:\"checkbox\"},domProps:{checked:Array.isArray(t.currentValue)?t._i(t.currentValue,null)>-1:t.currentValue},on:{change:function(e){t.$emit(\"change\",t.currentValue)},__c:function(e){var n=t.currentValue,i=e.target,a=!!i.checked;if(Array.isArray(n)){var s=null,r=t._i(n,s);a?r<0&&(t.currentValue=n.concat(s)):r>-1&&(t.currentValue=n.slice(0,r).concat(n.slice(r+1)))}else t.currentValue=a}}}),n(\"span\",{staticClass:\"mint-switch-core\"}),n(\"div\",{staticClass:\"mint-switch-label\"},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"header\",{staticClass:\"mint-header\",class:{\"is-fixed\":t.fixed}},[n(\"div\",{staticClass:\"mint-header-button is-left\"},[t._t(\"left\")],2),n(\"h1\",{staticClass:\"mint-header-title\",domProps:{textContent:t._s(t.title)}}),n(\"div\",{staticClass:\"mint-header-button is-right\"},[t._t(\"right\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-swipe-item\"},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"mt-popup\",{staticClass:\"mint-datetime\",attrs:{closeOnClickModal:t.closeOnClickModal,position:\"bottom\"},model:{value:t.visible,callback:function(e){t.visible=e},expression:\"visible\"}},[n(\"mt-picker\",{ref:\"picker\",staticClass:\"mint-datetime-picker\",attrs:{slots:t.dateSlots,\"visible-item-count\":t.visibleItemCount,\"show-toolbar\":\"\"},on:{change:t.onChange}},[n(\"span\",{staticClass:\"mint-datetime-action mint-datetime-cancel\",on:{click:function(e){t.visible=!1,t.$emit(\"cancel\")}}},[t._v(t._s(t.cancelText))]),n(\"span\",{staticClass:\"mint-datetime-action mint-datetime-confirm\",on:{click:t.confirm}},[t._v(t._s(t.confirmText))])])],1)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-tabbar\",class:{\"is-fixed\":t.fixed}},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-spinner-double-bounce\",style:{width:t.spinnerSize,height:t.spinnerSize}},[n(\"div\",{staticClass:\"mint-spinner-double-bounce-bounce1\",style:{backgroundColor:t.spinnerColor}}),n(\"div\",{staticClass:\"mint-spinner-double-bounce-bounce2\",style:{backgroundColor:t.spinnerColor}})])},staticRenderFns:[]};\n},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-palette-button\",class:{expand:t.expanded,\"mint-palette-button-active\":t.transforming},on:{animationend:t.onMainAnimationEnd,webkitAnimationEnd:t.onMainAnimationEnd,mozAnimationEnd:t.onMainAnimationEnd}},[n(\"div\",{staticClass:\"mint-sub-button-container\"},[t._t(\"default\")],2),n(\"div\",{staticClass:\"mint-main-button\",style:t.mainButtonStyle,on:{touchstart:t.toggle}},[t._v(\"\\n    \"+t._s(t.content)+\"\\n  \")])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"a\",{staticClass:\"mint-cell\",attrs:{href:t.href}},[t.isLink?n(\"span\",{staticClass:\"mint-cell-mask\"}):t._e(),n(\"div\",{staticClass:\"mint-cell-left\"},[t._t(\"left\")],2),n(\"div\",{staticClass:\"mint-cell-wrapper\"},[n(\"div\",{staticClass:\"mint-cell-title\"},[t._t(\"icon\",[t.icon?n(\"i\",{staticClass:\"mintui\",class:\"mintui-\"+t.icon}):t._e()]),t._t(\"title\",[n(\"span\",{staticClass:\"mint-cell-text\",domProps:{textContent:t._s(t.title)}}),t.label?n(\"span\",{staticClass:\"mint-cell-label\",domProps:{textContent:t._s(t.label)}}):t._e()])],2),n(\"div\",{staticClass:\"mint-cell-value\",class:{\"is-link\":t.isLink}},[t._t(\"default\",[n(\"span\",{domProps:{textContent:t._s(t.value)}})])],2),t.isLink?n(\"i\",{staticClass:\"mint-cell-allow-right\"}):t._e()]),n(\"div\",{staticClass:\"mint-cell-right\"},[t._t(\"right\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-msgbox-wrapper\"},[n(\"transition\",{attrs:{name:\"msgbox-bounce\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.value,expression:\"value\"}],staticClass:\"mint-msgbox\"},[\"\"!==t.title?n(\"div\",{staticClass:\"mint-msgbox-header\"},[n(\"div\",{staticClass:\"mint-msgbox-title\"},[t._v(t._s(t.title))])]):t._e(),\"\"!==t.message?n(\"div\",{staticClass:\"mint-msgbox-content\"},[n(\"div\",{staticClass:\"mint-msgbox-message\",domProps:{innerHTML:t._s(t.message)}}),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showInput,expression:\"showInput\"}],staticClass:\"mint-msgbox-input\"},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.inputValue,expression:\"inputValue\"}],ref:\"input\",attrs:{placeholder:t.inputPlaceholder},domProps:{value:t.inputValue},on:{input:function(e){e.target.composing||(t.inputValue=e.target.value)}}}),n(\"div\",{staticClass:\"mint-msgbox-errormsg\",style:{visibility:t.editorErrorMessage?\"visible\":\"hidden\"}},[t._v(t._s(t.editorErrorMessage))])])]):t._e(),n(\"div\",{staticClass:\"mint-msgbox-btns\"},[n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showCancelButton,expression:\"showCancelButton\"}],class:[t.cancelButtonClasses],on:{click:function(e){t.handleAction(\"cancel\")}}},[t._v(t._s(t.cancelButtonText))]),n(\"button\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.showConfirmButton,expression:\"showConfirmButton\"}],class:[t.confirmButtonClasses],on:{click:function(e){t.handleAction(\"confirm\")}}},[t._v(t._s(t.confirmButtonText))])])])])],1)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"x-cell\",{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:t.doCloseActive,expression:\"doCloseActive\"}],staticClass:\"mint-field\",class:[{\"is-textarea\":\"textarea\"===t.type,\"is-nolabel\":!t.label}],attrs:{title:t.label}},[\"textarea\"===t.type?n(\"textarea\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.currentValue,expression:\"currentValue\"}],ref:\"textarea\",staticClass:\"mint-field-core\",attrs:{placeholder:t.placeholder,rows:t.rows,disabled:t.disabled,readonly:t.readonly},domProps:{value:t.currentValue},on:{change:function(e){t.$emit(\"change\",t.currentValue)},input:function(e){e.target.composing||(t.currentValue=e.target.value)}}}):n(\"input\",{ref:\"input\",staticClass:\"mint-field-core\",attrs:{placeholder:t.placeholder,number:\"number\"===t.type,type:t.type,disabled:t.disabled,readonly:t.readonly},domProps:{value:t.currentValue},on:{change:function(e){t.$emit(\"change\",t.currentValue)},focus:function(e){t.active=!0},input:t.handleInput}}),t.disableClear?t._e():n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.currentValue&&\"textarea\"!==t.type&&t.active,expression:\"currentValue && type !== 'textarea' && active\"}],staticClass:\"mint-field-clear\",on:{click:t.handleClear}},[n(\"i\",{staticClass:\"mintui mintui-field-error\"})]),t.state?n(\"span\",{staticClass:\"mint-field-state\",class:[\"is-\"+t.state]},[n(\"i\",{staticClass:\"mintui\",class:[\"mintui-field-\"+t.state]})]):t._e(),n(\"div\",{staticClass:\"mint-field-other\"},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.$parent.swiping||t.id===t.$parent.currentActive,expression:\"$parent.swiping || id === $parent.currentActive\"}],staticClass:\"mint-tab-container-item\"},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"span\",[n(t.spinner,{tag:\"component\"})],1)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-radiolist\",on:{change:function(e){t.$emit(\"change\",t.currentValue)}}},[n(\"label\",{staticClass:\"mint-radiolist-title\",domProps:{textContent:t._s(t.title)}}),t._l(t.options,function(e){return n(\"x-cell\",[n(\"label\",{staticClass:\"mint-radiolist-label\",slot:\"title\"},[n(\"span\",{staticClass:\"mint-radio\",class:{\"is-right\":\"right\"===t.align}},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.currentValue,expression:\"currentValue\"}],staticClass:\"mint-radio-input\",attrs:{type:\"radio\",disabled:e.disabled},domProps:{value:e.value||e,checked:t._q(t.currentValue,e.value||e)},on:{__c:function(n){t.currentValue=e.value||e}}}),n(\"span\",{staticClass:\"mint-radio-core\"})]),n(\"span\",{staticClass:\"mint-radio-label\",domProps:{textContent:t._s(e.label||e)}})])])})],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:\"mint-indicator\"}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visible,expression:\"visible\"}],staticClass:\"mint-indicator\"},[n(\"div\",{staticClass:\"mint-indicator-wrapper\",style:{padding:t.text?\"20px\":\"15px\"}},[n(\"spinner\",{staticClass:\"mint-indicator-spin\",attrs:{type:t.convertedSpinnerType,size:32}}),n(\"span\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.text,expression:\"text\"}],staticClass:\"mint-indicator-text\"},[t._v(t._s(t.text))])],1),n(\"div\",{staticClass:\"mint-indicator-mask\",on:{touchmove:function(t){t.stopPropagation(),t.preventDefault()}}})])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"transition\",{attrs:{name:t.currentTransition}},[n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.currentValue,expression:\"currentValue\"}],staticClass:\"mint-popup\",class:[t.position?\"mint-popup-\"+t.position:\"\"]},[t._t(\"default\")],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-loadmore\"},[n(\"div\",{staticClass:\"mint-loadmore-content\",class:{\"is-dropped\":t.topDropped||t.bottomDropped},style:{transform:t.transform}},[t._t(\"top\",[t.topMethod?n(\"div\",{staticClass:\"mint-loadmore-top\"},[\"loading\"===t.topStatus?n(\"spinner\",{staticClass:\"mint-loadmore-spinner\",attrs:{size:20,type:\"fading-circle\"}}):t._e(),n(\"span\",{staticClass:\"mint-loadmore-text\"},[t._v(t._s(t.topText))])],1):t._e()]),t._t(\"default\"),t._t(\"bottom\",[t.bottomMethod?n(\"div\",{staticClass:\"mint-loadmore-bottom\"},[\"loading\"===t.bottomStatus?n(\"spinner\",{staticClass:\"mint-loadmore-spinner\",attrs:{size:20,type:\"fading-circle\"}}):t._e(),n(\"span\",{staticClass:\"mint-loadmore-text\"},[t._v(t._s(t.bottomText))])],1):t._e()])],2)])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mt-range\",class:{\"mt-range--disabled\":t.disabled}},[t._t(\"start\"),n(\"div\",{ref:\"content\",staticClass:\"mt-range-content\"},[n(\"div\",{staticClass:\"mt-range-runway\",style:{\"border-top-width\":t.barHeight+\"px\"}}),n(\"div\",{staticClass:\"mt-range-progress\",style:{width:t.progress+\"%\",height:t.barHeight+\"px\"}}),n(\"div\",{ref:\"thumb\",staticClass:\"mt-range-thumb\",style:{left:t.progress+\"%\"}})]),t._t(\"end\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-navbar\",class:{\"is-fixed\":t.fixed}},[t._t(\"default\")],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-checklist\",class:{\"is-limit\":t.max<=t.currentValue.length},on:{change:function(e){t.$emit(\"change\",t.currentValue)}}},[n(\"label\",{staticClass:\"mint-checklist-title\",domProps:{textContent:t._s(t.title)}}),t._l(t.options,function(e){return n(\"x-cell\",[n(\"label\",{staticClass:\"mint-checklist-label\",slot:\"title\"},[n(\"span\",{staticClass:\"mint-checkbox\",class:{\"is-right\":\"right\"===t.align}},[n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.currentValue,expression:\"currentValue\"}],staticClass:\"mint-checkbox-input\",attrs:{type:\"checkbox\",disabled:e.disabled},domProps:{value:e.value||e,checked:Array.isArray(t.currentValue)?t._i(t.currentValue,e.value||e)>-1:t.currentValue},on:{__c:function(n){var i=t.currentValue,a=n.target,s=!!a.checked;if(Array.isArray(i)){var r=e.value||e,o=t._i(i,r);s?o<0&&(t.currentValue=i.concat(r)):o>-1&&(t.currentValue=i.slice(0,o).concat(i.slice(o+1)))}else t.currentValue=s}}}),n(\"span\",{staticClass:\"mint-checkbox-core\"})]),n(\"span\",{staticClass:\"mint-checkbox-label\",domProps:{textContent:t._s(e.label||e)}})])])})],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"mint-search\"},[n(\"div\",{staticClass:\"mint-searchbar\"},[n(\"div\",{staticClass:\"mint-searchbar-inner\"},[n(\"i\",{staticClass:\"mintui mintui-search\"}),n(\"input\",{directives:[{name:\"model\",rawName:\"v-model\",value:t.currentValue,expression:\"currentValue\"}],ref:\"input\",staticClass:\"mint-searchbar-core\",attrs:{type:\"search\",placeholder:t.placeholder},domProps:{value:t.currentValue},on:{click:function(e){t.visible=!0},input:function(e){e.target.composing||(t.currentValue=e.target.value)}}})]),n(\"a\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.visible,expression:\"visible\"}],staticClass:\"mint-searchbar-cancel\",domProps:{textContent:t._s(t.cancelText)},on:{click:function(e){t.visible=!1,t.currentValue=\"\"}}})]),n(\"div\",{directives:[{name:\"show\",rawName:\"v-show\",value:t.show||t.currentValue,expression:\"show || currentValue\"}],staticClass:\"mint-search-list\"},[n(\"div\",{staticClass:\"mint-search-list-warp\"},[t._t(\"default\",t._l(t.result,function(t,e){return n(\"x-cell\",{key:e,attrs:{title:t}})}))],2)])])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n(\"div\",{staticClass:\"picker\",class:{\"picker-3d\":t.rotateEffect}},[t.showToolbar?n(\"div\",{staticClass:\"picker-toolbar\"},[t._t(\"default\")],2):t._e(),n(\"div\",{staticClass:\"picker-items\"},[t._l(t.slots,function(e){return n(\"picker-slot\",{attrs:{valueKey:t.valueKey,values:e.values||[],\"text-align\":e.textAlign||\"center\",\"visible-item-count\":t.visibleItemCount,\"class-name\":e.className,flex:e.flex,\"rotate-effect\":t.rotateEffect,divider:e.divider,content:e.content,itemHeight:t.itemHeight,\"default-index\":e.defaultIndex},model:{value:t.values[e.valueIndex],callback:function(n){var i=t.values,a=e.valueIndex;Array.isArray(i)?i.splice(a,1,n):t.values[e.valueIndex]=n},expression:\"values[slot.valueIndex]\"}})}),n(\"div\",{staticClass:\"picker-center-highlight\",style:{height:t.itemHeight+\"px\",marginTop:-t.itemHeight/2+\"px\"}})],2)])},staticRenderFns:[]}},function(t,e,n){t.exports=n(14)}])});"
  },
  {
    "path": "lib/style.css",
    "content": "/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-header {\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    background-color: #26a2ff;\n    box-sizing: border-box;\n    color: #fff;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    font-size: 14px;\n    height: 40px;\n    line-height: 1;\n    padding: 0 10px;\n    position: relative;\n    text-align: center;\n    white-space: nowrap;\n}\n.mint-header .mint-button {\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n    color: inherit;\n    display: inline-block;\n    padding: 0;\n    font-size: inherit\n}\n.mint-header .mint-button::after {\n    content: none;\n}\n.mint-header.is-fixed {\n    top: 0;\n    right: 0;\n    left: 0;\n    position: fixed;\n    z-index: 1;\n}\n.mint-header-button {\n    -webkit-box-flex: .5;\n        -ms-flex: .5;\n            flex: .5;\n}\n.mint-header-button > a {\n    color: inherit;\n}\n.mint-header-button.is-right {\n    text-align: right;\n}\n.mint-header-button.is-left {\n    text-align: left;\n}\n.mint-header-title {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-size: inherit;\n    font-weight: 400;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-button {\n    -webkit-appearance: none;\n       -moz-appearance: none;\n            appearance: none;\n    border-radius: 4px;\n    border: 0;\n    box-sizing: border-box;\n    color: inherit;\n    display: block;\n    font-size: 18px;\n    height: 41px;\n    outline: 0;\n    overflow: hidden;\n    position: relative;\n    text-align: center\n}\n.mint-button::after {\n    background-color: #000;\n    content: \" \";\n    opacity: 0;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    position: absolute\n}\n.mint-button:not(.is-disabled):active::after {\n    opacity: .4\n}\n.mint-button.is-disabled {\n    opacity: .6\n}\n.mint-button-icon {\n    vertical-align: middle;\n    display: inline-block\n}\n.mint-button--default {\n    color: #656b79;\n    background-color: #f6f8fa;\n    box-shadow: 0 0 1px #b8bbbf\n}\n.mint-button--default.is-plain {\n    border: 1px solid #5a5a5a;\n    background-color: transparent;\n    box-shadow: none;\n    color: #5a5a5a\n}\n.mint-button--primary {\n    color: #fff;\n    background-color: #26a2ff\n}\n.mint-button--primary.is-plain {\n    border: 1px solid #26a2ff;\n    background-color: transparent;\n    color: #26a2ff\n}\n.mint-button--danger {\n    color: #fff;\n    background-color: #ef4f4f\n}\n.mint-button--danger.is-plain {\n    border: 1px solid #ef4f4f;\n    background-color: transparent;\n    color: #ef4f4f\n}\n.mint-button--large {\n    display: block;\n    width: 100%\n}\n.mint-button--normal {\n    display: inline-block;\n    padding: 0 12px\n}\n.mint-button--small {\n    display: inline-block;\n    font-size: 14px;\n    padding: 0 12px;\n    height: 33px\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-cell {\n    background-color:#fff;\n    box-sizing:border-box;\n    color:inherit;\n    min-height:48px;\n    display:block;\n    overflow:hidden;\n    position:relative;\n    text-decoration:none;\n}\n.mint-cell img {\n    vertical-align:middle;\n}\n.mint-cell:first-child .mint-cell-wrapper {\n    background-origin:border-box;\n}\n.mint-cell:last-child {\n    background-image:-webkit-linear-gradient(bottom, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-image:linear-gradient(0deg, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-size:100% 1px;\n    background-repeat:no-repeat;\n    background-position:bottom;\n}\n.mint-cell-wrapper {\n    background-image:-webkit-linear-gradient(top, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-image:linear-gradient(180deg, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-size: 120% 1px;\n    background-repeat: no-repeat;\n    background-position: top left;\n    background-origin: content-box;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    box-sizing: border-box;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    font-size: 16px;\n    line-height: 1;\n    min-height: inherit;\n    overflow: hidden;\n    padding: 0 10px;\n    width: 100%;\n}\n.mint-cell-mask {}\n.mint-cell-mask::after {\n    background-color:#000;\n    content:\" \";\n    opacity:0;\n    top:0;\n    right:0;\n    bottom:0;\n    left:0;\n    position:absolute;\n}\n.mint-cell-mask:active::after {\n    opacity:.1;\n}\n.mint-cell-text {\n    vertical-align: middle;\n}\n.mint-cell-label {\n    color: #888;\n    display: block;\n    font-size: 12px;\n    margin-top: 6px;\n}\n.mint-cell-title {\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n}\n.mint-cell-value {\n    color: #888;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n}\n.mint-cell-value.is-link {\n    margin-right:24px;\n}\n.mint-cell-left {\n    position: absolute;\n    height: 100%;\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n}\n.mint-cell-right {\n    position: absolute;\n    height: 100%;\n    right: 0;\n    top: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n}\n.mint-cell-allow-right::after {\n    border: solid 2px #c8c8cd;\n    border-bottom-width: 0;\n    border-left-width: 0;\n    content: \" \";\n    top:50%;\n    right:20px;\n    position: absolute;\n    width:5px;\n    height:5px;\n    -webkit-transform: translateY(-50%) rotate(45deg);\n            transform: translateY(-50%) rotate(45deg);\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-cell-swipe .mint-cell-wrapper {\n    position: relative;\n}\n.mint-cell-swipe .mint-cell-wrapper, .mint-cell-swipe .mint-cell-left, .mint-cell-swipe .mint-cell-right {\n    -webkit-transition: -webkit-transform 150ms ease-in-out;\n    transition: -webkit-transform 150ms ease-in-out;\n    transition: transform 150ms ease-in-out;\n    transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;\n}\n.mint-cell-swipe-buttongroup {\n    height: 100%;\n}\n.mint-cell-swipe-button {\n    height: 100%;\n    display: inline-block;\n    padding: 0 10px;\n    line-height: 48px;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-field {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n}\n.mint-field .mint-cell-title {\n    width: 105px;\n    -webkit-box-flex: 0;\n        -ms-flex: none;\n            flex: none;\n}\n.mint-field .mint-cell-value {\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n    color: inherit;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n}\n.mint-field.is-nolabel .mint-cell-title {\n    display: none;\n}\n.mint-field.is-textarea {\n    -webkit-box-align: inherit;\n        -ms-flex-align: inherit;\n            align-items: inherit;\n}\n.mint-field.is-textarea .mint-cell-title {\n    padding: 10px 0;\n}\n.mint-field.is-textarea .mint-cell-value {\n    padding: 5px 0;\n}\n.mint-field-core {\n    -webkit-appearance: none;\n       -moz-appearance: none;\n            appearance: none;\n    border-radius: 0;\n    border: 0;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n    outline: 0;\n    line-height: 1.6;\n    font-size: inherit;\n    width: 100%;\n}\n.mint-field-clear {\n    opacity: .2;\n}\n.mint-field-state {\n    color: inherit;\n    margin-left: 20px;\n}\n.mint-field-state .mintui {\n    font-size: 20px;\n}\n.mint-field-state.is-default {\n    margin-left: 0;\n}\n.mint-field-state.is-success {\n    color: #4caf50;\n}\n.mint-field-state.is-warning {\n    color: #ffc107;\n}\n.mint-field-state.is-error {\n    color: #f44336;\n}\n.mint-field-other {\n    top: 0;\n    right: 0;\n    position: relative;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-badge {\n    color: #fff;\n    text-align: center;\n    display: inline-block\n}\n.mint-badge.is-size-large {\n    border-radius: 14px;\n    font-size: 18px;\n    padding: 2px 10px\n}\n.mint-badge.is-size-small {\n    border-radius: 8px;\n    font-size: 12px;\n    padding: 2px 6px\n}\n.mint-badge.is-size-normal {\n    border-radius: 12px;\n    font-size: 15px;\n    padding: 2px 8px\n}\n.mint-badge.is-warning {\n    background-color: #ffc107\n}\n.mint-badge.is-error {\n    background-color: #f44336\n}\n.mint-badge.is-primary {\n    background-color: #26a2ff\n}\n.mint-badge.is-success {\n    background-color: #4caf50\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-switch {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    position: relative;\n}\n.mint-switch * {\n    pointer-events: none;\n}\n.mint-switch-label {\n    margin-left: 10px;\n    display: inline-block;\n}\n.mint-switch-label:empty {\n    margin-left: 0;\n}\n.mint-switch-core {\n    display: inline-block;\n    position: relative;\n    width: 52px;\n    height: 32px;\n    border: 1px solid #d9d9d9;\n    border-radius: 16px;\n    box-sizing: border-box;\n    background: #d9d9d9;\n}\n.mint-switch-core::after, .mint-switch-core::before {\n    content: \" \";\n    top: 0;\n    left: 0;\n    position: absolute;\n    -webkit-transition: -webkit-transform .3s;\n    transition: -webkit-transform .3s;\n    transition: transform .3s;\n    transition: transform .3s, -webkit-transform .3s;\n    border-radius: 15px;\n}\n.mint-switch-core::after {\n    width: 30px;\n    height: 30px;\n    background-color: #fff;\n    box-shadow: 0 1px 3px rgba(0, 0, 0, .4);\n}\n.mint-switch-core::before {\n    width: 50px;\n    height: 30px;\n    background-color: #fdfdfd;\n}\n.mint-switch-input {\n    display: none;\n}\n.mint-switch-input:checked + .mint-switch-core {\n    border-color: #26a2ff;\n    background-color: #26a2ff;\n}\n.mint-switch-input:checked + .mint-switch-core::before {\n    -webkit-transform: scale(0);\n            transform: scale(0);\n}\n.mint-switch-input:checked + .mint-switch-core::after {\n    -webkit-transform: translateX(20px);\n            transform: translateX(20px);\n}\n\n.mint-spinner-snake {\n  -webkit-animation: mint-spinner-rotate 0.8s infinite linear;\n          animation: mint-spinner-rotate 0.8s infinite linear;\n  border: 4px solid transparent;\n  border-radius: 50%;\n}\n@-webkit-keyframes mint-spinner-rotate {\n0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n}\n100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n}\n}\n@keyframes mint-spinner-rotate {\n0% {\n    -webkit-transform: rotate(0deg);\n            transform: rotate(0deg);\n}\n100% {\n    -webkit-transform: rotate(360deg);\n            transform: rotate(360deg);\n}\n}\n\n.mint-spinner-double-bounce {\nposition: relative;\n}\n.mint-spinner-double-bounce-bounce1, .mint-spinner-double-bounce-bounce2 {\nwidth: 100%;\nheight: 100%;\nborder-radius: 50%;\nopacity: 0.6;\nposition: absolute;\ntop: 0;\nleft: 0;\n-webkit-animation: mint-spinner-double-bounce 2.0s infinite ease-in-out;\n        animation: mint-spinner-double-bounce 2.0s infinite ease-in-out;\n}\n.mint-spinner-double-bounce-bounce2 {\n-webkit-animation-delay: -1.0s;\n        animation-delay: -1.0s;\n}\n@-webkit-keyframes mint-spinner-double-bounce {\n0%, 100% {\n    -webkit-transform: scale(0.0);\n            transform: scale(0.0);\n}\n50% {\n    -webkit-transform: scale(1.0);\n            transform: scale(1.0);\n}\n}\n@keyframes mint-spinner-double-bounce {\n0%, 100% {\n    -webkit-transform: scale(0.0);\n            transform: scale(0.0);\n}\n50% {\n    -webkit-transform: scale(1.0);\n            transform: scale(1.0);\n}\n}\n\n.mint-spinner-triple-bounce {}\n.mint-spinner-triple-bounce-bounce1, .mint-spinner-triple-bounce-bounce2, .mint-spinner-triple-bounce-bounce3 {\nborder-radius: 100%;\ndisplay: inline-block;\n-webkit-animation: mint-spinner-triple-bounce 1.4s infinite ease-in-out both;\n        animation: mint-spinner-triple-bounce 1.4s infinite ease-in-out both;\n}\n.mint-spinner-triple-bounce-bounce1 {\n-webkit-animation-delay: -0.32s;\n        animation-delay: -0.32s;\n}\n.mint-spinner-triple-bounce-bounce2 {\n-webkit-animation-delay: -0.16s;\n        animation-delay: -0.16s;\n}\n@-webkit-keyframes mint-spinner-triple-bounce {\n0%, 80%, 100% {\n    -webkit-transform: scale(0);\n            transform: scale(0);\n}\n40% {\n    -webkit-transform: scale(1.0);\n            transform: scale(1.0);\n}\n}\n@keyframes mint-spinner-triple-bounce {\n0%, 80%, 100% {\n    -webkit-transform: scale(0);\n            transform: scale(0);\n}\n40% {\n    -webkit-transform: scale(1.0);\n            transform: scale(1.0);\n}\n}\n\n.mint-spinner-fading-circle {\n    position: relative\n}\n.mint-spinner-fading-circle-circle {\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    position: absolute\n}\n.mint-spinner-fading-circle-circle::before {\n    content: \" \";\n    display: block;\n    margin: 0 auto;\n    width: 15%;\n    height: 15%;\n    border-radius: 100%;\n    -webkit-animation: mint-fading-circle 1.2s infinite ease-in-out both;\n            animation: mint-fading-circle 1.2s infinite ease-in-out both\n}\n.mint-spinner-fading-circle-circle.is-circle2 {\n    -webkit-transform: rotate(30deg);\n            transform: rotate(30deg)\n}\n.mint-spinner-fading-circle-circle.is-circle2::before {\n    -webkit-animation-delay: -1.1s;\n            animation-delay: -1.1s\n}\n.mint-spinner-fading-circle-circle.is-circle3 {\n    -webkit-transform: rotate(60deg);\n            transform: rotate(60deg)\n}\n.mint-spinner-fading-circle-circle.is-circle3::before {\n    -webkit-animation-delay: -1s;\n            animation-delay: -1s\n}\n.mint-spinner-fading-circle-circle.is-circle4 {\n    -webkit-transform: rotate(90deg);\n            transform: rotate(90deg)\n}\n.mint-spinner-fading-circle-circle.is-circle4::before {\n    -webkit-animation-delay: -0.9s;\n            animation-delay: -0.9s\n}\n.mint-spinner-fading-circle-circle.is-circle5 {\n    -webkit-transform: rotate(120deg);\n            transform: rotate(120deg)\n}\n.mint-spinner-fading-circle-circle.is-circle5::before {\n    -webkit-animation-delay: -0.8s;\n            animation-delay: -0.8s\n}\n.mint-spinner-fading-circle-circle.is-circle6 {\n    -webkit-transform: rotate(150deg);\n            transform: rotate(150deg)\n}\n.mint-spinner-fading-circle-circle.is-circle6::before {\n    -webkit-animation-delay: -0.7s;\n            animation-delay: -0.7s\n}\n.mint-spinner-fading-circle-circle.is-circle7 {\n    -webkit-transform: rotate(180deg);\n            transform: rotate(180deg)\n}\n.mint-spinner-fading-circle-circle.is-circle7::before {\n    -webkit-animation-delay: -0.6s;\n            animation-delay: -0.6s\n}\n.mint-spinner-fading-circle-circle.is-circle8 {\n    -webkit-transform: rotate(210deg);\n            transform: rotate(210deg)\n}\n.mint-spinner-fading-circle-circle.is-circle8::before {\n    -webkit-animation-delay: -0.5s;\n            animation-delay: -0.5s\n}\n.mint-spinner-fading-circle-circle.is-circle9 {\n    -webkit-transform: rotate(240deg);\n            transform: rotate(240deg)\n}\n.mint-spinner-fading-circle-circle.is-circle9::before {\n    -webkit-animation-delay: -0.4s;\n            animation-delay: -0.4s\n}\n.mint-spinner-fading-circle-circle.is-circle10 {\n    -webkit-transform: rotate(270deg);\n            transform: rotate(270deg)\n}\n.mint-spinner-fading-circle-circle.is-circle10::before {\n    -webkit-animation-delay: -0.3s;\n            animation-delay: -0.3s\n}\n.mint-spinner-fading-circle-circle.is-circle11 {\n    -webkit-transform: rotate(300deg);\n            transform: rotate(300deg)\n}\n.mint-spinner-fading-circle-circle.is-circle11::before {\n    -webkit-animation-delay: -0.2s;\n            animation-delay: -0.2s\n}\n.mint-spinner-fading-circle-circle.is-circle12 {\n    -webkit-transform: rotate(330deg);\n            transform: rotate(330deg)\n}\n.mint-spinner-fading-circle-circle.is-circle12::before {\n    -webkit-animation-delay: -0.1s;\n            animation-delay: -0.1s\n}\n@-webkit-keyframes mint-fading-circle {\n    0%, 39%, 100% {\n        opacity: 0\n    }\n    40% {\n        opacity: 1\n    }\n}\n@keyframes mint-fading-circle {\n    0%, 39%, 100% {\n        opacity: 0\n    }\n    40% {\n        opacity: 1\n    }\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-tab-item {\n    display: block;\n    padding: 7px 0;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n    text-decoration: none\n}\n.mint-tab-item-icon {\n    width: 24px;\n    height: 24px;\n    margin: 0 auto 5px\n}\n.mint-tab-item-icon:empty {\n    display: none\n}\n.mint-tab-item-icon > * {\n    display: block;\n    width: 100%;\n    height: 100%\n}\n.mint-tab-item-label {\n    color: inherit;\n    font-size: 12px;\n    line-height: 1\n}\n\n.mint-tab-container-item {\n    -ms-flex-negative: 0;\n        flex-shrink: 0;\n    width: 100%\n}\n\n.mint-tab-container {\n    overflow: hidden;\n    position: relative;\n}\n.mint-tab-container .swipe-transition {\n    -webkit-transition: -webkit-transform 150ms ease-in-out;\n    transition: -webkit-transform 150ms ease-in-out;\n    transition: transform 150ms ease-in-out;\n    transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out;\n}\n.mint-tab-container-wrap {\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-navbar {\n    background-color: #fff;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    text-align: center;\n}\n.mint-navbar .mint-tab-item {\n    padding: 17px 0;\n    font-size: 15px\n}\n.mint-navbar .mint-tab-item:last-child {\n    border-right: 0;\n}\n.mint-navbar .mint-tab-item.is-selected {\n    border-bottom: 3px solid #26a2ff;\n    color: #26a2ff;\n    margin-bottom: -3px;\n}\n.mint-navbar.is-fixed {\n    top: 0;\n    right: 0;\n    left: 0;\n    position: fixed;\n    z-index: 1;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-tabbar {\n    background-image: -webkit-linear-gradient(top, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-image: linear-gradient(180deg, #d9d9d9, #d9d9d9 50%, transparent 50%);\n    background-size: 100% 1px;\n    background-repeat: no-repeat;\n    background-position: top left;\n    position: relative;\n    background-color: #fafafa;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    position: absolute;\n    text-align: center;\n}\n.mint-tabbar > .mint-tab-item.is-selected {\n    background-color: #eaeaea;\n    color: #26a2ff;\n}\n.mint-tabbar.is-fixed {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    position: fixed;\n    z-index: 1;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-search {\n    height: 100%;\n    height: 100vh;\n    overflow: hidden;\n}\n.mint-searchbar {\n    position: relative;\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    background-color: #d9d9d9;\n    box-sizing: border-box;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    padding: 8px 10px;\n    z-index: 1;\n}\n.mint-searchbar-inner {\n    -webkit-box-align: center;\n        -ms-flex-align: center;\n            align-items: center;\n    background-color: #fff;\n    border-radius: 2px;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n    height: 28px;\n    padding: 4px 6px;\n}\n.mint-searchbar-inner .mintui-search {\n    font-size: 12px;\n    color: #d9d9d9;\n}\n.mint-searchbar-core {\n    -webkit-appearance: none;\n       -moz-appearance: none;\n            appearance: none;\n    border: 0;\n    box-sizing: border-box;\n    width: 100%;\n    height: 100%;\n    outline: 0;\n}\n.mint-searchbar-cancel {\n    color: #26a2ff;\n    margin-left: 10px;\n    text-decoration: none;\n}\n.mint-search-list {\n    overflow: auto;\n    padding-top: 44px;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    position: absolute;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-checklist .mint-cell {\n    padding: 0;\n}\n.mint-checklist.is-limit .mint-checkbox-core:not(:checked) {\n    background-color: #d9d9d9;\n    border-color: #d9d9d9;\n}\n.mint-checklist-label {\n    display: block;\n    padding: 0 10px;\n}\n.mint-checklist-title {\n    color: #888;\n    display: block;\n    font-size: 12px;\n    margin: 8px;\n}\n.mint-checkbox {}\n.mint-checkbox.is-right {\n    float: right;\n}\n.mint-checkbox-label {\n    vertical-align: middle;\n    margin-left: 6px;\n}\n.mint-checkbox-input {\n    display: none;\n}\n.mint-checkbox-input:checked + .mint-checkbox-core {\n    background-color: #26a2ff;\n    border-color: #26a2ff;\n}\n.mint-checkbox-input:checked + .mint-checkbox-core::after {\n    border-color: #fff;\n    -webkit-transform: rotate(45deg) scale(1);\n            transform: rotate(45deg) scale(1);\n}\n.mint-checkbox-input[disabled] + .mint-checkbox-core {\n    background-color: #d9d9d9;\n    border-color: #ccc;\n}\n.mint-checkbox-core {\n    display: inline-block;\n    background-color: #fff;\n    border-radius: 100%;\n    border: 1px solid #ccc;\n    position: relative;\n    width: 20px;\n    height: 20px;\n    vertical-align: middle;\n}\n.mint-checkbox-core::after {\n    border: 2px solid transparent;\n    border-left: 0;\n    border-top: 0;\n    content: \" \";\n    top: 3px;\n    left: 6px;\n    position: absolute;\n    width: 4px;\n    height: 8px;\n    -webkit-transform: rotate(45deg) scale(0);\n            transform: rotate(45deg) scale(0);\n    -webkit-transition: -webkit-transform .2s;\n    transition: -webkit-transform .2s;\n    transition: transform .2s;\n    transition: transform .2s, -webkit-transform .2s;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-radiolist .mint-cell {\n    padding: 0;\n}\n.mint-radiolist-label {\n    display: block;\n    padding: 0 10px;\n}\n.mint-radiolist-title {\n    font-size: 12px;\n    margin: 8px;\n    display: block;\n    color: #888;\n}\n.mint-radio {}\n.mint-radio.is-right {\n    float: right;\n}\n.mint-radio-label {\n    vertical-align: middle;\n    margin-left: 6px;\n}\n.mint-radio-input {\n    display: none;\n}\n.mint-radio-input:checked + .mint-radio-core {\n    background-color: #26a2ff;\n    border-color: #26a2ff;\n}\n.mint-radio-input:checked + .mint-radio-core::after {\n    background-color: #fff;\n    -webkit-transform: scale(1);\n            transform: scale(1);\n}\n.mint-radio-input[disabled] + .mint-radio-core {\n    background-color: #d9d9d9;\n    border-color: #ccc;\n}\n.mint-radio-core {\n    box-sizing: border-box;\n    display: inline-block;\n    background-color: #fff;\n    border-radius: 100%;\n    border: 1px solid #ccc;\n    position: relative;\n    width: 20px;\n    height: 20px;\n    vertical-align: middle;\n}\n.mint-radio-core::after {\n    content: \" \";\n    border-radius: 100%;\n    top: 5px;\n    left: 5px;\n    position: absolute;\n    width: 8px;\n    height: 8px;\n    -webkit-transition: -webkit-transform .2s;\n    transition: -webkit-transform .2s;\n    transition: transform .2s;\n    transition: transform .2s, -webkit-transform .2s;\n    -webkit-transform: scale(0);\n            transform: scale(0);\n}\n\n.mint-loadmore {\n    overflow: hidden\n}\n.mint-loadmore-content {}\n.mint-loadmore-content.is-dropped {\n    -webkit-transition: .2s;\n    transition: .2s\n}\n.mint-loadmore-top, .mint-loadmore-bottom {\n    text-align: center;\n    height: 50px;\n    line-height: 50px\n}\n.mint-loadmore-top {\n    margin-top: -50px\n}\n.mint-loadmore-bottom {\n    margin-bottom: -50px\n}\n.mint-loadmore-spinner {\n    display: inline-block;\n    margin-right: 5px;\n    vertical-align: middle\n}\n.mint-loadmore-text {\n    vertical-align: middle\n}\n\n.mint-actionsheet {\n  position: fixed;\n  background: #e0e0e0;\n  width: 100%;\n  text-align: center;\n  bottom: 0;\n  left: 50%;\n  -webkit-transform: translate3d(-50%, 0, 0);\n          transform: translate3d(-50%, 0, 0);\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-transition: -webkit-transform .3s ease-out;\n  transition: -webkit-transform .3s ease-out;\n  transition: transform .3s ease-out;\n  transition: transform .3s ease-out, -webkit-transform .3s ease-out;\n}\n.mint-actionsheet-list {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n.mint-actionsheet-listitem {\n  border-bottom: solid 1px #e0e0e0;\n}\n.mint-actionsheet-listitem, .mint-actionsheet-button {\n  display: block;\n  width: 100%;\n  height: 45px;\n  line-height: 45px;\n  font-size: 18px;\n  color: #333;\n  background-color: #fff;\n}\n.mint-actionsheet-listitem:active, .mint-actionsheet-button:active {\n  background-color: #f0f0f0;\n}\n.actionsheet-float-enter, .actionsheet-float-leave-active {\n  -webkit-transform: translate3d(-50%, 100%, 0);\n          transform: translate3d(-50%, 100%, 0);\n}\n.v-modal-enter {\n  -webkit-animation: v-modal-in .2s ease;\n          animation: v-modal-in .2s ease;\n}\n\n.v-modal-leave {\n  -webkit-animation: v-modal-out .2s ease forwards;\n          animation: v-modal-out .2s ease forwards;\n}\n\n@-webkit-keyframes v-modal-in {\n  0% {\n    opacity: 0;\n  }\n  100% {\n  }\n}\n\n@keyframes v-modal-in {\n  0% {\n    opacity: 0;\n  }\n  100% {\n  }\n}\n\n@-webkit-keyframes v-modal-out {\n  0% {\n  }\n  100% {\n    opacity: 0;\n  }\n}\n\n@keyframes v-modal-out {\n  0% {\n  }\n  100% {\n    opacity: 0;\n  }\n}\n\n.v-modal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.5;\n  background: #000;\n}\n\n.mint-popup {\n  position: fixed;\n  background: #fff;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate3d(-50%, -50%, 0);\n          transform: translate3d(-50%, -50%, 0);\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-transition: .2s ease-out;\n  transition: .2s ease-out;\n}\n.mint-popup-top {\n  top: 0;\n  right: auto;\n  bottom: auto;\n  left: 50%;\n  -webkit-transform: translate3d(-50%, 0, 0);\n          transform: translate3d(-50%, 0, 0);\n}\n.mint-popup-right {\n  top: 50%;\n  right: 0;\n  bottom: auto;\n  left: auto;\n  -webkit-transform: translate3d(0, -50%, 0);\n          transform: translate3d(0, -50%, 0);\n}\n.mint-popup-bottom {\n  top: auto;\n  right: auto;\n  bottom: 0;\n  left: 50%;\n  -webkit-transform: translate3d(-50%, 0, 0);\n          transform: translate3d(-50%, 0, 0);\n}\n.mint-popup-left {\n  top: 50%;\n  right: auto;\n  bottom: auto;\n  left: 0;\n  -webkit-transform: translate3d(0, -50%, 0);\n          transform: translate3d(0, -50%, 0);\n}\n.popup-slide-top-enter, .popup-slide-top-leave-active {\n  -webkit-transform: translate3d(-50%, -100%, 0);\n          transform: translate3d(-50%, -100%, 0);\n}\n.popup-slide-right-enter, .popup-slide-right-leave-active {\n  -webkit-transform: translate3d(100%, -50%, 0);\n          transform: translate3d(100%, -50%, 0);\n}\n.popup-slide-bottom-enter, .popup-slide-bottom-leave-active {\n  -webkit-transform: translate3d(-50%, 100%, 0);\n          transform: translate3d(-50%, 100%, 0);\n}\n.popup-slide-left-enter, .popup-slide-left-leave-active {\n  -webkit-transform: translate3d(-100%, -50%, 0);\n          transform: translate3d(-100%, -50%, 0);\n}\n.popup-fade-enter, .popup-fade-leave-active {\n  opacity: 0;\n}\n\n.mint-swipe {\n    overflow: hidden;\n    position: relative;\n    height: 100%;\n}\n.mint-swipe-items-wrap {\n    position: relative;\n    overflow: hidden;\n    height: 100%;\n}\n.mint-swipe-items-wrap > div {\n    position: absolute;\n    -webkit-transform: translateX(-100%);\n            transform: translateX(-100%);\n    width: 100%;\n    height: 100%;\n    display: none\n}\n.mint-swipe-items-wrap > div.is-active {\n    display: block;\n    -webkit-transform: none;\n            transform: none;\n}\n.mint-swipe-indicators {\n    position: absolute;\n    bottom: 10px;\n    left: 50%;\n    -webkit-transform: translateX(-50%);\n            transform: translateX(-50%);\n}\n.mint-swipe-indicator {\n    width: 8px;\n    height: 8px;\n    display: inline-block;\n    border-radius: 100%;\n    background: #000;\n    opacity: 0.2;\n    margin: 0 3px;\n}\n.mint-swipe-indicator.is-active {\n    background: #fff;\n}\n\n\n.mt-range {\n    position: relative;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    height: 30px;\n    line-height: 30px\n}\n.mt-range > * {\n    display: -ms-flexbox;\n    display: flex;\n    display: -webkit-box\n}\n.mt-range *[slot=start] {\n    margin-right: 5px\n}\n.mt-range *[slot=end] {\n    margin-left: 5px\n}\n.mt-range-content {\n    position: relative;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1;\n    margin-right: 30px\n}\n.mt-range-runway {\n    position: absolute;\n    top: 50%;\n    -webkit-transform: translateY(-50%);\n            transform: translateY(-50%);\n    left: 0;\n    right: -30px;\n    border-top-color: #a9acb1;\n    border-top-style: solid\n}\n.mt-range-thumb {\n    background-color: #fff;\n    position: absolute;\n    left: 0;\n    top: 0;\n    width: 30px;\n    height: 30px;\n    border-radius: 100%;\n    cursor: move;\n    box-shadow: 0 1px 3px rgba(0,0,0,.4)\n}\n.mt-range-progress {\n    position: absolute;\n    display: block;\n    background-color: #26a2ff;\n    top: 50%;\n    -webkit-transform: translateY(-50%);\n            transform: translateY(-50%);\n    width: 0\n}\n.mt-range--disabled {\n    opacity: 0.5\n}\n\n.picker {\n  overflow: hidden;\n}\n.picker-toolbar {\n  height: 40px;\n}\n.picker-items {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-pack: center;\n      -ms-flex-pack: center;\n          justify-content: center;\n  padding: 0;\n  text-align: right;\n  font-size: 24px;\n  position: relative;\n}\n.picker-center-highlight {\n  box-sizing: border-box;\n  position: absolute;\n  left: 0;\n  width: 100%;\n  top: 50%;\n  margin-top: -18px;\n  pointer-events: none\n}\n.picker-center-highlight:before, .picker-center-highlight:after {\n  content: '';\n  position: absolute;\n  height: 1px;\n  width: 100%;\n  background-color: #eaeaea;\n  display: block;\n  z-index: 15;\n  -webkit-transform: scaleY(0.5);\n          transform: scaleY(0.5);\n}\n.picker-center-highlight:before {\n  left: 0;\n  top: 0;\n  bottom: auto;\n  right: auto;\n}\n.picker-center-highlight:after {\n  left: 0;\n  bottom: 0;\n  right: auto;\n  top: auto;\n}\n\n.picker-slot {\n  font-size: 18px;\n  overflow: hidden;\n  position: relative;\n  max-height: 100%\n}\n.picker-slot.picker-slot-left {\n  text-align: left;\n}\n.picker-slot.picker-slot-center {\n  text-align: center;\n}\n.picker-slot.picker-slot-right {\n  text-align: right;\n}\n.picker-slot.picker-slot-divider {\n  color: #000;\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  -webkit-box-align: center;\n      -ms-flex-align: center;\n          align-items: center\n}\n.picker-slot-wrapper {\n  -webkit-transition-duration: 0.3s;\n          transition-duration: 0.3s;\n  -webkit-transition-timing-function: ease-out;\n          transition-timing-function: ease-out;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n}\n.picker-slot-wrapper.dragging, .picker-slot-wrapper.dragging .picker-item {\n  -webkit-transition-duration: 0s;\n          transition-duration: 0s;\n}\n.picker-item {\n  height: 36px;\n  line-height: 36px;\n  padding: 0 10px;\n  white-space: nowrap;\n  position: relative;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  color: #707274;\n  left: 0;\n  top: 0;\n  width: 100%;\n  box-sizing: border-box;\n  -webkit-transition-duration: .3s;\n          transition-duration: .3s;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n}\n.picker-slot-absolute .picker-item {\n  position: absolute;\n}\n.picker-item.picker-item-far {\n  pointer-events: none\n}\n.picker-item.picker-selected {\n  color: #000;\n  -webkit-transform: translate3d(0, 0, 0) rotateX(0);\n          transform: translate3d(0, 0, 0) rotateX(0);\n}\n.picker-3d .picker-items {\n  overflow: hidden;\n  -webkit-perspective: 700px;\n          perspective: 700px;\n}\n.picker-3d .picker-item, .picker-3d .picker-slot, .picker-3d .picker-slot-wrapper {\n  -webkit-transform-style: preserve-3d;\n          transform-style: preserve-3d\n}\n.picker-3d .picker-slot {\n  overflow: visible\n}\n.picker-3d .picker-item {\n  -webkit-transform-origin: center center;\n          transform-origin: center center;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-transition-timing-function: ease-out;\n          transition-timing-function: ease-out\n}\n\n.mt-progress {\n    position: relative;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    height: 30px;\n    line-height: 30px\n}\n.mt-progress > * {\n    display: -ms-flexbox;\n    display: flex;\n    display: -webkit-box\n}\n.mt-progress *[slot=\"start\"] {\n    margin-right: 5px\n}\n.mt-progress *[slot=\"end\"] {\n    margin-left: 5px\n}\n.mt-progress-content {\n    position: relative;\n    -webkit-box-flex: 1;\n        -ms-flex: 1;\n            flex: 1\n}\n.mt-progress-runway {\n    position: absolute;\n    -webkit-transform: translate(0, -50%);\n            transform: translate(0, -50%);\n    top: 50%;\n    left: 0;\n    right: 0;\n    background-color: #ebebeb;\n    height: 3px\n}\n.mt-progress-progress {\n    position: absolute;\n    display: block;\n    background-color: #26a2ff;\n    top: 50%;\n    -webkit-transform: translate(0, -50%);\n            transform: translate(0, -50%);\n    width: 0\n}\n\n.mint-toast {\n    position: fixed;\n    max-width: 80%;\n    border-radius: 5px;\n    background: rgba(0, 0, 0, 0.7);\n    color: #fff;\n    box-sizing: border-box;\n    text-align: center;\n    z-index: 1000;\n    -webkit-transition: opacity .3s linear;\n    transition: opacity .3s linear\n}\n.mint-toast.is-placebottom {\n    bottom: 50px;\n    left: 50%;\n    -webkit-transform: translate(-50%, 0);\n            transform: translate(-50%, 0)\n}\n.mint-toast.is-placemiddle {\n    left: 50%;\n    top: 50%;\n    -webkit-transform: translate(-50%, -50%);\n            transform: translate(-50%, -50%)\n}\n.mint-toast.is-placetop {\n    top: 50px;\n    left: 50%;\n    -webkit-transform: translate(-50%, 0);\n            transform: translate(-50%, 0)\n}\n.mint-toast-icon {\n    display: block;\n    text-align: center;\n    font-size: 56px\n}\n.mint-toast-text {\n    font-size: 14px;\n    display: block;\n    text-align: center\n}\n.mint-toast-pop-enter, .mint-toast-pop-leave-active {\n    opacity: 0\n}\n\n.mint-indicator {\n  -webkit-transition: opacity .2s linear;\n  transition: opacity .2s linear;\n}\n.mint-indicator-wrapper {\n  top: 50%;\n  left: 50%;\n  position: fixed;\n  -webkit-transform: translate(-50%, -50%);\n          transform: translate(-50%, -50%);\n  border-radius: 5px;\n  background: rgba(0, 0, 0, 0.7);\n  color: white;\n  box-sizing: border-box;\n  text-align: center;\n}\n.mint-indicator-text {\n  display: block;\n  color: #fff;\n  text-align: center;\n  margin-top: 10px;\n  font-size: 16px;\n}\n.mint-indicator-spin {\n  display: inline-block;\n  text-align: center;\n}\n.mint-indicator-mask {\n  top: 0;\n  left: 0;\n  position: fixed;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n  background: transparent;\n}\n.mint-indicator-enter, .mint-indicator-leave-active {\n  opacity: 0;\n}\n\n.mint-msgbox {\n  position: fixed;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate3d(-50%, -50%, 0);\n          transform: translate3d(-50%, -50%, 0);\n  background-color: #fff;\n  width: 85%;\n  border-radius: 3px;\n  font-size: 16px;\n  -webkit-user-select: none;\n  overflow: hidden;\n  -webkit-backface-visibility: hidden;\n          backface-visibility: hidden;\n  -webkit-transition: .2s;\n  transition: .2s;\n}\n.mint-msgbox-header {\n  padding: 15px 0 0;\n}\n.mint-msgbox-content {\n  padding: 10px 20px 15px;\n  border-bottom: 1px solid #ddd;\n  min-height: 36px;\n  position: relative;\n}\n.mint-msgbox-input {\n  padding-top: 15px;\n}\n.mint-msgbox-input input {\n  border: 1px solid #dedede;\n  border-radius: 5px;\n  padding: 4px 5px;\n  width: 100%;\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n  outline: none;\n}\n.mint-msgbox-input input.invalid {\n  border-color: #ff4949;\n}\n.mint-msgbox-input input.invalid:focus {\n  border-color: #ff4949;\n}\n.mint-msgbox-errormsg {\n  color: red;\n  font-size: 12px;\n  min-height: 18px;\n  margin-top: 2px;\n}\n.mint-msgbox-title {\n  text-align: center;\n  padding-left: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  font-weight: 700;\n  color: #333;\n}\n.mint-msgbox-message {\n  color: #999;\n  margin: 0;\n  text-align: center;\n  line-height: 36px;\n}\n.mint-msgbox-btns {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 40px;\n  line-height: 40px;\n}\n.mint-msgbox-btn {\n  line-height: 35px;\n  display: block;\n  background-color: #fff;\n  -webkit-box-flex: 1;\n      -ms-flex: 1;\n          flex: 1;\n  margin: 0;\n  border: 0;\n}\n.mint-msgbox-btn:focus {\n  outline: none;\n}\n.mint-msgbox-btn:active {\n  background-color: #fff;\n}\n.mint-msgbox-cancel {\n  width: 50%;\n  border-right: 1px solid #ddd;\n}\n.mint-msgbox-cancel:active {\n  color: #000;\n}\n.mint-msgbox-confirm {\n  color: #26a2ff;\n  width: 50%;\n}\n.mint-msgbox-confirm:active {\n  color: #26a2ff;\n}\n.msgbox-bounce-enter {\n  opacity: 0;\n  -webkit-transform: translate3d(-50%, -50%, 0) scale(0.7);\n          transform: translate3d(-50%, -50%, 0) scale(0.7);\n}\n.msgbox-bounce-leave-active {\n  opacity: 0;\n  -webkit-transform: translate3d(-50%, -50%, 0) scale(0.9);\n          transform: translate3d(-50%, -50%, 0) scale(0.9);\n}\n\n.v-modal-enter {\n  -webkit-animation: v-modal-in .2s ease;\n          animation: v-modal-in .2s ease;\n}\n.v-modal-leave {\n  -webkit-animation: v-modal-out .2s ease forwards;\n          animation: v-modal-out .2s ease forwards;\n}\n@-webkit-keyframes v-modal-in {\n0% {\n    opacity: 0;\n}\n100% {\n}\n}\n@keyframes v-modal-in {\n0% {\n    opacity: 0;\n}\n100% {\n}\n}\n@-webkit-keyframes v-modal-out {\n0% {\n}\n100% {\n    opacity: 0;\n}\n}\n@keyframes v-modal-out {\n0% {\n}\n100% {\n    opacity: 0;\n}\n}\n.v-modal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.5;\n  background: #000;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-datetime {\n    width: 100%;\n}\n.mint-datetime .picker-slot-wrapper, .mint-datetime .picker-item {\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n}\n.mint-datetime .picker-toolbar {\n    border-bottom: solid 1px #eaeaea;\n}\n.mint-datetime-action {\n    display: inline-block;\n    width: 50%;\n    text-align: center;\n    line-height: 40px;\n    font-size: 16px;\n    color: #26a2ff;\n}\n.mint-datetime-cancel {\n    float: left;\n}\n.mint-datetime-confirm {\n    float: right;\n}\n/* Cell Component */\n/* Header Component */\n/* Button Component */\n/* Tab Item Component */\n/* Tabbar Component */\n/* Navbar Component */\n/* Checklist Component */\n/* Radio Component */\n/* z-index */\n.mint-indexlist {\n    width: 100%;\n    position: relative;\n    overflow: hidden\n}\n.mint-indexlist-content {\n    margin: 0;\n    padding: 0;\n    overflow: auto\n}\n.mint-indexlist-nav {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 0;\n    margin: 0;\n    background-color: #fff;\n    border-left: solid 1px #ddd;\n    text-align: center;\n    max-height: 100%;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n            flex-direction: column;\n    -webkit-box-pack: center;\n        -ms-flex-pack: center;\n            justify-content: center\n}\n.mint-indexlist-navlist {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n    max-height: 100%;\n    display: -webkit-box;\n    display: -ms-flexbox;\n    display: flex;\n    -webkit-box-orient: vertical;\n    -webkit-box-direction: normal;\n        -ms-flex-direction: column;\n            flex-direction: column\n}\n.mint-indexlist-navitem {\n    padding: 2px 6px;\n    font-size: 12px;\n    -webkit-user-select: none;\n       -moz-user-select: none;\n        -ms-user-select: none;\n            user-select: none;\n    -webkit-touch-callout: none\n}\n.mint-indexlist-indicator {\n    position: absolute;\n    width: 50px;\n    height: 50px;\n    top: 50%;\n    left: 50%;\n    -webkit-transform: translate(-50%, -50%);\n            transform: translate(-50%, -50%);\n    text-align: center;\n    line-height: 50px;\n    background-color: rgba(0, 0, 0, .7);\n    border-radius: 5px;\n    color: #fff;\n    font-size: 22px\n}\n\n.mint-indexsection {\n    padding: 0;\n    margin: 0\n}\n.mint-indexsection-index {\n    margin: 0;\n    padding: 10px;\n    background-color: #fafafa\n}\n.mint-indexsection-index + ul {\n    padding: 0\n}\n\n.mint-palette-button{\n  display:inline-block;\n  position:relative;\n  border-radius:50%;\n  width: 56px;\n  height:56px;\n  line-height:56px;\n  text-align:center;\n  -webkit-transition:-webkit-transform .1s ease-in-out;\n  transition:-webkit-transform .1s ease-in-out;\n  transition:transform .1s ease-in-out;\n  transition:transform .1s ease-in-out, -webkit-transform .1s ease-in-out;\n}\n.mint-main-button{\n  position:absolute;\n  top:0;\n  left:0;\n  width:100%;\n  height:100%;\n  border-radius:50%;\n  background-color:blue;\n  font-size:2em;\n}\n.mint-palette-button-active{\n  -webkit-animation: mint-zoom 0.5s ease-in-out;\n          animation: mint-zoom 0.5s ease-in-out;\n}\n.mint-sub-button-container>*{\n  position:absolute;\n  top:15px;\n  left:15px;\n  width:25px;\n  height:25px;\n  -webkit-transition:-webkit-transform .3s ease-in-out;\n  transition:-webkit-transform .3s ease-in-out;\n  transition:transform .3s ease-in-out;\n  transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;\n}\n@-webkit-keyframes mint-zoom{\n0% {-webkit-transform:scale(1);transform:scale(1)\n}\n10% {-webkit-transform:scale(1.1);transform:scale(1.1)\n}\n30% {-webkit-transform:scale(0.9);transform:scale(0.9)\n}\n50% {-webkit-transform:scale(1.05);transform:scale(1.05)\n}\n70% {-webkit-transform:scale(0.95);transform:scale(0.95)\n}\n90% {-webkit-transform:scale(1.01);transform:scale(1.01)\n}\n100% {-webkit-transform:scale(1);transform:scale(1)\n}\n}\n@keyframes mint-zoom{\n0% {-webkit-transform:scale(1);transform:scale(1)\n}\n10% {-webkit-transform:scale(1.1);transform:scale(1.1)\n}\n30% {-webkit-transform:scale(0.9);transform:scale(0.9)\n}\n50% {-webkit-transform:scale(1.05);transform:scale(1.05)\n}\n70% {-webkit-transform:scale(0.95);transform:scale(0.95)\n}\n90% {-webkit-transform:scale(1.01);transform:scale(1.01)\n}\n100% {-webkit-transform:scale(1);transform:scale(1)\n}\n}\n\n@font-face {font-family: \"mintui\";\n  src: url(data:application/x-font-ttf;base64,AAEAAAAPAIAAAwBwRkZUTXMrDTgAAAD8AAAAHE9TLzJXb1zGAAABGAAAAGBjbWFwsbgH3gAAAXgAAAFaY3Z0IA1j/vQAAA2UAAAAJGZwZ20w956VAAANuAAACZZnYXNwAAAAEAAADYwAAAAIZ2x5Zm8hHaQAAALUAAAHeGhlYWQKwq5kAAAKTAAAADZoaGVhCJMESQAACoQAAAAkaG10eBuiAmQAAAqoAAAAKGxvY2EJUArqAAAK0AAAABhtYXhwAS4KKwAACugAAAAgbmFtZal8DOEAAAsIAAACE3Bvc3QbrFqUAAANHAAAAHBwcmVwpbm+ZgAAF1AAAACVAAAAAQAAAADMPaLPAAAAANN2tTQAAAAA03a1NAAEBBIB9AAFAAACmQLMAAAAjwKZAswAAAHrADMBCQAAAgAGAwAAAAAAAAAAAAEQAAAAAAAAAAAAAABQZkVkAMAAeOYJA4D/gABcA38AgAAAAAEAAAAAAxgAAAAAACAAAQAAAAMAAAADAAAAHAABAAAAAABUAAMAAQAAABwABAA4AAAACgAIAAIAAgB45gLmBeYJ//8AAAB45gDmBOYI////ixoEGgMaAQABAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACACIAAAEyAqoAAwAHAClAJgAAAAMCAANXAAIBAQJLAAICAU8EAQECAUMAAAcGBQQAAwADEQUPKzMRIREnMxEjIgEQ7szMAqr9ViICZgAAAAUALP/hA7wDGAAWADAAOgBSAF4Bd0uwE1BYQEoCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoGCV4RAQwGBAYMXgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQhtLsBdQWEBLAgEADQ4NAA5mAAMOAQ4DXgABCAgBXBABCQgKCAkKZhEBDAYEBgxeAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0uwGFBYQEwCAQANDg0ADmYAAw4BDgNeAAEICAFcEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CG0BOAgEADQ4NAA5mAAMOAQ4DAWYAAQgOAQhkEAEJCAoICQpmEQEMBgQGDARmAAsEC2kPAQgABgwIBlgACgcFAgQLCgRZEgEODg1RAA0NCg5CWVlZQChTUzs7MjEXF1NeU15bWDtSO1JLQzc1MToyOhcwFzBRETEYESgVQBMWKwEGKwEiDgIdASE1NCY1NC4CKwEVIQUVFBYUDgIjBiYrASchBysBIiciLgI9ARciBhQWMzI2NCYXBgcOAx4BOwYyNicuAScmJwE1ND4COwEyFh0BARkbGlMSJRwSA5ABChgnHoX+SgKiARUfIw4OHw4gLf5JLB0iFBkZIBMIdwwSEgwNEhKMCAYFCwQCBA8OJUNRUEAkFxYJBQkFBQb+pAUPGhW8HykCHwEMGScaTCkQHAQNIBsSYYg0Fzo6JRcJAQGAgAETGyAOpz8RGhERGhF8GhYTJA4QDQgYGg0jERMUAXfkCxgTDB0m4wAAAQDp//UCugMMABEASLYKAQIAAQFAS7AaUFhACwABAQpBAAAACwBCG0uwKlBYQAsAAAABUQABAQoAQhtAEAABAAABTQABAQBRAAABAEVZWbMYFQIQKwkCFhQGIicBJjcmNwE2MhYUArD+iQF3ChQcCv5yCgEBCgGOChwUAtT+rf6sCRwTCgFoCw8OCwFoChMcAAAAAAMAXgElA6EB2gAHAA8AFwAhQB4EAgIAAQEATQQCAgAAAVEFAwIBAAFFExMTExMQBhQrEiIGFBYyNjQkIgYUFjI2NCQiBhQWMjY03ks1NUs1ARNLNTVLNQERSzU1SzUB2jVLNTVLNTVLNTVLNTVLNTVLAAAAAQAA/4AEtgN/ABAAEkAPBwYFAwAFAD0AAABfHQEPKwEEAQcmATcBNiQ+AT8BMh4BBLb/AP6adZT+uW0BJZkBCJ5uGBUFDicDNuP95Le4AUdu/wCa+YVeDg4EIwACAE7/6AO4A1IAGAAgACdAJBEDAgMEAUAAAAAEAwAEWQADAAECAwFZAAICCwJCExMVJRgFEyslJyYnNjU0LgEiDgEUHgEzMjcWHwEWMjY0JCImNDYyFhQDrdQFB0lfpMKkX1+kYYZlAwTUCx8W/nb4sLD4sCrYBgJie2KoYWGoxahhWwYE2QsXH5a0/rOz/gAGAEH/wAO/Az4ADwAbADMAQwBPAFsAVUBSW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEGxoZGBcWFRQTEhEQJAEAAUAAAwADaAACAQJpBAEAAQEATQQBAAABUQUBAQABRT08NTQpKB0cFxAGECsAIg4CFB4CMj4CNC4BAwcnByc3JzcXNxcHEiInLgEnJjQ3PgE3NjIXHgEXFhQHDgEHAiIOAhQeAjI+AjQuAQMnByc3JzcXNxcHFyEXNxc3JzcnBycHFwJataZ3R0d3prWmd0dHd0Qimpoimpoimpoimjm2U1F7IiMjIntRU7ZTUHwiIyMifFBUtaV4RkZ4pbWleEdHeGWamiOamiOamiOamv6IIZqaIZqaIZqaIZoDPkd3praleEZGeKW2pnf97yKamiKamiKamiKa/kAjInxQU7ZTUXsiIyMie1FTtlNQfCIDWkZ4pbWleEdHeKW1pXj9zJqaI5qaI5qaI5qaIZqaIZqaIZqaIZoAAAAABABHAAIDtwLdAA0AHQAwADEAMUAuMQEEBQFAAAAABQQABVkABAADAgQDWQACAQECTQACAgFRAAECAUU2NDU1NRIGFCslASYiBwEGFxYzITI3NiUUBisBIiY9ATQ2OwEyFhUnBiMnIiY1JzU0NjsBMhYdAhQHA7f+dxA+EP53EREQHwMSHxAR/mkKCD4ICwsIPggKBQUIPggKAQsHPwgKBVACdBkZ/YwbGhkZGjEJDQ0JJQoNDQpWBQEIB2mmBgkJBqVrBgQAAAADAED/wwO+A0IAAAAQABYAJkAjFhUUExIRBgEAAUAAAQA+AAABAQBNAAAAAVEAAQABRRcRAhArATIiDgIUHgIyPgI0LgEBJzcXARcB/1u2pndHR3emtqZ3R0d3/sXCI58BIyMDQkd4pbameEdHeKa2pXj9w8MjnwEkIwAAAQAAAAEAACFDvy9fDzz1AAsEAAAAAADTdrU0AAAAANN2tTQAAP+ABLYDfwAAAAgAAgAAAAAAAAABAAADf/+AAFwEvwAAAAAEtgABAAAAAAAAAAAAAAAAAAAACQF2ACIAAAAAAVUAAAPpACwEAADpBAAAXgS/AAAD6ABOBAAAQQBHAEAAAAAoACgAKAFkAa4B6AIWAl4DGgN+A7wAAQAAAAsAXwAGAAAAAAACACYANABsAAAAigmWAAAAAAAAAAwAlgABAAAAAAABAAYAAAABAAAAAAACAAYABgABAAAAAAADACEADAABAAAAAAAEAAYALQABAAAAAAAFAEYAMwABAAAAAAAGAAYAeQADAAEECQABAAwAfwADAAEECQACAAwAiwADAAEECQADAEIAlwADAAEECQAEAAwA2QADAAEECQAFAIwA5QADAAEECQAGAAwBcW1pbnR1aU1lZGl1bUZvbnRGb3JnZSAyLjAgOiBtaW50dWkgOiAzLTYtMjAxNm1pbnR1aVZlcnNpb24gMS4wIDsgdHRmYXV0b2hpbnQgKHYwLjk0KSAtbCA4IC1yIDUwIC1HIDIwMCAteCAxNCAtdyAiRyIgLWYgLXNtaW50dWkAbQBpAG4AdAB1AGkATQBlAGQAaQB1AG0ARgBvAG4AdABGAG8AcgBnAGUAIAAyAC4AMAAgADoAIABtAGkAbgB0AHUAaQAgADoAIAAzAC0ANgAtADIAMAAxADYAbQBpAG4AdAB1AGkAVgBlAHIAcwBpAG8AbgAgADEALgAwACAAOwAgAHQAdABmAGEAdQB0AG8AaABpAG4AdAAgACgAdgAwAC4AOQA0ACkAIAAtAGwAIAA4ACAALQByACAANQAwACAALQBHACAAMgAwADAAIAAtAHgAIAAxADQAIAAtAHcAIAAiAEcAIgAgAC0AZgAgAC0AcwBtAGkAbgB0AHUAaQAAAgAAAAAAAP+DADIAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQACAFsBAgEDAQQBBQEGAQcBCAd1bmlFNjAwB3VuaUU2MDEHdW5pRTYwMgd1bmlFNjA0B3VuaUU2MDUHdW5pRTYwOAd1bmlFNjA5AAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgMY/+EDf/+AAxj/4QN//4CwACywIGBmLbABLCBkILDAULAEJlqwBEVbWCEjIRuKWCCwUFBYIbBAWRsgsDhQWCGwOFlZILAKRWFksChQWCGwCkUgsDBQWCGwMFkbILDAUFggZiCKimEgsApQWGAbILAgUFghsApgGyCwNlBYIbA2YBtgWVlZG7AAK1lZI7AAUFhlWVktsAIsIEUgsAQlYWQgsAVDUFiwBSNCsAYjQhshIVmwAWAtsAMsIyEjISBksQViQiCwBiNCsgoAAiohILAGQyCKIIqwACuxMAUlilFYYFAbYVJZWCNZISCwQFNYsAArGyGwQFkjsABQWGVZLbAELLAII0KwByNCsAAjQrAAQ7AHQ1FYsAhDK7IAAQBDYEKwFmUcWS2wBSywAEMgRSCwAkVjsAFFYmBELbAGLLAAQyBFILAAKyOxBAQlYCBFiiNhIGQgsCBQWCGwABuwMFBYsCAbsEBZWSOwAFBYZVmwAyUjYURELbAHLLEFBUWwAWFELbAILLABYCAgsApDSrAAUFggsAojQlmwC0NKsABSWCCwCyNCWS2wCSwguAQAYiC4BABjiiNhsAxDYCCKYCCwDCNCIy2wCixLVFixBwFEWSSwDWUjeC2wCyxLUVhLU1ixBwFEWRshWSSwE2UjeC2wDCyxAA1DVVixDQ1DsAFhQrAJK1mwAEOwAiVCsgABAENgQrEKAiVCsQsCJUKwARYjILADJVBYsABDsAQlQoqKIIojYbAIKiEjsAFhIIojYbAIKiEbsABDsAIlQrACJWGwCCohWbAKQ0ewC0NHYLCAYiCwAkVjsAFFYmCxAAATI0SwAUOwAD6yAQEBQ2BCLbANLLEABUVUWACwDSNCIGCwAWG1Dg4BAAwAQkKKYLEMBCuwaysbIlktsA4ssQANKy2wDyyxAQ0rLbAQLLECDSstsBEssQMNKy2wEiyxBA0rLbATLLEFDSstsBQssQYNKy2wFSyxBw0rLbAWLLEIDSstsBcssQkNKy2wGCywByuxAAVFVFgAsA0jQiBgsAFhtQ4OAQAMAEJCimCxDAQrsGsrGyJZLbAZLLEAGCstsBossQEYKy2wGyyxAhgrLbAcLLEDGCstsB0ssQQYKy2wHiyxBRgrLbAfLLEGGCstsCAssQcYKy2wISyxCBgrLbAiLLEJGCstsCMsIGCwDmAgQyOwAWBDsAIlsAIlUVgjIDywAWAjsBJlHBshIVktsCQssCMrsCMqLbAlLCAgRyAgsAJFY7ABRWJgI2E4IyCKVVggRyAgsAJFY7ABRWJgI2E4GyFZLbAmLLEABUVUWACwARawJSqwARUwGyJZLbAnLLAHK7EABUVUWACwARawJSqwARUwGyJZLbAoLCA1sAFgLbApLACwA0VjsAFFYrAAK7ACRWOwAUVisAArsAAWtAAAAAAARD4jOLEoARUqLbAqLCA8IEcgsAJFY7ABRWJgsABDYTgtsCssLhc8LbAsLCA8IEcgsAJFY7ABRWJgsABDYbABQ2M4LbAtLLECABYlIC4gR7AAI0KwAiVJiopHI0cjYSBYYhshWbABI0KyLAEBFRQqLbAuLLAAFrAEJbAEJUcjRyNhsAZFK2WKLiMgIDyKOC2wLyywABawBCWwBCUgLkcjRyNhILAEI0KwBkUrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyCwCUMgiiNHI0cjYSNGYLAEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmEjICCwBCYjRmE4GyOwCUNGsAIlsAlDRyNHI2FgILAEQ7CAYmAjILAAKyOwBENgsAArsAUlYbAFJbCAYrAEJmEgsAQlYGQjsAMlYGRQWCEbIyFZIyAgsAQmI0ZhOFktsDAssAAWICAgsAUmIC5HI0cjYSM8OC2wMSywABYgsAkjQiAgIEYjR7AAKyNhOC2wMiywABawAyWwAiVHI0cjYbAAVFguIDwjIRuwAiWwAiVHI0cjYSCwBSWwBCVHI0cjYbAGJbAFJUmwAiVhsAFFYyMgWGIbIVljsAFFYmAjLiMgIDyKOCMhWS2wMyywABYgsAlDIC5HI0cjYSBgsCBgZrCAYiMgIDyKOC2wNCwjIC5GsAIlRlJYIDxZLrEkARQrLbA1LCMgLkawAiVGUFggPFkusSQBFCstsDYsIyAuRrACJUZSWCA8WSMgLkawAiVGUFggPFkusSQBFCstsDcssC4rIyAuRrACJUZSWCA8WS6xJAEUKy2wOCywLyuKICA8sAQjQoo4IyAuRrACJUZSWCA8WS6xJAEUK7AEQy6wJCstsDkssAAWsAQlsAQmIC5HI0cjYbAGRSsjIDwgLiM4sSQBFCstsDossQkEJUKwABawBCWwBCUgLkcjRyNhILAEI0KwBkUrILBgUFggsEBRWLMCIAMgG7MCJgMaWUJCIyBHsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYbACJUZhOCMgPCM4GyEgIEYjR7AAKyNhOCFZsSQBFCstsDsssC4rLrEkARQrLbA8LLAvKyEjICA8sAQjQiM4sSQBFCuwBEMusCQrLbA9LLAAFSBHsAAjQrIAAQEVFBMusCoqLbA+LLAAFSBHsAAjQrIAAQEVFBMusCoqLbA/LLEAARQTsCsqLbBALLAtKi2wQSywABZFIyAuIEaKI2E4sSQBFCstsEIssAkjQrBBKy2wQyyyAAA6Ky2wRCyyAAE6Ky2wRSyyAQA6Ky2wRiyyAQE6Ky2wRyyyAAA7Ky2wSCyyAAE7Ky2wSSyyAQA7Ky2wSiyyAQE7Ky2wSyyyAAA3Ky2wTCyyAAE3Ky2wTSyyAQA3Ky2wTiyyAQE3Ky2wTyyyAAA5Ky2wUCyyAAE5Ky2wUSyyAQA5Ky2wUiyyAQE5Ky2wUyyyAAA8Ky2wVCyyAAE8Ky2wVSyyAQA8Ky2wViyyAQE8Ky2wVyyyAAA4Ky2wWCyyAAE4Ky2wWSyyAQA4Ky2wWiyyAQE4Ky2wWyywMCsusSQBFCstsFwssDArsDQrLbBdLLAwK7A1Ky2wXiywABawMCuwNistsF8ssDErLrEkARQrLbBgLLAxK7A0Ky2wYSywMSuwNSstsGIssDErsDYrLbBjLLAyKy6xJAEUKy2wZCywMiuwNCstsGUssDIrsDUrLbBmLLAyK7A2Ky2wZyywMysusSQBFCstsGgssDMrsDQrLbBpLLAzK7A1Ky2waiywMyuwNistsGssK7AIZbADJFB4sAEVMC0AAEu4AMhSWLEBAY5ZuQgACABjILABI0QgsAMjcLAORSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhsAFFYyNisAIjRLMKCQUEK7MKCwUEK7MODwUEK1myBCgJRVJEswoNBgQrsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAAA)\n}\n\n.mintui {\n  font-family:\"mintui\" !important;\n  font-size:16px;\n  font-style:normal;\n  -webkit-font-smoothing: antialiased;\n  -webkit-text-stroke-width: 0.2px;\n  -moz-osx-font-smoothing: grayscale;\n}\n.mintui-search:before { content: \"\\E604\"; }\n.mintui-more:before { content: \"\\E601\"; }\n.mintui-back:before { content: \"\\E600\"; }\n.mintui-field-error:before { content: \"\\E605\"; }\n.mintui-field-warning:before { content: \"\\E608\"; }\n.mintui-success:before { content: \"\\E602\"; }\n.mintui-field-success:before { content: \"\\E609\"; }\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"mint-ui\",\n  \"version\": \"2.2.13\",\n  \"description\": \"Mobile UI elements for vue.js\",\n  \"keywords\": [\n    \"component\",\n    \"vue\",\n    \"mobile\",\n    \"eleme\"\n  ],\n  \"main\": \"lib/mint-ui.common.js\",\n  \"style\": \"lib/style.css\",\n  \"files\": [\n    \"lib\",\n    \"src\",\n    \"packages\"\n  ],\n  \"scripts\": {\n    \"dev\": \"npm run bootstrap && npm run build:entry && cooking watch -c build/cooking.demo.js -p\",\n    \"bootstrap\": \"yarn || npm i\",\n    \"dist\": \"npm run clean && npm run build:entry && npm run lint && cooking build -c build/cooking.conf.js,build/cooking.common.js,build/cooking.component.js -p\",\n    \"deploy\": \"npm run build:entry && cooking build -c build/cooking.demo.js -p && gh-pages -d example/dist --remote eleme\",\n    \"build:entry\": \"node build/bin/build-entry\",\n    \"pub\": \"sh build/release.sh\",\n    \"pub:all\": \"node build/bin/build-all.js && lerna publish\",\n    \"clean\": \"rimraf lib && rimraf packages/*/lib\",\n    \"lint\": \"eslint src/**/*.js packages/**/*.{js,vue} build/**/*.js --quiet\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/ElemeFE/mint-ui.git\"\n  },\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/ElemeFE/mint-ui/issues\"\n  },\n  \"author\": \"elemefe\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"array-find-index\": \"^1.0.2\",\n    \"raf.js\": \"0.0.4\",\n    \"vue-lazyload\": \"^1.0.1\"\n  },\n  \"peerDependencies\": {\n    \"vue\": \"^2.3.0\"\n  },\n  \"devDependencies\": {\n    \"cooking\": \"^1.2.4\",\n    \"cooking-buble\": \"^0.1.2\",\n    \"cooking-lint\": \"^0.1.2\",\n    \"cooking-saladcss\": \"^0.4.0\",\n    \"cooking-vue2\": \"^0.2.2\",\n    \"css-loader\": \"^0.25.0\",\n    \"eslint\": \"^3.12.2\",\n    \"extract-text-webpack-plugin\": \"beta\",\n    \"fastclick\": \"^1.0.6\",\n    \"file-loader\": \"^0.9.0\",\n    \"gh-pages\": \"^0.11.0\",\n    \"html-loader\": \"^0.4.3\",\n    \"html-webpack-plugin\": \"^2.22.0\",\n    \"json-loader\": \"^0.5.4\",\n    \"json-templater\": \"^1.0.4\",\n    \"lerna\": \"2.0.0-beta.18\",\n    \"my-local-ip\": \"^1.0.0\",\n    \"postcss\": \"^5.2.0\",\n    \"postcss-loader\": \"^0.13.0\",\n    \"rimraf\": \"^2.5.4\",\n    \"style-loader\": \"^0.13.1\",\n    \"uppercamelcase\": \"^1.1.0\",\n    \"url-loader\": \"^0.5.7\",\n    \"vue\": \"^2.3.2\",\n    \"vue-loader\": \"12.0.3\",\n    \"vue-router\": \"^2.0.0\",\n    \"vue-template-compiler\": \"^2.3.2\",\n    \"vue-template-es2015-compiler\": \"^1.4.2\",\n    \"webpack\": \"beta\",\n    \"webpack-dev-server\": \"beta\",\n    \"webpack-shell-plugin\": \"^0.4.3\"\n  }\n}\n"
  },
  {
    "path": "packages/README.md",
    "content": ""
  },
  {
    "path": "packages/actionsheet/README.md",
    "content": "# Overview\nmint-actionsheet is an action sheet component for vue.js\n\n# Installation\nFirst, install `mint-actionsheet` from npm:\n```bash\n$ npm install mint-actionsheet\n```\n\nImport it:\n```Javascript\nrequire ('mint-actionsheet/lib/index.css');\n\n// ES6 mudule\nimport Actionsheet from 'mint-actionsheet';\n\n// CommonJS\nconst Actionsheet = require('mint-actionsheet').default;\n```\n\nRegister component:\n```Javascript\nVue.component('actionsheet', Actionsheet);\n```\n\nThen use it:\n```html\n<actionsheet :actions=\"actions\" :visible.sync=\"sheetVisible\"></actionsheet>\n```\n\n# Usage\n`actions` is an array of objects. Each object has two keys: `name` and `method`. `name` is the text showing on the sheet, and `method` (optional) is the callback when clicked.\n\nSync `visible` with one of your vue instance variables. Toggle it to switch on/off the action sheet.\n\n# API\n| Option             | Description                                                       | Value   | Default  |\n|--------------------|-------------------------------------------------------------------|---------|----------|\n| actions            | array of actions                                                  | Array   |          |\n| visible            | visibility of the action sheet                                    | Boolean | 'false'  |\n| cancelText         | text of the cancel button                                         | String  | '取消'   |\n| closeOnClickModal  | determines if the action sheet turn off when the modal is clicked | Boolean | 'true'   |\n\n# License\nMIT"
  },
  {
    "path": "packages/actionsheet/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintActionsheet',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/actionsheet/index.js",
    "content": "export { default } from './src/actionsheet.vue';\n"
  },
  {
    "path": "packages/actionsheet/package.json",
    "content": "{\n  \"name\": \"mint-actionsheet\",\n  \"description\": \"An action sheet component for vue.js\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-actionsheet\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/actionsheet/src/actionsheet.vue",
    "content": "<template>\n  <transition name=\"actionsheet-float\">\n    <div v-show=\"currentValue\" class=\"mint-actionsheet\">\n      <ul class=\"mint-actionsheet-list\" :style=\"{ 'margin-bottom': cancelText ? '5px' : '0' }\">\n        <li v-for=\"( item, index ) in actions\" class=\"mint-actionsheet-listitem\" @click.stop=\"itemClick(item, index)\">{{ item.name }}</li>\n      </ul>\n      <a class=\"mint-actionsheet-button\" @click.stop=\"currentValue = false\" v-if=\"cancelText\">{{ cancelText }}</a>\n    </div>\n  </transition>\n</template>\n\n<style>\n  @component-namespace mint {\n    @component actionsheet {\n      position: fixed;\n      background: #e0e0e0;\n      width: 100%;\n      text-align: center;\n      bottom: 0;\n      left: 50%;\n      max-height: 100%;\n      overflow-y: auto;\n      transform: translate3d(-50%, 0, 0);\n      backface-visibility: hidden;\n      transition: transform .3s ease-out;\n\n      @descendent list {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n      }\n\n      @descendent listitem {\n        border-bottom: solid 1px #e0e0e0;\n      }\n\n      @descendent listitem, button {\n        display: block;\n        width: 100%;\n        height: 45px;\n        line-height: 45px;\n        font-size: 18px;\n        color: #333;\n        background-color: #fff;\n        &:active {\n           background-color: #f0f0f0;\n        }\n      }\n    }\n  }\n\n  .actionsheet-float-enter,\n  .actionsheet-float-leave-active {\n    transform: translate3d(-50%, 100%, 0);\n  }\n</style>\n\n<script type=\"text/babel\">\n  import Popup from 'mint-ui/src/utils/popup';\n  import 'mint-ui/src/style/popup.css';\n\n  export default {\n    name: 'mt-actionsheet',\n\n    mixins: [Popup],\n\n    props: {\n      modal: {\n        default: true\n      },\n\n      modalFade: {\n        default: false\n      },\n\n      lockScroll: {\n        default: false\n      },\n\n      closeOnClickModal: {\n        default: true\n      },\n\n      cancelText: {\n        type: String,\n        default: '取消'\n      },\n\n      actions: {\n        type: Array,\n        default: () => []\n      }\n    },\n\n    data() {\n      return {\n        currentValue: false\n      };\n    },\n\n    watch: {\n      currentValue(val) {\n        this.$emit('input', val);\n      },\n\n      value(val) {\n        this.currentValue = val;\n      }\n    },\n\n    methods: {\n      itemClick(item, index) {\n        if (item.method && typeof item.method === 'function') {\n          item.method(item, index);\n        }\n        this.currentValue = false;\n      }\n    },\n\n    mounted() {\n      if (this.value) {\n        this.rendered = true;\n        this.currentValue = true;\n        this.open();\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/badge/README.md",
    "content": "# mint-badge"
  },
  {
    "path": "packages/badge/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintBadge',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/badge/index.js",
    "content": "export { default } from './src/badge.vue';\n"
  },
  {
    "path": "packages/badge/package.json",
    "content": "{\n  \"name\": \"mint-badge\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-badge\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/badge/src/badge.vue",
    "content": "<template>\n  <span\n    class=\"mint-badge\"\n    :style=\"{ backgroundColor: color }\"\n    :class=\"['is-' + type, 'is-size-' + size]\">\n    <slot></slot>\n  </span>\n</template>\n\n<script>\n/**\n * mt-badge\n * @module components/badge\n * @desc 徽章\n * @param {string} [type=primary] 组件样式，可选 primary, error, success, warning\n * @param {string} [color] - 传入颜色值\n * @param {string} [size=normal] - 尺寸，接受 normal, small, large\n *\n * @example\n * <mt-badge color=\"error\">错误</mt-badge>\n * <mt-badge color=\"#333\">30</mt-badge>\n */\nexport default {\n  name: 'mt-badge',\n\n  props: {\n    color: String,\n    type: {\n      type: String,\n      default: 'primary'\n    },\n    size: {\n      type: String,\n      default: 'normal'\n    }\n  }\n};\n</script>\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component badge {\n      color: $color-white;\n      text-align: center;\n      display: inline-block;\n\n      @when success {\n        background-color: $success-color;\n      }\n\n      @when primary {\n        background-color: $color-blue;\n      }\n\n      @when error {\n        background-color: $error-color;\n      }\n\n      @when warning {\n        background-color: $warning-color;\n      }\n\n      @when size-normal {\n        border-radius: 12px;\n        font-size: 15px;\n        padding: 2px 8px;\n      }\n\n      @when size-small {\n        border-radius: 8px;\n        font-size: 12px;\n        padding: 2px 6px;\n      }\n\n      @when size-large {\n        border-radius: 14px;\n        font-size: 18px;\n        padding: 2px 10px;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/button/README.md",
    "content": "# mint-button"
  },
  {
    "path": "packages/button/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintButton',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/button/index.js",
    "content": "export { default } from './src/button.vue';\n"
  },
  {
    "path": "packages/button/package.json",
    "content": "{\n  \"name\": \"mint-button\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-button\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/button/src/button.vue",
    "content": "<template>\n  <button\n    :type=\"nativeType\"\n    class=\"mint-button\"\n    :class=\"['mint-button--' + type, 'mint-button--' + size, {\n      'is-disabled': disabled,\n      'is-plain': plain\n    }]\"\n    @click=\"handleClick\"\n    :disabled=\"disabled\">\n    <span class=\"mint-button-icon\" v-if=\"icon || $slots.icon\">\n      <slot name=\"icon\">\n        <i v-if=\"icon\" class=\"mintui\" :class=\"'mintui-' + icon\"></i>\n      </slot>\n    </span>\n    <label class=\"mint-button-text\"><slot></slot></label>\n  </button>\n</template>\n\n<script>\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/font/style.css');\n}\n\n/**\n * mt-header\n * @module components/button\n * @desc 按钮\n * @param {string} [type=default] - 显示类型，接受 default, primary, danger\n * @param {boolean} [disabled=false] - 禁用\n * @param {boolean} [plain=false] - 幽灵按钮\n * @param {string} [size=normal] - 尺寸，接受 normal, small, large\n * @param {string} [native-type] - 原生 type 属性\n * @param {string} [icon] - 图标，提供 more, back，或者自定义的图标（传入不带前缀的图标类名，最后拼接成 .mintui-xxx）\n * @param {slot} - 显示文本\n * @param {slot} [icon] 显示图标\n *\n * @example\n * <mt-button size=\"large\" icon=\"back\" type=\"primary\">按钮</mt-button>\n */\nexport default {\n  name: 'mt-button',\n\n  methods: {\n    handleClick(evt) {\n      this.$emit('click', evt);\n    }\n  },\n\n  props: {\n    icon: String,\n    disabled: Boolean,\n    nativeType: String,\n    plain: Boolean,\n    type: {\n      type: String,\n      default: 'default',\n      validator(value) {\n        return [\n          'default',\n          'danger',\n          'primary'\n        ].indexOf(value) > -1;\n      }\n    },\n    size: {\n      type: String,\n      default: 'normal',\n      validator(value) {\n        return [\n          'small',\n          'normal',\n          'large'\n        ].indexOf(value) > -1;\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component button {\n      appearance: none;\n      border-radius: 4px;\n      border: 0;\n      box-sizing: border-box;\n      color: inherit;\n      display: block;\n      font-size: 18px;\n      height: 41px;\n      outline: 0;\n      overflow: hidden;\n      position: relative;\n      text-align: center;\n\n      &::after {\n        background-color: #000;\n        content: \" \";\n        opacity: 0;\n        position: absolute 0 0 0 0;\n      }\n\n      &:not(.is-disabled):active::after {\n        opacity: .4;\n      }\n\n      @descendent icon {\n        vertical-align: middle;\n        display: inline-block;\n      }\n\n      @modifier default {\n        color: $button-default-color;\n        background-color: $button-default-background-color;\n        box-shadow: $button-default-box-shadow;\n\n        @when plain {\n          border: 1px solid $button-default-plain-color;\n          background-color: transparent;\n          box-shadow: none;\n          color: $button-default-plain-color;\n        }\n      }\n\n      @modifier primary {\n        color: $button-primary-color;\n        background-color: $button-primary-background-color;\n\n        @when plain {\n          border: 1px solid $button-primary-background-color;\n          background-color: transparent;\n          color: $button-primary-background-color;\n        }\n      }\n\n      @modifier danger {\n        color: $button-danger-color;\n        background-color: $button-danger-background-color;\n\n        @when plain {\n          border: 1px solid $button-danger-background-color;\n          background-color: transparent;\n          color: $button-danger-background-color;\n        }\n      }\n\n      @modifier large {\n        display: block;\n        width: 100%;\n      }\n\n      @modifier normal {\n        display: inline-block;\n        padding: 0 12px;\n      }\n\n      @modifier small {\n        display: inline-block;\n        font-size: 14px;\n        padding: 0 12px;\n        height: 33px;\n      }\n\n      @when disabled {\n        opacity: .6;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/cell/README.md",
    "content": "# mint-cell"
  },
  {
    "path": "packages/cell/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintCell',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/cell/index.js",
    "content": "export { default } from './src/cell.vue';\n"
  },
  {
    "path": "packages/cell/package.json",
    "content": "{\n  \"name\": \"mint-cell\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-cell\",\n  \"dependencies\": {\n  }\n}\n"
  },
  {
    "path": "packages/cell/src/cell.vue",
    "content": "<template>\n  <a class=\"mint-cell\" :href=\"href\">\n    <span class=\"mint-cell-mask\" v-if=\"isLink\"></span>\n    <div class=\"mint-cell-left\">\n      <slot name=\"left\"></slot>\n    </div>\n    <div class=\"mint-cell-wrapper\">\n      <div class=\"mint-cell-title\">\n        <slot name=\"icon\">\n          <i v-if=\"icon\" class=\"mintui\" :class=\"'mintui-' + icon\"></i>\n        </slot>\n        <slot name=\"title\">\n          <span class=\"mint-cell-text\" v-text=\"title\"></span>\n          <span v-if=\"label\" class=\"mint-cell-label\" v-text=\"label\"></span>\n        </slot>\n      </div>\n      <div class=\"mint-cell-value\" :class=\"{ 'is-link' : isLink }\">\n        <slot>\n          <span v-text=\"value\"></span>\n        </slot>\n      </div>\n      <i v-if=\"isLink\" class=\"mint-cell-allow-right\"></i>\n    </div>\n    <div class=\"mint-cell-right\">\n      <slot name=\"right\"></slot>\n    </div>\n  </a>\n</template>\n\n<script>\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/font/style.css');\n}\n\n/**\n * mt-cell\n * @module components/cell\n * @desc 单元格\n * @param {string|Object} [to] - 跳转链接，使用 vue-router 的情况下 to 会传递给 router.push，否则作为 a 标签的 href 属性处理\n * @param {string} [icon] - 图标，提供 more, back，或者自定义的图标（传入不带前缀的图标类名，最后拼接成 .mintui-xxx）\n * @param {string} [title] - 标题\n * @param {string} [label] - 备注信息\n * @param {boolean} [is-link=false] - 可点击的链接\n * @param {string} [value] - 右侧显示文字\n * @param {slot} - 同 value, 会覆盖 value 属性\n * @param {slot} [title] - 同 title, 会覆盖 title 属性\n * @param {slot} [icon] - 同 icon, 会覆盖 icon 属性，例如可以传入图片\n *\n * @example\n * <mt-cell title=\"标题文字\" icon=\"back\" is-link value=\"描述文字\"></mt-cell>\n * <mt-cell title=\"标题文字\" icon=\"back\">\n *   <div slot=\"value\">描述文字啊哈</div>\n * </mt-cell>\n */\nexport default {\n  name: 'mt-cell',\n\n  props: {\n    to: [String, Object],\n    icon: String,\n    title: String,\n    label: String,\n    isLink: Boolean,\n    value: {}\n  },\n\n  computed: {\n    href() {\n      if (this.to && !this.added && this.$router) {\n        const resolved = this.$router.match(this.to);\n        if (!resolved.matched.length) return this.to;\n\n        this.$nextTick(() => {\n          this.added = true;\n          this.$el.addEventListener('click', this.handleClick);\n        });\n        return resolved.fullPath || resolved.path;\n      }\n      return this.to;\n    }\n  },\n\n  methods: {\n    handleClick($event) {\n      $event.preventDefault();\n      this.$router.push(this.href);\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component cell {\n      background-color: $color-white;\n      box-sizing: border-box;\n      color: inherit;\n      min-height: 48px;\n      display: block;\n      overflow: hidden;\n      position: relative;\n      text-decoration: none;\n\n      &:first-child {\n        .mint-cell-wrapper {\n          background-origin: border-box;\n        }\n      }\n\n      &:last-child {\n        background-image: linear-gradient(0deg, $color-grey, $color-grey 50%, transparent 50%);\n        background-size: 100% 1px;\n        background-repeat: no-repeat;\n        background-position: bottom;\n      }\n\n      @descendent wrapper {\n        background-image:linear-gradient(180deg, $color-grey, $color-grey 50%, transparent 50%);\n        background-size: 120% 1px;\n        background-repeat: no-repeat;\n        background-position: top left;\n        background-origin: content-box;\n        align-items: center;\n        box-sizing: border-box;\n        display: flex;\n        font-size: 16px;\n        line-height: 1;\n        min-height: inherit;\n        overflow: hidden;\n        padding: 0 10px;\n        width: 100%;\n      }\n\n      @descendent mask {\n        &::after {\n          background-color: #000;\n          content: \" \";\n          opacity: 0;\n          position: absolute 0;\n        }\n\n        &:active::after {\n          opacity: .1;\n        }\n      }\n\n      @descendent text {\n        vertical-align: middle;\n      }\n\n      @descendent label {\n        color: #888;\n        display: block;\n        font-size: 12px;\n        margin-top: 6px;\n      }\n\n      img {\n        vertical-align: middle;\n      }\n\n      @descendent title {\n        flex: 1;\n      }\n\n      @descendent value {\n        color: $cell-value-color;\n        display: flex;\n        align-items: center;\n\n        @when link {\n          margin-right: 24px;\n        }\n      }\n\n      @descendent left {\n        position: absolute;\n        height: 100%;\n        left: 0;\n        transform: translate3d(-100%, 0, 0);\n      }\n\n      @descendent right {\n        position: absolute;\n        height: 100%;\n        right: 0;\n        top: 0;\n        transform: translate3d(100%, 0, 0);\n      }\n\n      @descendent allow-right::after {\n        border: solid 2px $border-color;\n        border-bottom-width: 0;\n        border-left-width: 0;\n        content: \" \";\n        position: absolute 50% 20px * *;\n        size: 5px;\n        transform: translateY(-50%) rotate(45deg);\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/cell-swipe/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintCellSwipe',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/cell-swipe/index.js",
    "content": "export { default } from './src/cell-swipe.vue';\n"
  },
  {
    "path": "packages/cell-swipe/package.json",
    "content": "{\n  \"name\": \"mint-cell-swipe\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-cell-swipe\",\n  \"dependencies\": {}\n}"
  },
  {
    "path": "packages/cell-swipe/src/cell-swipe.vue",
    "content": "<template>\n  <x-cell\n    v-clickoutside:touchstart=\"swipeMove\"\n    @click.native=\"swipeMove()\"\n    @touchstart.native=\"startDrag\"\n    @touchmove.native=\"onDrag\"\n    @touchend.native=\"endDrag\"\n    class=\"mint-cell-swipe\"\n    :title=\"title\"\n    :icon=\"icon\"\n    :label=\"label\"\n    :to=\"to\"\n    :is-link=\"isLink\"\n    ref=\"cell\"\n    :value=\"value\">\n    <div\n      slot=\"right\"\n      class=\"mint-cell-swipe-buttongroup\"\n      ref=\"right\">\n      <a\n        class=\"mint-cell-swipe-button\"\n        v-for=\"btn in right\"\n        :style=\"btn.style\"\n        @click.prevent.stop=\"btn.handler && btn.handler(), swipeMove()\"\n        v-html=\"btn.content\"></a>\n    </div>\n    <div\n      slot=\"left\"\n      class=\"mint-cell-swipe-buttongroup\"\n      ref=\"left\">\n      <a\n        class=\"mint-cell-swipe-button\"\n        v-for=\"btn in left\"\n        :style=\"btn.style\"\n        @click.prevent.stop=\"btn.handler && btn.handler(), swipeMove()\"\n        v-html=\"btn.content\"></a>\n    </div>\n    <slot></slot>\n    <span\n      v-if=\"$slots.title\"\n      slot=\"title\">\n      <slot name=\"title\"></slot>\n    </span>\n    <span\n      v-if=\"$slots.icon\"\n      slot=\"icon\">\n      <slot name=\"icon\"></slot>\n    </span>\n  </x-cell>\n</template>\n\n<script>\nimport { once } from 'mint-ui/src/utils/dom';\nimport XCell from 'mint-ui/packages/cell/index.js';\nimport Clickoutside from 'mint-ui/src/utils/clickoutside';\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/cell/style.css');\n}\n\n/**\n * mt-cell-swipe\n * @desc 类似 iOS 滑动 Cell 的效果\n * @module components/cell-swipe\n *\n * @example\n * <mt-cell-swipe\n *   :left=[\n *     {\n *       content: 'text',\n *       style: {color: 'white', backgroundColor: 'red'},\n *       handler(e) => console.log(123)\n *     }\n *   ]\n *   :right=[{ content: 'allowed HTML' }]>\n *   swipe me\n * </mt-cell-swipe>\n */\nexport default {\n  name: 'mt-cell-swipe',\n\n  components: { XCell },\n\n  directives: { Clickoutside },\n\n  props: {\n    to: String,\n    left: Array,\n    right: Array,\n    icon: String,\n    title: String,\n    label: String,\n    isLink: Boolean,\n    value: {}\n  },\n\n  data() {\n    return {\n      start: { x: 0, y: 0 }\n    };\n  },\n\n  mounted() {\n    this.wrap = this.$refs.cell.$el.querySelector('.mint-cell-wrapper');\n    this.leftElm = this.$refs.left;\n    this.rightElm = this.$refs.right;\n    this.leftWrapElm = this.leftElm.parentNode;\n    this.rightWrapElm = this.rightElm.parentNode;\n    this.leftWidth = this.leftElm.getBoundingClientRect().width;\n    this.rightWidth = this.rightElm.getBoundingClientRect().width;\n\n    this.leftDefaultTransform = this.translate3d(-this.leftWidth - 1);\n    this.rightDefaultTransform = this.translate3d(this.rightWidth);\n\n    this.rightWrapElm.style.webkitTransform = this.rightDefaultTransform;\n    this.leftWrapElm.style.webkitTransform = this.leftDefaultTransform;\n  },\n\n  methods: {\n    resetSwipeStatus() {\n      this.swiping = false;\n      this.opened = true;\n      this.offsetLeft = 0;\n    },\n\n    translate3d(offset) {\n      return `translate3d(${offset}px, 0, 0)`;\n    },\n\n    setAnimations(val) {\n      this.wrap.style.transitionDuration = val;\n      this.rightWrapElm.style.transitionDuration = val;\n      this.leftWrapElm.style.transitionDuration = val;\n    },\n\n    swipeMove(offset = 0) {\n      this.wrap.style.webkitTransform = this.translate3d(offset);\n      this.rightWrapElm.style.webkitTransform = this.translate3d(this.rightWidth + offset);\n      this.leftWrapElm.style.webkitTransform = this.translate3d(-this.leftWidth + offset);\n      offset && (this.swiping = true);\n    },\n\n    swipeLeaveTransition(direction) {\n      setTimeout(() => {\n        this.swipeLeave = true;\n\n        // left\n        if (direction > 0 && -this.offsetLeft > this.rightWidth * 0.4) {\n          this.swipeMove(-this.rightWidth);\n          this.resetSwipeStatus();\n          return;\n        // right\n        } else if (direction < 0 && this.offsetLeft > this.leftWidth * 0.4) {\n          this.swipeMove(this.leftWidth);\n          this.resetSwipeStatus();\n          return;\n        }\n\n        this.swipeMove(0);\n        once(this.wrap, 'webkitTransitionEnd', _ => {\n          this.wrap.style.webkitTransform = '';\n          this.rightWrapElm.style.webkitTransform = this.rightDefaultTransform;\n          this.leftWrapElm.style.webkitTransform = this.leftDefaultTransform;\n          this.swipeLeave = false;\n          this.swiping = false;\n        });\n      }, 0);\n    },\n\n    startDrag(evt) {\n      evt = evt.changedTouches ? evt.changedTouches[0] : evt;\n      this.dragging = true;\n      this.start.x = evt.pageX;\n      this.start.y = evt.pageY;\n      this.direction = '';\n    },\n\n    onDrag(evt) {\n      if (this.opened) {\n        if (!this.swiping) {\n          this.swipeMove(0);\n          this.setAnimations('');\n        }\n        this.opened = false;\n        return;\n      }\n      if (!this.dragging) return;\n\n      let swiping;\n      const e = evt.changedTouches ? evt.changedTouches[0] : evt;\n      const offsetTop = e.pageY - this.start.y;\n      const offsetLeft = this.offsetLeft = e.pageX - this.start.x;\n\n      const y = Math.abs(offsetTop);\n      const x = Math.abs(offsetLeft);\n\n      this.setAnimations('0ms');\n\n      if (this.direction === '') {\n        this.direction = x > y ? 'horizonal' : 'vertical';\n      }\n\n      if (this.direction === 'horizonal') {\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        swiping = !(x < 5 || (x >= 5 && y >= x * 1.73));\n        if (!swiping) return;\n\n        if ((offsetLeft < 0 && -offsetLeft > this.rightWidth) ||\n          (offsetLeft > 0 && offsetLeft > this.leftWidth) ||\n          (offsetLeft > 0 && !this.leftWidth) ||\n          (offsetLeft < 0 && !this.rightWidth)) {\n        } else {\n          this.swipeMove(offsetLeft);\n        }\n      }\n    },\n\n    endDrag() {\n      this.direction = '';\n      this.setAnimations('');\n      if (!this.swiping) return;\n      this.swipeLeaveTransition(this.offsetLeft > 0 ? -1 : 1);\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component cell-swipe {\n      @descendent buttongroup {\n        height: 100%;\n      }\n\n      @descendent button {\n        height: 100%;\n        display: inline-block;\n        padding: 0 10px;\n        line-height: 48px;\n      }\n\n      .mint-cell-wrapper {\n        position: relative;\n      }\n\n      .mint-cell-wrapper,\n      .mint-cell-left,\n      .mint-cell-right {\n        transition: transform 150ms ease-in-out;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/checklist/README.md",
    "content": "# mint-checklist"
  },
  {
    "path": "packages/checklist/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintChecklist',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/checklist/index.js",
    "content": "export { default } from './src/checklist.vue';\n"
  },
  {
    "path": "packages/checklist/package.json",
    "content": "{\n  \"name\": \"mint-checklist\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-checklist\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/checklist/src/checklist.vue",
    "content": "<template>\n  <div @change=\"$emit('change', currentValue)\" class=\"mint-checklist\" :class=\"{ 'is-limit': max <= currentValue.length }\">\n    <label class=\"mint-checklist-title\" v-text=\"title\"></label>\n    <x-cell v-for=\"option in options\">\n      <label class=\"mint-checklist-label\" slot=\"title\">\n        <span\n          :class=\"{'is-right': align === 'right'}\"\n          class=\"mint-checkbox\">\n          <input\n            class=\"mint-checkbox-input\"\n            type=\"checkbox\"\n            v-model=\"currentValue\"\n            :disabled=\"option.disabled\"\n            :value=\"option.value || option\">\n          <span class=\"mint-checkbox-core\"></span>\n        </span>\n        <span class=\"mint-checkbox-label\" v-text=\"option.label || option\"></span>\n      </label>\n    </x-cell>\n  </div>\n</template>\n\n<script>\nimport XCell from 'mint-ui/packages/cell/index.js';\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/cell/style.css');\n}\n\n/**\n * mt-checklist\n * @module components/checklist\n * @desc 复选框列表，依赖 cell 组件\n *\n * @param {(string[]|object[])} options - 选项数组，可以传入 [{label: 'label', value: 'value', disabled: true}] 或者 ['ab', 'cd', 'ef']\n * @param {string[]} value - 选中值的数组\n * @param {string} title - 标题\n * @param {number} [max] - 最多可选的个数\n * @param {string} [align=left] - checkbox 对齐位置，`left`, `right`\n *\n *\n * @example\n * <mt-checklist :v-model=\"value\" :options=\"['a', 'b', 'c']\"></mt-checklist>\n */\nexport default {\n  name: 'mt-checklist',\n\n  props: {\n    max: Number,\n    title: String,\n    align: String,\n    options: {\n      type: Array,\n      required: true\n    },\n    value: Array\n  },\n\n  components: { XCell },\n\n  data() {\n    return {\n      currentValue: this.value\n    };\n  },\n\n  computed: {\n    limit() {\n      return this.max < this.currentValue.length;\n    }\n  },\n\n  watch: {\n    value(val) {\n      this.currentValue = val;\n    },\n\n    currentValue(val) {\n      if (this.limit) val.pop();\n      this.$emit('input', val);\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component checklist {\n\n      .mint-cell {\n        padding: 0;\n      }\n\n      @descendent label {\n        display: block;\n        padding: 0 10px;\n      }\n\n      @descendent title {\n        color: $checklist-title-color;\n        display: block;\n        font-size: 12px;\n        margin: 8px;\n      }\n\n      @when limit {\n        .mint-checkbox-core:not(:checked) {\n          background-color: $color-grey;\n          border-color: $color-grey;\n        }\n      }\n    }\n\n    @component checkbox {\n      @when right {\n        float: right;\n      }\n\n      @descendent label {\n        vertical-align: middle;\n        margin-left: 6px;\n      }\n\n      @descendent input {\n        display: none;\n\n        &:checked {\n          + .mint-checkbox-core {\n            background-color: $color-blue;\n            border-color: $color-blue;\n\n            &::after {\n              border-color: $color-white;\n              transform: rotate(45deg) scale(1);\n            }\n          }\n        }\n\n        &[disabled] + .mint-checkbox-core {\n          background-color: $color-grey;\n          border-color: #ccc;\n        }\n      }\n\n      @descendent core {\n        display: inline-block;\n        background-color: $color-white;\n        border-radius: 100%;\n        border: 1px solid #ccc;\n        position: relative;\n        size: 20px;\n        vertical-align: middle;\n\n        &::after {\n          border: 2px solid transparent;\n          border-left: 0;\n          border-top: 0;\n          content: \" \";\n          position: absolute 3px * * 6px;\n          size: 4px 8px;\n          transform: rotate(45deg) scale(0);\n          transition: transform .2s;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/datetime-picker/README.md",
    "content": "# mint-datetime-picker"
  },
  {
    "path": "packages/datetime-picker/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintDatetimePicker',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/datetime-picker/index.js",
    "content": "export { default } from './src/datetime-picker.vue';\n"
  },
  {
    "path": "packages/datetime-picker/package.json",
    "content": "{\n  \"name\": \"mint-datetime-picker\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-datetime-picker\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/datetime-picker/src/datetime-picker.vue",
    "content": "<template>\n  <mt-popup v-model=\"visible\" :closeOnClickModal=\"closeOnClickModal\" position=\"bottom\" class=\"mint-datetime\">\n    <mt-picker\n      :slots=\"dateSlots\"\n      @change=\"onChange\"\n      :visible-item-count=\"visibleItemCount\"\n      class=\"mint-datetime-picker\"\n      ref=\"picker\"\n      show-toolbar>\n      <span class=\"mint-datetime-action mint-datetime-cancel\" @click=\"visible = false;$emit('cancel')\">{{ cancelText }}</span>\n      <span class=\"mint-datetime-action mint-datetime-confirm\" @click=\"confirm\">{{ confirmText }}</span>\n    </mt-picker>\n  </mt-popup>\n</template>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component datetime {\n      width: 100%;\n\n      .picker-slot-wrapper, .picker-item {\n        backface-visibility: hidden;\n      }\n\n      .picker-toolbar {\n        border-bottom: solid 1px #eaeaea;\n      }\n\n      @descendent action {\n        display: inline-block;\n        width: 50%;\n        text-align: center;\n        line-height: 40px;\n        font-size: 16px;\n        color: $color-blue;\n      }\n\n      @descendent cancel {\n        float: left;\n      }\n\n      @descendent confirm {\n        float: right;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import picker from 'mint-ui/packages/picker/index.js';\n  import popup from 'mint-ui/packages/popup/index.js';\n  if (process.env.NODE_ENV === 'component') {\n    require('mint-ui/packages/picker/style.css');\n    require('mint-ui/packages/popup/style.css');\n  }\n\n  const FORMAT_MAP = {\n    Y: 'year',\n    M: 'month',\n    D: 'date',\n    H: 'hour',\n    m: 'minute'\n  };\n\n  export default {\n    name: 'mt-datetime-picker',\n\n    props: {\n      cancelText: {\n        type: String,\n        default: '取消'\n      },\n      confirmText: {\n        type: String,\n        default: '确定'\n      },\n      type: {\n        type: String,\n        default: 'datetime'\n      },\n      startDate: {\n        type: Date,\n        default() {\n          return new Date(new Date().getFullYear() - 10, 0, 1);\n        }\n      },\n      endDate: {\n        type: Date,\n        default() {\n          return new Date(new Date().getFullYear() + 10, 11, 31);\n        }\n      },\n      startHour: {\n        type: Number,\n        default: 0\n      },\n      endHour: {\n        type: Number,\n        default: 23\n      },\n      yearFormat: {\n        type: String,\n        default: '{value}'\n      },\n      monthFormat: {\n        type: String,\n        default: '{value}'\n      },\n      dateFormat: {\n        type: String,\n        default: '{value}'\n      },\n      hourFormat: {\n        type: String,\n        default: '{value}'\n      },\n      minuteFormat: {\n        type: String,\n        default: '{value}'\n      },\n      visibleItemCount: {\n        type: Number,\n        default: 7\n      },\n      closeOnClickModal: {\n        type: Boolean,\n        default: true\n      },\n      value: null\n    },\n\n    data() {\n      return {\n        visible: false,\n        startYear: null,\n        endYear: null,\n        startMonth: 1,\n        endMonth: 12,\n        startDay: 1,\n        endDay: 31,\n        currentValue: null,\n        selfTriggered: false,\n        dateSlots: [],\n        shortMonthDates: [],\n        longMonthDates: [],\n        febDates: [],\n        leapFebDates: []\n      };\n    },\n\n    components: {\n      'mt-picker': picker,\n      'mt-popup': popup\n    },\n\n    methods: {\n      open() {\n        this.visible = true;\n      },\n\n      close() {\n        this.visible = false;\n      },\n\n      isLeapYear(year) {\n        return (year % 400 === 0) || (year % 100 !== 0 && year % 4 === 0);\n      },\n\n      isShortMonth(month) {\n        return [4, 6, 9, 11].indexOf(month) > -1;\n      },\n\n      getMonthEndDay(year, month) {\n        if (this.isShortMonth(month)) {\n          return 30;\n        } else if (month === 2) {\n          return this.isLeapYear(year) ? 29 : 28;\n        } else {\n          return 31;\n        }\n      },\n\n      getTrueValue(formattedValue) {\n        if (!formattedValue) return;\n        while (isNaN(parseInt(formattedValue, 10))) {\n          formattedValue = formattedValue.slice(1);\n        }\n        return parseInt(formattedValue, 10);\n      },\n\n      getValue(values) {\n        let value;\n        if (this.type === 'time') {\n          value = values.map(value => ('0' + this.getTrueValue(value)).slice(-2)).join(':');\n        } else {\n          let year = this.getTrueValue(values[0]);\n          let month = this.getTrueValue(values[1]);\n          let date = this.getTrueValue(values[2]);\n          let maxDate = this.getMonthEndDay(year, month);\n          if (date > maxDate) {\n            this.selfTriggered = true;\n            date = 1;\n          }\n          let hour = this.typeStr.indexOf('H') > -1 ? this.getTrueValue(values[this.typeStr.indexOf('H')]) : 0;\n          let minute = this.typeStr.indexOf('m') > -1 ? this.getTrueValue(values[this.typeStr.indexOf('m')]) : 0;\n          value = new Date(year, month - 1, date, hour, minute);\n        }\n        return value;\n      },\n\n      onChange(picker) {\n        let values = picker.$children.filter(child => child.currentValue !== undefined).map(child => child.currentValue);\n        if (this.selfTriggered) {\n          this.selfTriggered = false;\n          return;\n        }\n        if (values.length !== 0) {\n          this.currentValue = this.getValue(values);\n          this.handleValueChange();\n        }\n      },\n\n      fillValues(type, start, end) {\n        let values = [];\n        for (let i = start; i <= end; i++) {\n          if (i < 10) {\n            values.push(this[`${FORMAT_MAP[type]}Format`].replace('{value}', ('0' + i).slice(-2)));\n          } else {\n            values.push(this[`${FORMAT_MAP[type]}Format`].replace('{value}', i));\n          }\n        }\n        return values;\n      },\n\n      pushSlots(slots, type, start, end) {\n        slots.push({\n          flex: 1,\n          values: this.fillValues(type, start, end)\n        });\n      },\n\n      generateSlots() {\n        let dateSlots = [];\n        const INTERVAL_MAP = {\n          Y: this.rims.year,\n          M: this.rims.month,\n          D: this.rims.date,\n          H: this.rims.hour,\n          m: this.rims.min\n        };\n        let typesArr = this.typeStr.split('');\n        typesArr.forEach(type => {\n          if (INTERVAL_MAP[type]) {\n            this.pushSlots.apply(null, [dateSlots, type].concat(INTERVAL_MAP[type]));\n          }\n        });\n        if (this.typeStr === 'Hm') {\n          dateSlots.splice(1, 0, {\n            divider: true,\n            content: ':'\n          });\n        }\n        this.dateSlots = dateSlots;\n        this.handleExceededValue();\n      },\n\n      handleExceededValue() {\n        let values = [];\n        if (this.type === 'time') {\n          const currentValue = this.currentValue.split(':');\n          values = [\n            this.hourFormat.replace('{value}', currentValue[0]),\n            this.minuteFormat.replace('{value}', currentValue[1])\n          ];\n        } else {\n          values = [\n            this.yearFormat.replace('{value}', this.getYear(this.currentValue)),\n            this.monthFormat.replace('{value}', ('0' + this.getMonth(this.currentValue)).slice(-2)),\n            this.dateFormat.replace('{value}', ('0' + this.getDate(this.currentValue)).slice(-2))\n          ];\n          if (this.type === 'datetime') {\n            values.push(\n              this.hourFormat.replace('{value}', ('0' + this.getHour(this.currentValue)).slice(-2)),\n              this.minuteFormat.replace('{value}', ('0' + this.getMinute(this.currentValue)).slice(-2))\n            );\n          }\n        }\n        this.dateSlots.filter(child => child.values !== undefined)\n          .map(slot => slot.values).forEach((slotValues, index) => {\n            if (slotValues.indexOf(values[index]) === -1) {\n              values[index] = slotValues[0];\n            }\n          });\n        this.$nextTick(() => {\n          this.setSlotsByValues(values);\n        });\n      },\n\n      setSlotsByValues(values) {\n        const setSlotValue = this.$refs.picker.setSlotValue;\n        if (this.type === 'time') {\n          setSlotValue(0, values[0]);\n          setSlotValue(1, values[1]);\n        }\n        if (this.type !== 'time') {\n          setSlotValue(0, values[0]);\n          setSlotValue(1, values[1]);\n          setSlotValue(2, values[2]);\n          if (this.type === 'datetime') {\n            setSlotValue(3, values[3]);\n            setSlotValue(4, values[4]);\n          }\n        }\n        [].forEach.call(this.$refs.picker.$children, child => child.doOnValueChange());\n      },\n\n      rimDetect(result, rim) {\n        let position = rim === 'start' ? 0 : 1;\n        let rimDate = rim === 'start' ? this.startDate : this.endDate;\n        if (this.getYear(this.currentValue) === rimDate.getFullYear()) {\n          result.month[position] = rimDate.getMonth() + 1;\n          if (this.getMonth(this.currentValue) === rimDate.getMonth() + 1) {\n            result.date[position] = rimDate.getDate();\n            if (this.getDate(this.currentValue) === rimDate.getDate()) {\n              result.hour[position] = rimDate.getHours();\n              if (this.getHour(this.currentValue) === rimDate.getHours()) {\n                result.min[position] = rimDate.getMinutes();\n              }\n            }\n          }\n        }\n      },\n\n      isDateString(str) {\n        return /\\d{4}(\\-|\\/|.)\\d{1,2}\\1\\d{1,2}/.test(str);\n      },\n\n      getYear(value) {\n        return this.isDateString(value) ? value.split(' ')[0].split(/-|\\/|\\./)[0] : value.getFullYear();\n      },\n\n      getMonth(value) {\n        return this.isDateString(value) ? value.split(' ')[0].split(/-|\\/|\\./)[1] : value.getMonth() + 1;\n      },\n\n      getDate(value) {\n        return this.isDateString(value) ? value.split(' ')[0].split(/-|\\/|\\./)[2] : value.getDate();\n      },\n\n      getHour(value) {\n        if (this.isDateString(value)) {\n          const str = value.split(' ')[1] || '00:00:00';\n          return str.split(':')[0];\n        }\n        return value.getHours();\n      },\n\n      getMinute(value) {\n        if (this.isDateString(value)) {\n          const str = value.split(' ')[1] || '00:00:00';\n          return str.split(':')[1];\n        }\n        return value.getMinutes();\n      },\n\n      confirm() {\n        this.visible = false;\n        this.$emit('confirm', this.currentValue);\n      },\n\n      handleValueChange() {\n        this.$emit('input', this.currentValue);\n      }\n    },\n\n    computed: {\n      rims() {\n        if (!this.currentValue) return { year: [], month: [], date: [], hour: [], min: [] };\n        let result;\n        if (this.type === 'time') {\n          result = {\n            hour: [this.startHour, this.endHour],\n            min: [0, 59]\n          };\n          return result;\n        }\n        result = {\n          year: [this.startDate.getFullYear(), this.endDate.getFullYear()],\n          month: [1, 12],\n          date: [1, this.getMonthEndDay(this.getYear(this.currentValue), this.getMonth(this.currentValue))],\n          hour: [0, 23],\n          min: [0, 59]\n        };\n        this.rimDetect(result, 'start');\n        this.rimDetect(result, 'end');\n        return result;\n      },\n\n      typeStr() {\n        if (this.type === 'time') {\n          return 'Hm';\n        } else if (this.type === 'date') {\n          return 'YMD';\n        } else {\n          return 'YMDHm';\n        }\n      }\n    },\n\n    watch: {\n      value(val) {\n        this.currentValue = val;\n      },\n\n      rims() {\n        this.generateSlots();\n      },\n\n      visible(val) {\n        this.$emit('visible-change', val);\n      }\n    },\n\n    mounted() {\n      this.currentValue = this.value;\n      if (!this.value) {\n        if (this.type.indexOf('date') > -1) {\n          this.currentValue = this.startDate;\n        } else {\n          this.currentValue = `${ ('0' + this.startHour).slice(-2) }:00`;\n        }\n      }\n      this.generateSlots();\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/field/README.md",
    "content": "# mint-field"
  },
  {
    "path": "packages/field/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintField',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/field/index.js",
    "content": "export { default } from './src/field.vue';\n"
  },
  {
    "path": "packages/field/package.json",
    "content": "{\n  \"name\": \"mint-field\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-field\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/field/src/field.vue",
    "content": "<template>\n  <x-cell\n    class=\"mint-field\"\n    :title=\"label\"\n    v-clickoutside=\"doCloseActive\"\n    :class=\"[{\n      'is-textarea': type === 'textarea',\n      'is-nolabel': !label\n    }]\">\n    <textarea\n      @change=\"$emit('change', currentValue)\"\n      ref=\"textarea\"\n      class=\"mint-field-core\"\n      :placeholder=\"placeholder\"\n      v-if=\"type === 'textarea'\"\n      :rows=\"rows\"\n      :disabled=\"disabled\"\n      :readonly=\"readonly\"\n      v-model=\"currentValue\">\n    </textarea>\n    <input\n      @change=\"$emit('change', currentValue)\"\n      ref=\"input\"\n      class=\"mint-field-core\"\n      :placeholder=\"placeholder\"\n      :number=\"type === 'number'\"\n      v-else\n      :type=\"type\"\n      @focus=\"active = true\"\n      :disabled=\"disabled\"\n      :readonly=\"readonly\"\n      :value=\"currentValue\"\n      @input=\"handleInput\">\n    <div\n      @click=\"handleClear\"\n      class=\"mint-field-clear\"\n      v-if=\"!disableClear\"\n      v-show=\"currentValue && type !== 'textarea' && active\">\n      <i class=\"mintui mintui-field-error\"></i>\n    </div>\n    <span class=\"mint-field-state\" v-if=\"state\" :class=\"['is-' + state]\">\n      <i class=\"mintui\" :class=\"['mintui-field-' + state]\"></i>\n    </span>\n    <div class=\"mint-field-other\">\n      <slot></slot>\n    </div>\n  </x-cell>\n</template>\n\n<script>\nimport XCell from 'mint-ui/packages/cell/index.js';\nimport Clickoutside from 'mint-ui/src/utils/clickoutside';\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/cell/style.css');\n}\n\n/**\n * mt-field\n * @desc 编辑器，依赖 cell\n * @module components/field\n *\n * @param {string} [type=text] - field 类型，接受 text, textarea 等\n * @param {string} [label] - 标签\n * @param {string} [rows] - textarea 的 rows\n * @param {string} [placeholder] - placeholder\n * @param {string} [disabled] - disabled\n * @param {string} [readonly] - readonly\n * @param {string} [state] - 表单校验状态样式，接受 error, warning, success\n *\n * @example\n * <mt-field v-model=\"value\" label=\"用户名\"></mt-field>\n * <mt-field v-model=\"value\" label=\"密码\" placeholder=\"请输入密码\"></mt-field>\n * <mt-field v-model=\"value\" label=\"自我介绍\" placeholder=\"自我介绍\" type=\"textarea\" rows=\"4\"></mt-field>\n * <mt-field v-model=\"value\" label=\"邮箱\" placeholder=\"成功状态\" state=\"success\"></mt-field>\n */\nexport default {\n  name: 'mt-field',\n\n  data() {\n    return {\n      active: false,\n      currentValue: this.value\n    };\n  },\n\n  directives: {\n    Clickoutside\n  },\n\n  props: {\n    type: {\n      type: String,\n      default: 'text'\n    },\n    rows: String,\n    label: String,\n    placeholder: String,\n    readonly: Boolean,\n    disabled: Boolean,\n    disableClear: Boolean,\n    state: {\n      type: String,\n      default: 'default'\n    },\n    value: {},\n    attr: Object\n  },\n\n  components: { XCell },\n\n  methods: {\n    doCloseActive() {\n      this.active = false;\n    },\n\n    handleInput(evt) {\n      this.currentValue = evt.target.value;\n    },\n\n    handleClear() {\n      if (this.disabled || this.readonly) return;\n      this.currentValue = '';\n    }\n  },\n\n  watch: {\n    value(val) {\n      this.currentValue = val;\n    },\n\n    currentValue(val) {\n      this.$emit('input', val);\n    },\n\n    attr: {\n      immediate: true,\n      handler(attrs) {\n        this.$nextTick(() => {\n          const target = [this.$refs.input, this.$refs.textarea];\n          target.forEach(el => {\n            if (!el || !attrs) return;\n            Object.keys(attrs).map(name => el.setAttribute(name, attrs[name]));\n          });\n        });\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component field {\n      display: flex;\n\n      @when textarea {\n        align-items: inherit;\n\n        .mint-cell-title {\n          padding: 10px 0;\n        }\n\n        .mint-cell-value {\n          padding: 5px 0;\n        }\n      }\n\n      .mint-cell-title {\n        width: 105px;\n        flex: none;\n      }\n\n      .mint-cell-value {\n        flex: 1;\n        color: inherit;\n        display: flex;\n      }\n\n      @descendent core {\n        appearance: none;\n        border-radius: 0;\n        border: 0;\n        flex: 1;\n        outline: 0;\n        line-height: 1.6;\n        font-size: inherit;\n        width: 100%;\n      }\n\n      @descendent clear {\n        opacity: .2;\n      }\n\n      @descendent state {\n        color: inherit;\n        margin-left: 20px;\n\n        .mintui {\n          font-size: 20px;\n        }\n\n        @when error {\n          color: $error-color;\n        }\n\n        @when warning {\n          color: $warning-color;\n        }\n\n        @when success {\n          color: $success-color;\n        }\n\n        @when default {\n          margin-left: 0;\n        }\n      }\n\n      @descendent other {\n        position: relative 0 0 * *;\n      }\n\n      @when nolabel {\n        .mint-cell-title {\n          display: none;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/header/README.md",
    "content": "# mint-header"
  },
  {
    "path": "packages/header/index.js",
    "content": "export { default } from './src/header.vue';\n"
  },
  {
    "path": "packages/header/src/header.vue",
    "content": "<template>\n  <header\n    class=\"mint-header\"\n    :class=\"{ 'is-fixed': fixed }\">\n    <div class=\"mint-header-button is-left\">\n      <slot name=\"left\"></slot>\n    </div>\n    <h1 class=\"mint-header-title\" v-text=\"title\"></h1>\n    <div class=\"mint-header-button is-right\">\n      <slot name=\"right\"></slot>\n    </div>\n  </header>\n</template>\n\n<script>\n/**\n * mt-header\n * @module components/header\n * @desc 顶部导航\n * @param {boolean} [fixed=false] - 固定顶部\n * @param {string} [title] - 标题\n * @param {slot} [left] - 显示在左侧区域\n * @param {slot} [right] - 显示在右侧区域\n *\n * @example\n * <mt-header title=\"我是标题\" fixed>\n *   <mt-button slot=\"left\" icon=\"back\" @click=\"handleBack\">返回</mt-button>\n *   <mt-button slot=\"right\" icon=\"more\"></mt-button>\n * </mt-header>\n */\nexport default {\n  name: 'mt-header',\n\n  props: {\n    fixed: Boolean,\n    title: String\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component header {\n      align-items: center;\n      background-color: $color-blue;\n      box-sizing: border-box;\n      color: $color-white;\n      display: flex;\n      font-size: 14px;\n      height: $header-height;\n      line-height: 1;\n      padding: 0 10px;\n      position: relative;\n      text-align: center;\n      white-space: nowrap;\n\n      .mint-button {\n        background-color: transparent;\n        border: 0;\n        box-shadow: none;\n        color: inherit;\n        display: inline-block;\n        padding: 0;\n        font-size: inherit;\n\n        &::after {\n          content: none;\n        }\n      }\n\n      @descendent button {\n        flex: .5;\n\n        > a {\n          color: inherit;\n        }\n\n        @when left {\n          text-align: left;\n        }\n\n        @when right {\n          text-align: right;\n        }\n      }\n\n      @descendent title {\n        @utils-ellipsis;\n        font-size: inherit;\n        font-weight: normal;\n        flex: 1;\n      }\n\n      @when fixed {\n        position: fixed 0 0 * 0;\n        z-index: $z-index-normal;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/index-list/README.md",
    "content": "# mint-index-list"
  },
  {
    "path": "packages/index-list/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintIndexlist',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/index-list/index.js",
    "content": "export { default } from './src/index-list.vue';\n"
  },
  {
    "path": "packages/index-list/package.json",
    "content": "{\n  \"name\": \"mint-index-list\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-index-list\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/index-list/src/index-list.vue",
    "content": "<template>\n  <div class=\"mint-indexlist\">\n    <ul class=\"mint-indexlist-content\" ref=\"content\" :style=\"{ 'height': currentHeight + 'px', 'margin-right': navWidth + 'px'}\">\n      <slot></slot>\n    </ul>\n    \n    <div class=\"mint-indexlist-nav\" @touchstart=\"handleTouchStart\" ref=\"nav\">\n      <ul class=\"mint-indexlist-navlist\">\n        <li class=\"mint-indexlist-navitem\" v-for=\"section in sections\">{{ section.index }}</li>\n      </ul>\n    </div>\n    \n    <div class=\"mint-indexlist-indicator\" v-if=\"showIndicator\" v-show=\"moving\">{{ currentIndicator }}</div>\n  </div>\n</template>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component indexlist {\n      width: 100%;\n      position: relative;\n      overflow: hidden;\n      \n      @descendent content {\n        margin: 0;\n        padding: 0;\n        overflow: auto;\n      }\n      \n      @descendent nav {\n        position: absolute;\n        top: 0;\n        bottom: 0;\n        right: 0;\n        margin: 0;\n        background-color: #fff;\n        border-left: solid 1px #ddd;\n        text-align: center;\n        max-height: 100%;\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n      }\n      \n      @descendent navlist {\n        padding: 0;\n        margin: 0;\n        list-style: none;\n        max-height: 100%;\n        display: flex;\n        flex-direction: column;\n      }\n      \n      @descendent navitem {\n        padding: 2px 6px;\n        font-size: 12px;\n        user-select: none;\n        -webkit-touch-callout: none;\n      }\n      \n      @descendent indicator {\n        position: absolute;\n        size: 50px;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        text-align: center;\n        line-height: 50px;\n        background-color: rgba(0, 0, 0, .7);\n        border-radius: 5px;\n        color: #fff;\n        font-size: 22px;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    name: 'mt-index-list',\n\n    props: {\n      height: Number,\n      showIndicator: {\n        type: Boolean,\n        default: true\n      }\n    },\n\n    data() {\n      return {\n        sections: [],\n        navWidth: 0,\n        indicatorTime: null,\n        moving: false,\n        firstSection: null,\n        currentIndicator: '',\n        currentHeight: this.height,\n        navOffsetX: 0\n      };\n    },\n\n    watch: {\n      sections() {\n        this.init();\n      },\n      height(val) {\n        if (val) {\n          this.currentHeight = val;\n        }\n      }\n    },\n\n    methods: {\n      init() {\n        this.$nextTick(() => {\n          this.navWidth = this.$refs.nav.clientWidth;\n        });\n        let listItems = this.$refs.content.getElementsByTagName('li');\n        if (listItems.length > 0) {\n          this.firstSection = listItems[0];\n        }\n      },\n\n      handleTouchStart(e) {\n        if (e.target.tagName !== 'LI') {\n          return;\n        }\n        this.navOffsetX = e.changedTouches[0].clientX;\n        this.scrollList(e.changedTouches[0].clientY);\n        if (this.indicatorTime) {\n          clearTimeout(this.indicatorTime);\n        }\n        this.moving = true;\n        window.addEventListener('touchmove', this.handleTouchMove);\n        window.addEventListener('touchend', this.handleTouchEnd);\n      },\n\n      handleTouchMove(e) {\n        e.preventDefault();\n        this.scrollList(e.changedTouches[0].clientY);\n      },\n\n      handleTouchEnd() {\n        this.indicatorTime = setTimeout(() => {\n          this.moving = false;\n          this.currentIndicator = '';\n        }, 500);\n        window.removeEventListener('touchmove', this.handleTouchMove);\n        window.removeEventListener('touchend', this.handleTouchEnd);\n      },\n\n      scrollList(y) {\n        let currentItem = document.elementFromPoint(this.navOffsetX, y);\n        if (!currentItem || !currentItem.classList.contains('mint-indexlist-navitem')) {\n          return;\n        }\n        this.currentIndicator = currentItem.innerText;\n        let targets = this.sections.filter(section => section.index === currentItem.innerText);\n        let targetDOM;\n        if (targets.length > 0) {\n          targetDOM = targets[0].$el;\n          this.$refs.content.scrollTop = targetDOM.getBoundingClientRect().top - this.firstSection.getBoundingClientRect().top;\n        }\n      }\n    },\n\n    mounted() {\n      if (!this.currentHeight) {\n        window.scrollTo(0, 0);\n        requestAnimationFrame(()=>{\n          this.currentHeight = document.documentElement.clientHeight - this.$refs.content.getBoundingClientRect().top;\n        });\n      }\n      this.init();\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/index-section/README.md",
    "content": "# mint-index-section"
  },
  {
    "path": "packages/index-section/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintIndexSection',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/index-section/index.js",
    "content": "export { default } from './src/index-section.vue';\n"
  },
  {
    "path": "packages/index-section/package.json",
    "content": "{\n  \"name\": \"mint-index-section\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-index-section\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/index-section/src/index-section.vue",
    "content": "<template>\n  <li class=\"mint-indexsection\">\n    <p class=\"mint-indexsection-index\">{{ index }}</p>\n    <ul>\n      <slot></slot>\n    </ul>\n  </li>\n</template>\n\n<style lang=\"css\">\n  @component-namespace mint {\n    @component indexsection {\n      padding: 0;\n      margin: 0;\n      \n      @descendent index {\n        margin: 0;\n        padding: 10px;\n        background-color: #fafafa;\n\n        & + ul {\n          padding: 0;\n        }\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    name: 'mt-index-section',\n\n    props: {\n      index: {\n        type: String,\n        required: true\n      }\n    },\n\n    mounted() {\n      this.$parent.sections.push(this);\n    },\n\n    beforeDestroy() {\n      let index = this.$parent.sections.indexOf(this);\n      if (index > -1) {\n        this.$parent.sections.splice(index, 1);\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/indicator/README.md",
    "content": "# Overview\nvue-indicator is a mobile loading indicator plugin for vue.js.\n\n# Installation\nFirst, install `vue-indicator` from npm:\n```bash\n$ npm install vue-indicator\n```\n\nThen use it:\n```Javascript\n// ES6 mudule\nimport Indicator from 'vue-indicator';\n\n// CommonJS\nconst Indicator = require('vue-indicator').default;\n```\n\n# Usage\nOpen an indicator:\n```Javascript\nIndicator.open();\n```\n\nOpen an indicator with a string:\n```Javascript\nIndicator.open('Loading...');\n```\n\nOpen an indicator with an object:\n```Javascript\nIndicator.open({ text:'Loading...', spinnerType: 'fading-circle' });\n```\n\nThen close it:\n```Javascript\nIndicator.close();\n```\n\n# API\n| Option      | Description    | Value                                                       | Default |\n|-------------|----------------|-------------------------------------------------------------|---------|\n| text        | indicator text | String                                                      |         |\n| spinnerType | spinner type   | 'snake', 'fading-circle', 'double-bounce', 'triple-bounce'  | 'snake' |\n\n# License\nMIT\n"
  },
  {
    "path": "packages/indicator/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintIndicator',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/indicator/index.js",
    "content": "import Vue from 'vue';\n\nconst Indicator = Vue.extend(require('./src/indicator.vue'));\nlet instance;\n\nexport default {\n  open(options = {}) {\n    if (!instance) {\n      instance = new Indicator({\n        el: document.createElement('div')\n      });\n    }\n    if (instance.visible) return;\n    instance.text = typeof options === 'string' ? options : options.text || '';\n    instance.spinnerType = options.spinnerType || 'snake';\n    document.body.appendChild(instance.$el);\n\n    Vue.nextTick(() => {\n      instance.visible = true;\n    });\n  },\n\n  close() {\n    if (instance) {\n      instance.visible = false;\n    }\n  }\n};\n"
  },
  {
    "path": "packages/indicator/package.json",
    "content": "{\n  \"name\": \"mint-indicator\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-indicator\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/indicator/src/indicator.vue",
    "content": "<template>\n  <transition name=\"mint-indicator\">\n    <div class=\"mint-indicator\" v-show=\"visible\">\n      <div class=\"mint-indicator-wrapper\" :style=\"{ 'padding': text ? '20px' : '15px' }\">\n        <spinner class=\"mint-indicator-spin\" :type=\"convertedSpinnerType\" :size=\"32\"></spinner>\n        <span class=\"mint-indicator-text\" v-show=\"text\">{{ text }}</span>\n      </div>\n      <div class=\"mint-indicator-mask\" @touchmove.stop.prevent></div>\n    </div>\n  </transition>\n</template>\n\n<style>\n@component-namespace mint {\n  @component indicator {\n    transition: opacity .2s linear;\n\n    @descendent wrapper {\n      position: fixed 50% * * 50%;\n      transform: translate(-50%, -50%);\n      border-radius: 5px;\n      background: rgba(0, 0, 0, 0.7);\n      color: white;\n      box-sizing: border-box;\n      text-align: center;\n      z-index: 3000;\n    }\n\n    @descendent text {\n      display: block;\n      color: #fff;\n      text-align: center;\n      margin-top: 10px;\n      font-size: 16px;\n    }\n\n    @descendent spin {\n      display: inline-block;\n      text-align: center;\n    }\n\n    @descendent mask {\n      position: fixed 0 * * 0;\n      size: 100%;\n      opacity: 0;\n      background: transparent;\n      z-index: 3000;\n    }\n  }\n}\n\n.mint-indicator-enter,\n.mint-indicator-leave-active {\n  opacity: 0;\n}\n</style>\n\n<script type=\"text/babel\">\n  import Spinner from 'mint-ui/packages/spinner/index.js';\n  if (process.env.NODE_ENV === 'component') {\n    require('mint-ui/packages/spinner/style.css');\n  }\n\n  export default {\n    data() {\n      return {\n        visible: false\n      };\n    },\n\n    components: {\n      Spinner\n    },\n\n    computed: {\n      convertedSpinnerType() {\n        switch (this.spinnerType) {\n          case 'double-bounce':\n            return 1;\n          case 'triple-bounce':\n            return 2;\n          case 'fading-circle':\n            return 3;\n          default:\n            return 0;\n        }\n      }\n    },\n\n    props: {\n      text: String,\n      spinnerType: {\n        type: String,\n        default: 'snake'\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/infinite-scroll/README.md",
    "content": "# mint-infinite-scroll"
  },
  {
    "path": "packages/infinite-scroll/index.js",
    "content": "import 'mint-ui/src/style/empty.css';\nexport { default } from './src/infinite-scroll.js';\n"
  },
  {
    "path": "packages/infinite-scroll/src/directive.js",
    "content": "import Vue from 'vue';\nconst ctx = '@@InfiniteScroll';\n\nvar throttle = function(fn, delay) {\n  var now, lastExec, timer, context, args; //eslint-disable-line\n\n  var execute = function() {\n    fn.apply(context, args);\n    lastExec = now;\n  };\n\n  return function() {\n    context = this;\n    args = arguments;\n\n    now = Date.now();\n\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n\n    if (lastExec) {\n      var diff = delay - (now - lastExec);\n      if (diff < 0) {\n        execute();\n      } else {\n        timer = setTimeout(() => {\n          execute();\n        }, diff);\n      }\n    } else {\n      execute();\n    }\n  };\n};\n\nvar getScrollTop = function(element) {\n  if (element === window) {\n    return Math.max(window.pageYOffset || 0, document.documentElement.scrollTop);\n  }\n\n  return element.scrollTop;\n};\n\nvar getComputedStyle = Vue.prototype.$isServer ? {} : document.defaultView.getComputedStyle;\n\nvar getScrollEventTarget = function(element) {\n  var currentNode = element;\n  // bugfix, see http://w3help.org/zh-cn/causes/SD9013 and http://stackoverflow.com/questions/17016740/onscroll-function-is-not-working-for-chrome\n  while (currentNode && currentNode.tagName !== 'HTML' && currentNode.tagName !== 'BODY' && currentNode.nodeType === 1) {\n    var overflowY = getComputedStyle(currentNode).overflowY;\n    if (overflowY === 'scroll' || overflowY === 'auto') {\n      return currentNode;\n    }\n    currentNode = currentNode.parentNode;\n  }\n  return window;\n};\n\nvar getVisibleHeight = function(element) {\n  if (element === window) {\n    return document.documentElement.clientHeight;\n  }\n\n  return element.clientHeight;\n};\n\nvar getElementTop = function(element) {\n  if (element === window) {\n    return getScrollTop(window);\n  }\n  return element.getBoundingClientRect().top + getScrollTop(window);\n};\n\nvar isAttached = function(element) {\n  var currentNode = element.parentNode;\n  while (currentNode) {\n    if (currentNode.tagName === 'HTML') {\n      return true;\n    }\n    if (currentNode.nodeType === 11) {\n      return false;\n    }\n    currentNode = currentNode.parentNode;\n  }\n  return false;\n};\n\nvar doBind = function() {\n  if (this.binded) return; // eslint-disable-line\n  this.binded = true;\n\n  var directive = this;\n  var element = directive.el;\n\n  directive.scrollEventTarget = getScrollEventTarget(element);\n  directive.scrollListener = throttle(doCheck.bind(directive), 200);\n  directive.scrollEventTarget.addEventListener('scroll', directive.scrollListener);\n\n  var disabledExpr = element.getAttribute('infinite-scroll-disabled');\n  var disabled = false;\n\n  if (disabledExpr) {\n    this.vm.$watch(disabledExpr, function(value) {\n      directive.disabled = value;\n      if (!value && directive.immediateCheck) {\n        doCheck.call(directive);\n      }\n    });\n    disabled = Boolean(directive.vm[disabledExpr]);\n  }\n  directive.disabled = disabled;\n\n  var distanceExpr = element.getAttribute('infinite-scroll-distance');\n  var distance = 0;\n  if (distanceExpr) {\n    distance = Number(directive.vm[distanceExpr] || distanceExpr);\n    if (isNaN(distance)) {\n      distance = 0;\n    }\n  }\n  directive.distance = distance;\n\n  var immediateCheckExpr = element.getAttribute('infinite-scroll-immediate-check');\n  var immediateCheck = true;\n  if (immediateCheckExpr) {\n    immediateCheck = Boolean(directive.vm[immediateCheckExpr]);\n  }\n  directive.immediateCheck = immediateCheck;\n\n  if (immediateCheck) {\n    doCheck.call(directive);\n  }\n\n  var eventName = element.getAttribute('infinite-scroll-listen-for-event');\n  if (eventName) {\n    directive.vm.$on(eventName, function() {\n      doCheck.call(directive);\n    });\n  }\n};\n\nvar doCheck = function(force) {\n  var scrollEventTarget = this.scrollEventTarget;\n  var element = this.el;\n  var distance = this.distance;\n\n  if (force !== true && this.disabled) return; //eslint-disable-line\n  var viewportScrollTop = getScrollTop(scrollEventTarget);\n  var viewportBottom = viewportScrollTop + getVisibleHeight(scrollEventTarget);\n\n  var shouldTrigger = false;\n\n  if (scrollEventTarget === element) {\n    shouldTrigger = scrollEventTarget.scrollHeight - viewportBottom <= distance;\n  } else {\n    var elementBottom = getElementTop(element) - getElementTop(scrollEventTarget) + element.offsetHeight + viewportScrollTop;\n\n    shouldTrigger = viewportBottom + distance >= elementBottom;\n  }\n\n  if (shouldTrigger && this.expression) {\n    this.expression();\n  }\n};\n\nexport default {\n  bind(el, binding, vnode) {\n    el[ctx] = {\n      el,\n      vm: vnode.context,\n      expression: binding.value\n    };\n    const args = arguments;\n    var cb = function() {\n      el[ctx].vm.$nextTick(function() {\n        if (isAttached(el)) {\n          doBind.call(el[ctx], args);\n        }\n\n        el[ctx].bindTryCount = 0;\n\n        var tryBind = function() {\n          if (el[ctx].bindTryCount > 10) return; //eslint-disable-line\n          el[ctx].bindTryCount++;\n          if (isAttached(el)) {\n            doBind.call(el[ctx], args);\n          } else {\n            setTimeout(tryBind, 50);\n          }\n        };\n\n        tryBind();\n      });\n    };\n    if (el[ctx].vm._isMounted) {\n      cb();\n      return;\n    }\n    el[ctx].vm.$on('hook:mounted', cb);\n  },\n\n  unbind(el) {\n    if (el[ctx] && el[ctx].scrollEventTarget) {\n      el[ctx].scrollEventTarget.removeEventListener('scroll', el[ctx].scrollListener);\n    }\n  }\n};\n"
  },
  {
    "path": "packages/infinite-scroll/src/infinite-scroll.js",
    "content": "import InfiniteScroll from './directive';\nimport 'mint-ui/src/style/empty.css';\nimport Vue from 'vue';\n\nconst install = function(Vue) {\n  Vue.directive('InfiniteScroll', InfiniteScroll);\n};\n\nif (!Vue.prototype.$isServer && window.Vue) {\n  window.infiniteScroll = InfiniteScroll;\n  Vue.use(install); // eslint-disable-line\n}\n\nInfiniteScroll.install = install;\nexport default InfiniteScroll;\n"
  },
  {
    "path": "packages/lazyload/README.md",
    "content": "# mint-lazyload"
  },
  {
    "path": "packages/lazyload/index.js",
    "content": "import 'mint-ui/src/style/empty.css';\nexport { default } from './src/lazyload.js';\n"
  },
  {
    "path": "packages/lazyload/src/lazyload.js",
    "content": "import Lazyload from 'vue-lazyload';\nimport 'mint-ui/src/style/empty.css';\n\nexport default Lazyload;\n"
  },
  {
    "path": "packages/loadmore/README.md",
    "content": "# Overview\nmint-loadmore is a two-direction mobile pull-to-refresh component for vue.js.\n\n# Installation\n```bash\n$ npm install mint-loadmore\n```\n\n# Usage\nImport `mint-loadmore` to your project:\n```Javascript\nrequire('mint-loadmore/lib/index.css');\n\n// ES6 mudule\nimport Loadmore from 'mint-loadmore';\n\n// CommonJS\nconst Loadmore = require('mint-loadmore').default;\n```\n\nRegister component:\n```Javascript\nVue.component('loadmore', Loadmore);\n```\n\nThen use it:\n```html\n<loadmore :top-method=\"loadTop\" :bottom-method=\"loadBottom\" :bottom-all-loaded=\"allLoaded\">\n  ...\n</loadmore>\n```\n\n# Example\nVisit [this page](http://leopoldthecoder.github.io/Demos/vue-loadmore/index.html) using your mobile device.\n```html\n<loadmore :top-method=\"loadTop\" :bottom-method=\"loadBottom\" :bottom-all-loaded=\"allLoaded\">\n  <ul>\n    <li v-for=\"item in list\">{{ item }}</li>\n  </ul>\n</loadmore>\n<loadmore :top-method=\"loadTop2\" :top-status.sync=\"topStatus\">\n  <ul>\n    <li v-for=\"item in list2\">{{ item }}</li>\n  </ul>\n  <div slot=\"top\" class=\"mint-loadmore-top\">\n    <span v-show=\"topStatus !== 'loading'\" :class=\"{ 'rotate': topStatus === 'drop' }\">↓</span>\n    <span v-show=\"topStatus === 'loading'\">Loading...</span>\n  </div>\n</loadmore>\n```\nFor upward direction, pull the component `topDistance` pixels away from the top and then release it, the function you appointed as `top-method` will run:\n```Javascript\nloadTop(id) {\n  ...// load more data\n  this.$broadcast('onTopLoaded', id);\n}\n```\nAt the end of your `top-method`, don't forget to broadcast the `onTopLoaded` event so that `mint-loadmore` removes `topLoadingText`. Note that a parameter called `id` is passed to `loadTop` and `onTopLoaded`. This is because after the top data is loaded, some reposition work is performed inside a `mint-loadmore` instance, and `id` simply tells the component which instance should be repositioned. You don't need to do anything more than passing `id` to `onTopLoaded` just as shown above.\n\nFor downward direction, things are similar. To invoke `bottom-method`, just pull the component `bottomDistance` pixels away from the bottom and then release it.\n```Javascript\nloadBottom(id) {\n  ...// load more data\n  this.allLoaded = true;// if all data are loaded\n  this.$broadcast('onBottomLoaded', id);\n}\n```\nRemember to set `bottom-all-loaded` to `true` after all data are loaded. And of course broadcast `onBottomLoaded` with `id`.\n\nYou can customize the top and bottom DOM using an HTML template. For example, to customize the top DOM, you'll need to add a variable that syncs with `top-status` on `loadmore` tag, and then write your template with a `slot` attribute set to `top` and `class` set to `mint-loadmore-top`. `top-status` has three possible values that indicates which status the component is at:\n*  `pull` if the component is being pulled yet not ready to drop (top distance is within the distance threshold defined by `topDistance`)\n*  `drop` if the component is ready to drop\n*  `loading` if `topMethod` is running\n\nAnd of course, if a top HTMl template is given, `topPullText`, `topDropText` and `topLoadingText` are all unnecessary.\n\nDon't need to load data from upward direction? Simply omit the `topMethod` attribute. Same goes to downward.\n\nUpon loaded, `loadmore` will automatically check if it is tall enough to fill its container. If not, `bottom-method` will run until its container is filled. Turn off `auto-fill` if you'd rather handle this manually.\n\n# API\n| Option            | Description                                                      | Value    | Default     |\n|-------------------|------------------------------------------------------------------|----------|-------------|\n| autoFill          | if `true`, `loadmore` will check and fill its container          | Boolean  | true        |\n| topPullText       | top text when the component is being pulled down                 | String   | '下拉刷新'  |\n| topDropText       | top text when the component is ready to drop                     | String   | '释放更新'  |\n| topLoadingText    | top text while `topMethod` is running                            | String   | '加载中...' |\n| topDistance       | distance threshold that triggers `topMethod`                     | Number   | 70          |\n| topMethod         | upward load-more function                                        | Function |             |\n| bottomPullText    | bottom text when the component is being pulled up                | String   | '上拉刷新'  |\n| bottomDropText    | bottom text when the component is ready to drop                  | String   | '释放更新'  |\n| bottomLoadingText | bottom text while `bottomMethod` is running                      | String   | '加载中...' |\n| bottomDistance    | distance threshold that triggers `bottomMethod`                  | Number   | 70          |\n| bottomMethod      | downward load-more function                                      | Function |             |\n| bottomAllLoaded   | if `true`, `bottomMethod` can no longer be triggered             | Boolean  | false       |\n\n# License\nMIT\n"
  },
  {
    "path": "packages/loadmore/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintLoadmore',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/loadmore/index.js",
    "content": "export { default } from './src/loadmore.vue';\n"
  },
  {
    "path": "packages/loadmore/package.json",
    "content": "{\n  \"name\": \"mint-loadmore\",\n  \"description\": \"\",\n  \"version\": \"0.1.2\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-loadmore\",\n  \"dependencies\": {}\n}\n"
  },
  {
    "path": "packages/loadmore/src/loadmore.vue",
    "content": "<template>\n  <div class=\"mint-loadmore\">\n    <div class=\"mint-loadmore-content\" :class=\"{ 'is-dropped': topDropped || bottomDropped}\" :style=\"{ 'transform': transform }\">\n      <slot name=\"top\">\n        <div class=\"mint-loadmore-top\" v-if=\"topMethod\">\n          <spinner v-if=\"topStatus === 'loading'\" class=\"mint-loadmore-spinner\" :size=\"20\" type=\"fading-circle\"></spinner>\n          <span class=\"mint-loadmore-text\">{{ topText }}</span>\n        </div>\n      </slot>\n      <slot></slot>\n      <slot name=\"bottom\">\n        <div class=\"mint-loadmore-bottom\" v-if=\"bottomMethod\">\n          <spinner v-if=\"bottomStatus === 'loading'\" class=\"mint-loadmore-spinner\" :size=\"20\" type=\"fading-circle\"></spinner>\n          <span class=\"mint-loadmore-text\">{{ bottomText }}</span>\n        </div>\n      </slot>\n    </div>\n  </div>\n</template>\n\n<style>\n  @component-namespace mint {\n    @component loadmore {\n      overflow: hidden;\n\n      @descendent content {\n        @when dropped {\n          transition: .2s;\n        }\n      }\n\n      @descendent top, bottom {\n        text-align: center;\n        height: 50px;\n        line-height: 50px;\n      }\n\n      @descendent top {\n        margin-top: -50px;\n      }\n\n      @descendent bottom {\n        margin-bottom: -50px;\n      }\n\n      @descendent spinner {\n        display: inline-block;\n        margin-right: 5px;\n        vertical-align: middle;\n      }\n\n      @descendent text {\n        vertical-align: middle;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import spinner from 'mint-ui/packages/spinner/src/spinner/fading-circle.vue';\n  export default {\n    name: 'mt-loadmore',\n    components: {\n      'spinner': spinner\n    },\n\n    props: {\n      maxDistance: {\n        type: Number,\n        default: 0\n      },\n      autoFill: {\n        type: Boolean,\n        default: true\n      },\n      distanceIndex: {\n        type: Number,\n        default: 2\n      },\n      topPullText: {\n        type: String,\n        default: '下拉刷新'\n      },\n      topDropText: {\n        type: String,\n        default: '释放更新'\n      },\n      topLoadingText: {\n        type: String,\n        default: '加载中...'\n      },\n      topDistance: {\n        type: Number,\n        default: 70\n      },\n      topMethod: {\n        type: Function\n      },\n      bottomPullText: {\n        type: String,\n        default: '上拉刷新'\n      },\n      bottomDropText: {\n        type: String,\n        default: '释放更新'\n      },\n      bottomLoadingText: {\n        type: String,\n        default: '加载中...'\n      },\n      bottomDistance: {\n        type: Number,\n        default: 70\n      },\n      bottomMethod: {\n        type: Function\n      },\n      bottomAllLoaded: {\n        type: Boolean,\n        default: false\n      }\n    },\n\n    data() {\n      return {\n        translate: 0,\n        scrollEventTarget: null,\n        containerFilled: false,\n        topText: '',\n        topDropped: false,\n        bottomText: '',\n        bottomDropped: false,\n        bottomReached: false,\n        direction: '',\n        startY: 0,\n        startScrollTop: 0,\n        currentY: 0,\n        topStatus: '',\n        bottomStatus: ''\n      };\n    },\n\n    computed: {\n      transform() {\n        return this.translate === 0 ? null : 'translate3d(0, ' + this.translate + 'px, 0)';\n      }\n    },\n\n    watch: {\n      topStatus(val) {\n        this.$emit('top-status-change', val);\n        switch (val) {\n          case 'pull':\n            this.topText = this.topPullText;\n            break;\n          case 'drop':\n            this.topText = this.topDropText;\n            break;\n          case 'loading':\n            this.topText = this.topLoadingText;\n            break;\n        }\n      },\n\n      bottomStatus(val) {\n        this.$emit('bottom-status-change', val);\n        switch (val) {\n          case 'pull':\n            this.bottomText = this.bottomPullText;\n            break;\n          case 'drop':\n            this.bottomText = this.bottomDropText;\n            break;\n          case 'loading':\n            this.bottomText = this.bottomLoadingText;\n            break;\n        }\n      }\n    },\n\n    methods: {\n      onTopLoaded() {\n        this.translate = 0;\n        setTimeout(() => {\n          this.topStatus = 'pull';\n        }, 200);\n      },\n\n      onBottomLoaded() {\n        this.bottomStatus = 'pull';\n        this.bottomDropped = false;\n        this.$nextTick(() => {\n          if (this.scrollEventTarget === window) {\n            document.body.scrollTop += 50;\n          } else {\n            this.scrollEventTarget.scrollTop += 50;\n          }\n          this.translate = 0;\n        });\n        if (!this.bottomAllLoaded && !this.containerFilled) {\n          this.fillContainer();\n        }\n      },\n\n      getScrollEventTarget(element) {\n        let currentNode = element;\n        while (currentNode && currentNode.tagName !== 'HTML' &&\n          currentNode.tagName !== 'BODY' && currentNode.nodeType === 1) {\n          let overflowY = document.defaultView.getComputedStyle(currentNode).overflowY;\n          if (overflowY === 'scroll' || overflowY === 'auto') {\n            return currentNode;\n          }\n          currentNode = currentNode.parentNode;\n        }\n        return window;\n      },\n\n      getScrollTop(element) {\n        if (element === window) {\n          return Math.max(window.pageYOffset || 0, document.documentElement.scrollTop);\n        } else {\n          return element.scrollTop;\n        }\n      },\n\n      bindTouchEvents() {\n        this.$el.addEventListener('touchstart', this.handleTouchStart);\n        this.$el.addEventListener('touchmove', this.handleTouchMove);\n        this.$el.addEventListener('touchend', this.handleTouchEnd);\n      },\n\n      init() {\n        this.topStatus = 'pull';\n        this.bottomStatus = 'pull';\n        this.topText = this.topPullText;\n        this.scrollEventTarget = this.getScrollEventTarget(this.$el);\n        if (typeof this.bottomMethod === 'function') {\n          this.fillContainer();\n          this.bindTouchEvents();\n        }\n        if (typeof this.topMethod === 'function') {\n          this.bindTouchEvents();\n        }\n      },\n\n      fillContainer() {\n        if (this.autoFill) {\n          this.$nextTick(() => {\n            if (this.scrollEventTarget === window) {\n              this.containerFilled = this.$el.getBoundingClientRect().bottom >=\n                document.documentElement.getBoundingClientRect().bottom;\n            } else {\n              this.containerFilled = this.$el.getBoundingClientRect().bottom >=\n                this.scrollEventTarget.getBoundingClientRect().bottom;\n            }\n            if (!this.containerFilled) {\n              this.bottomStatus = 'loading';\n              this.bottomMethod();\n            }\n          });\n        }\n      },\n\n      checkBottomReached() {\n        if (this.scrollEventTarget === window) {\n          /**\n           * fix:scrollTop===0\n           */\n          return document.documentElement.scrollTop || document.body.scrollTop + document.documentElement.clientHeight >= document.body.scrollHeight;\n        } else {\n          return parseInt(this.$el.getBoundingClientRect().bottom) <= parseInt(this.scrollEventTarget.getBoundingClientRect().bottom) + 1;\n        }\n      },\n\n      handleTouchStart(event) {\n        this.startY = event.touches[0].clientY;\n        this.startScrollTop = this.getScrollTop(this.scrollEventTarget);\n        this.bottomReached = false;\n        if (this.topStatus !== 'loading') {\n          this.topStatus = 'pull';\n          this.topDropped = false;\n        }\n        if (this.bottomStatus !== 'loading') {\n          this.bottomStatus = 'pull';\n          this.bottomDropped = false;\n        }\n      },\n\n      handleTouchMove(event) {\n        if (this.startY < this.$el.getBoundingClientRect().top && this.startY > this.$el.getBoundingClientRect().bottom) {\n          return;\n        }\n        this.currentY = event.touches[0].clientY;\n        let distance = (this.currentY - this.startY) / this.distanceIndex;\n        this.direction = distance > 0 ? 'down' : 'up';\n        if (typeof this.topMethod === 'function' && this.direction === 'down' &&\n          this.getScrollTop(this.scrollEventTarget) === 0 && this.topStatus !== 'loading') {\n          event.preventDefault();\n          event.stopPropagation();\n          if (this.maxDistance > 0) {\n            this.translate = distance <= this.maxDistance ? distance - this.startScrollTop : this.translate;\n          } else {\n            this.translate = distance - this.startScrollTop;\n          }\n          if (this.translate < 0) {\n            this.translate = 0;\n          }\n          this.topStatus = this.translate >= this.topDistance ? 'drop' : 'pull';\n        }\n\n        if (this.direction === 'up') {\n          this.bottomReached = this.bottomReached || this.checkBottomReached();\n        }\n        if (typeof this.bottomMethod === 'function' && this.direction === 'up' &&\n          this.bottomReached && this.bottomStatus !== 'loading' && !this.bottomAllLoaded) {\n          event.preventDefault();\n          event.stopPropagation();\n          if (this.maxDistance > 0) {\n            this.translate = Math.abs(distance) <= this.maxDistance\n              ? this.getScrollTop(this.scrollEventTarget) - this.startScrollTop + distance : this.translate;\n          } else {\n            this.translate = this.getScrollTop(this.scrollEventTarget) - this.startScrollTop + distance;\n          }\n          if (this.translate > 0) {\n            this.translate = 0;\n          }\n          this.bottomStatus = -this.translate >= this.bottomDistance ? 'drop' : 'pull';\n        }\n        this.$emit('translate-change', this.translate);\n      },\n\n      handleTouchEnd() {\n        if (this.direction === 'down' && this.getScrollTop(this.scrollEventTarget) === 0 && this.translate > 0) {\n          this.topDropped = true;\n          if (this.topStatus === 'drop') {\n            this.translate = '50';\n            this.topStatus = 'loading';\n            this.topMethod();\n          } else {\n            this.translate = '0';\n            this.topStatus = 'pull';\n          }\n        }\n        if (this.direction === 'up' && this.bottomReached && this.translate < 0) {\n          this.bottomDropped = true;\n          this.bottomReached = false;\n          if (this.bottomStatus === 'drop') {\n            this.translate = '-50';\n            this.bottomStatus = 'loading';\n            this.bottomMethod();\n          } else {\n            this.translate = '0';\n            this.bottomStatus = 'pull';\n          }\n        }\n        this.$emit('translate-change', this.translate);\n        this.direction = '';\n      }\n    },\n\n    mounted() {\n      this.init();\n    }\n  };\n</script>"
  },
  {
    "path": "packages/message-box/README.md",
    "content": "# mint-message-box"
  },
  {
    "path": "packages/message-box/index.js",
    "content": "export { default } from './src/message-box.js';\n"
  },
  {
    "path": "packages/message-box/src/message-box.js",
    "content": "var CONFIRM_TEXT = '确定';\nvar CANCEL_TEXT = '取消';\n\nvar defaults = {\n  title: '提示',\n  message: '',\n  type: '',\n  showInput: false,\n  showClose: true,\n  modalFade: false,\n  lockScroll: false,\n  closeOnClickModal: true,\n  inputValue: null,\n  inputPlaceholder: '',\n  inputPattern: null,\n  inputValidator: null,\n  inputErrorMessage: '',\n  showConfirmButton: true,\n  showCancelButton: false,\n  confirmButtonPosition: 'right',\n  confirmButtonHighlight: false,\n  cancelButtonHighlight: false,\n  confirmButtonText: CONFIRM_TEXT,\n  cancelButtonText: CANCEL_TEXT,\n  confirmButtonClass: '',\n  cancelButtonClass: ''\n};\n\nimport Vue from 'vue';\nimport msgboxVue from './message-box.vue';\n\nvar merge = function(target) {\n  for (var i = 1, j = arguments.length; i < j; i++) {\n    var source = arguments[i];\n    for (var prop in source) {\n      if (source.hasOwnProperty(prop)) {\n        var value = source[prop];\n        if (value !== undefined) {\n          target[prop] = value;\n        }\n      }\n    }\n  }\n\n  return target;\n};\n\nvar MessageBoxConstructor = Vue.extend(msgboxVue);\n\nvar currentMsg, instance;\nvar msgQueue = [];\n\nconst defaultCallback = action => {\n  if (currentMsg) {\n    var callback = currentMsg.callback;\n    if (typeof callback === 'function') {\n      if (instance.showInput) {\n        callback(instance.inputValue, action);\n      } else {\n        callback(action);\n      }\n    }\n    if (currentMsg.resolve) {\n      var $type = currentMsg.options.$type;\n      if ($type === 'confirm' || $type === 'prompt') {\n        if (action === 'confirm') {\n          if (instance.showInput) {\n            currentMsg.resolve({ value: instance.inputValue, action });\n          } else {\n            currentMsg.resolve(action);\n          }\n        } else if (action === 'cancel' && currentMsg.reject) {\n          currentMsg.reject(action);\n        }\n      } else {\n        currentMsg.resolve(action);\n      }\n    }\n  }\n};\n\nvar initInstance = function() {\n  instance = new MessageBoxConstructor({\n    el: document.createElement('div')\n  });\n\n  instance.callback = defaultCallback;\n};\n\nvar showNextMsg = function() {\n  if (!instance) {\n    initInstance();\n  }\n\n  if (!instance.value || instance.closeTimer) {\n    if (msgQueue.length > 0) {\n      currentMsg = msgQueue.shift();\n\n      var options = currentMsg.options;\n      for (var prop in options) {\n        if (options.hasOwnProperty(prop)) {\n          instance[prop] = options[prop];\n        }\n      }\n      if (options.callback === undefined) {\n        instance.callback = defaultCallback;\n      }\n      ['modal', 'showClose', 'closeOnClickModal', 'closeOnPressEscape'].forEach(prop => {\n        if (instance[prop] === undefined) {\n          instance[prop] = true;\n        }\n      });\n      document.body.appendChild(instance.$el);\n\n      Vue.nextTick(() => {\n        instance.value = true;\n      });\n    }\n  }\n};\n\nvar MessageBox = function(options, callback) {\n  if (typeof options === 'string') {\n    options = {\n      title: options\n    };\n    if (arguments[1]) {\n      options.message = arguments[1];\n    }\n    if (arguments[2]) {\n      options.type = arguments[2];\n    }\n  } else if (options.callback && !callback) {\n    callback = options.callback;\n  }\n\n  if (typeof Promise !== 'undefined') {\n    return new Promise(function(resolve, reject) { // eslint-disable-line\n      msgQueue.push({\n        options: merge({}, defaults, MessageBox.defaults || {}, options),\n        callback: callback,\n        resolve: resolve,\n        reject: reject\n      });\n\n      showNextMsg();\n    });\n  } else {\n    msgQueue.push({\n      options: merge({}, defaults, MessageBox.defaults || {}, options),\n      callback: callback\n    });\n\n    showNextMsg();\n  }\n};\n\nMessageBox.setDefaults = function(defaults) {\n  MessageBox.defaults = defaults;\n};\n\nMessageBox.alert = function(message, title, options) {\n  if (typeof title === 'object') {\n    options = title;\n    title = '';\n  }\n  return MessageBox(merge({\n    title: title,\n    message: message,\n    $type: 'alert',\n    closeOnPressEscape: false,\n    closeOnClickModal: false\n  }, options));\n};\n\nMessageBox.confirm = function(message, title, options) {\n  if (typeof title === 'object') {\n    options = title;\n    title = '';\n  }\n  return MessageBox(merge({\n    title: title,\n    message: message,\n    $type: 'confirm',\n    showCancelButton: true\n  }, options));\n};\n\nMessageBox.prompt = function(message, title, options) {\n  if (typeof title === 'object') {\n    options = title;\n    title = '';\n  }\n  return MessageBox(merge({\n    title: title,\n    message: message,\n    showCancelButton: true,\n    showInput: true,\n    $type: 'prompt'\n  }, options));\n};\n\nMessageBox.close = function() {\n  if (!instance) return;\n  instance.value = false;\n  msgQueue = [];\n  currentMsg = null;\n};\n\nexport default MessageBox;\nexport { MessageBox };\n"
  },
  {
    "path": "packages/message-box/src/message-box.vue",
    "content": "<template>\n  <div class=\"mint-msgbox-wrapper\">\n    <transition name=\"msgbox-bounce\">\n      <div class=\"mint-msgbox\" v-show=\"value\">\n        <div class=\"mint-msgbox-header\" v-if=\"title !== ''\">\n          <div class=\"mint-msgbox-title\">{{ title }}</div>\n        </div>\n        <div class=\"mint-msgbox-content\" v-if=\"message !== ''\">\n          <div class=\"mint-msgbox-message\" v-html=\"message\"></div>\n          <div class=\"mint-msgbox-input\" v-show=\"showInput\">\n            <input v-model=\"inputValue\" :placeholder=\"inputPlaceholder\" ref=\"input\">\n            <div class=\"mint-msgbox-errormsg\" :style=\"{ visibility: !!editorErrorMessage ? 'visible' : 'hidden' }\">{{ editorErrorMessage }}</div>\n          </div>\n        </div>\n        <div class=\"mint-msgbox-btns\">\n          <button :class=\"[ cancelButtonClasses ]\" v-show=\"showCancelButton\" @click=\"handleAction('cancel')\">{{ cancelButtonText }}</button>\n          <button :class=\"[ confirmButtonClasses ]\" v-show=\"showConfirmButton\" @click=\"handleAction('confirm')\">{{ confirmButtonText }}</button>\n        </div>\n      </div>\n    </transition>\n  </div>\n</template>\n\n<style>\n  @component-namespace mint {\n    @component msgbox {\n      position: fixed;\n      top: 50%;\n      left: 50%;\n      transform: translate3d(-50%, -50%, 0);\n      background-color: #fff;\n      width: 85%;\n      border-radius: 3px;\n      font-size: 16px;\n      -webkit-user-select: none;\n      overflow: hidden;\n      backface-visibility: hidden;\n      transition: .2s;\n\n      @descendent header {\n        padding: 15px 0 0;\n      }\n\n      @descendent content {\n        padding: 10px 20px 15px;\n        border-bottom: 1px solid #ddd;\n        min-height: 36px;\n        position: relative;\n      }\n\n      @descendent input {\n        padding-top: 15px;\n        & input {\n          border: 1px solid #dedede;\n          border-radius: 5px;\n          padding: 4px 5px;\n          width: 100%;\n          appearance: none;\n          outline: none;\n        }\n        & input.invalid {\n          border-color: #ff4949;\n          &:focus {\n            border-color: #ff4949;\n          }\n        }\n      }\n\n      @descendent errormsg {\n        color: red;\n        font-size: 12px;\n        min-height: 18px;\n        margin-top: 2px;\n      }\n\n      @descendent title {\n        text-align: center;\n        padding-left: 0;\n        margin-bottom: 0;\n        font-size: 16px;\n        font-weight: bold;\n        color: #333;\n      }\n\n      @descendent message {\n        color: #999;\n        margin: 0;\n        text-align: center;\n        line-height: 36px;\n      }\n\n      @descendent btns {\n        display: -webkit-box;\n        display: -webkit-flex;\n        display: -ms-flexbox;\n        display: flex;\n        height: 40px;\n        line-height: 40px;\n      }\n\n      @descendent btn {\n        line-height: 35px;\n        display: block;\n        background-color: #fff;\n        flex: 1;\n        margin: 0;\n        border: 0;\n\n        &:focus {\n          outline: none;\n        }\n\n        &:active {\n          background-color: #fff;\n        }\n      }\n\n      @descendent cancel {\n        width: 50%;\n        border-right: 1px solid #ddd;\n        &:active {\n          color: #000;\n        }\n      }\n\n      @descendent confirm {\n        color: #26a2ff;\n        width: 50%;\n        &:active {\n         color: #26a2ff;\n        }\n      }\n    }\n  }\n\n  .msgbox-bounce-enter {\n    opacity: 0;\n    transform: translate3d(-50%, -50%, 0) scale(0.7);\n  }\n  .msgbox-bounce-leave-active {\n    opacity: 0;\n    transform: translate3d(-50%, -50%, 0) scale(0.9);\n  }\n</style>\n<style src=\"mint-ui/src/style/popup.css\"></style>\n\n<script type=\"text/babel\">\n  let CONFIRM_TEXT = '确定';\n  let CANCEL_TEXT = '取消';\n\n  import Popup from 'mint-ui/src/utils/popup';\n\n  export default {\n    mixins: [ Popup ],\n\n    props: {\n      modal: {\n        default: true\n      },\n      showClose: {\n        type: Boolean,\n        default: true\n      },\n      lockScroll: {\n        type: Boolean,\n        default: false\n      },\n      closeOnClickModal: {\n        default: true\n      },\n      closeOnPressEscape: {\n        default: true\n      },\n      inputType: {\n        type: String,\n        default: 'text'\n      }\n    },\n\n    computed: {\n      confirmButtonClasses() {\n        let classes = 'mint-msgbox-btn mint-msgbox-confirm ' + this.confirmButtonClass;\n        if (this.confirmButtonHighlight) {\n          classes += ' mint-msgbox-confirm-highlight';\n        }\n        return classes;\n      },\n      cancelButtonClasses() {\n        let classes = 'mint-msgbox-btn mint-msgbox-cancel ' + this.cancelButtonClass;\n        if (this.cancelButtonHighlight) {\n          classes += ' mint-msgbox-cancel-highlight';\n        }\n        return classes;\n      }\n    },\n\n    methods: {\n      doClose() {\n        this.value = false;\n        this._closing = true;\n\n        this.onClose && this.onClose();\n\n        setTimeout(() => {\n          if (this.modal && this.bodyOverflow !== 'hidden') {\n            document.body.style.overflow = this.bodyOverflow;\n            document.body.style.paddingRight = this.bodyPaddingRight;\n          }\n          this.bodyOverflow = null;\n          this.bodyPaddingRight = null;\n        }, 200);\n        this.opened = false;\n\n        if (!this.transition) {\n          this.doAfterClose();\n        }\n      },\n\n      handleAction(action) {\n        if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) {\n          return;\n        }\n        var callback = this.callback;\n        this.value = false;\n        callback(action);\n      },\n\n      validate() {\n        if (this.$type === 'prompt') {\n          var inputPattern = this.inputPattern;\n          if (inputPattern && !inputPattern.test(this.inputValue || '')) {\n            this.editorErrorMessage = this.inputErrorMessage || '输入的数据不合法!';\n            this.$refs.input.classList.add('invalid');\n            return false;\n          }\n          var inputValidator = this.inputValidator;\n          if (typeof inputValidator === 'function') {\n            var validateResult = inputValidator(this.inputValue);\n            if (validateResult === false) {\n              this.editorErrorMessage = this.inputErrorMessage || '输入的数据不合法!';\n              this.$refs.input.classList.add('invalid');\n              return false;\n            }\n            if (typeof validateResult === 'string') {\n              this.editorErrorMessage = validateResult;\n              return false;\n            }\n          }\n        }\n        this.editorErrorMessage = '';\n        this.$refs.input.classList.remove('invalid');\n        return true;\n      },\n\n      handleInputType(val) {\n        if (val === 'range' || !this.$refs.input) return;\n        this.$refs.input.type = val;\n      }\n    },\n\n    watch: {\n      inputValue() {\n        if (this.$type === 'prompt') {\n          this.validate();\n        }\n      },\n\n      value(val) {\n        this.handleInputType(this.inputType);\n        if (val && this.$type === 'prompt') {\n          setTimeout(() => {\n            if (this.$refs.input) {\n              this.$refs.input.focus();\n            }\n          }, 500);\n        }\n      },\n\n      inputType(val) {\n        this.handleInputType(val);\n      }\n    },\n\n    data() {\n      return {\n        title: '',\n        message: '',\n        type: '',\n        showInput: false,\n        inputValue: null,\n        inputPlaceholder: '',\n        inputPattern: null,\n        inputValidator: null,\n        inputErrorMessage: '',\n        showConfirmButton: true,\n        showCancelButton: false,\n        confirmButtonText: CONFIRM_TEXT,\n        cancelButtonText: CANCEL_TEXT,\n        confirmButtonClass: '',\n        confirmButtonDisabled: false,\n        cancelButtonClass: '',\n        editorErrorMessage: null,\n        callback: null\n      };\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/navbar/README.md",
    "content": "# mint-navbar"
  },
  {
    "path": "packages/navbar/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintNavbar',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/navbar/index.js",
    "content": "export { default } from './src/navbar.vue';\n"
  },
  {
    "path": "packages/navbar/package.json",
    "content": "{\n  \"name\": \"mint-navbar\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-navbar\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/navbar/src/navbar.vue",
    "content": "<template>\n  <div class=\"mint-navbar\" :class=\"{ 'is-fixed': fixed }\">\n    <slot></slot>\n  </div>\n</template>\n\n<script>\n/**\n * mt-navbar\n * @module components/navbar\n * @desc 顶部 tab，依赖 tab-item\n *\n * @param {boolean} [fixed=false] - 固定底部\n * @param {*} selected - 返回 item component 传入的 value\n *\n * @example\n * <mt-navbar :selected.sync=\"selected\">\n *   <mt-tab-item value=\"订单\">\n *     <span slot=\"label\">订单</span>\n *   </mt-tab-item>\n * </mt-navbar>\n *\n * <mt-navbar :selected.sync=\"selected\" fixed>\n *   <mt-tab-item :value=\"['传入数组', '也是可以的']\">\n *     <span slot=\"label\">订单</span>\n *   </mt-tab-item>\n * </mt-navbar>\n *\n */\nexport default {\n  name: 'mt-navbar',\n\n  props: {\n    fixed: Boolean,\n    value: {}\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component navbar {\n      background-color: $color-white;\n      display: flex;\n      text-align: center;\n\n      @when fixed {\n        position: fixed 0 0 * 0;\n        z-index: $z-index-normal;\n      }\n\n      .mint-tab-item {\n        padding: 17px 0;\n        font-size: 15px;\n\n        &:last-child {\n          border-right: 0;\n        }\n\n        &.is-selected {\n          border-bottom: 3px solid $color-blue;\n          color: $color-blue;\n          margin-bottom: -3px;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/palette-button/README.md",
    "content": "# Overview\npalette-button is a set of buttons that can expand and collapse\n\n# Usage\n\nsee example\n\n# Option\n- content: the text content of the main button\n- offset: the offset arc of the fan-shaped area\n- direction: the direction of the fan-shaped area, belongs to one of the ['lt', 't', 'rt', 'r', 'rb', 'b', 'lb', 'l']\n- radius: the radius of the fan-shaped area\n- mainButtonStyle: set the style of the main button\n\n# Method\n- toggle: toggle between expand and collapse\n- expand: expand all sub buttons\n- collapse: collapse all sub buttons\n\n# Event\n- expand: begin expand sub buttons\n- expanded: all sub buttons has been expanded\n- collapse: begin collapse sub buttons"
  },
  {
    "path": "packages/palette-button/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintPaletteButton',\n  extractCSS: 'style.css',\n\n  extends: ['vue', 'saladcss']\n});\n\ncooking.add('resolve.alias', {\n  'main': path.join(__dirname, '../../src'),\n  'mint-ui': path.join(__dirname, '..')\n});\n\ncooking.add('externals', {\n  vue: {\n    root: 'Vue',\n    commonjs: 'vue',\n    commonjs2: 'vue',\n    amd: 'vue'\n  }\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/palette-button/index.js",
    "content": "export { default } from './src/palette-button.vue';\n"
  },
  {
    "path": "packages/palette-button/package.json",
    "content": "{\n  \"name\": \"mint-palette-button\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"cia.fbi.007@hotmail.com\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/palette-button\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/palette-button/src/palette-button.vue",
    "content": "<template>\n  <div class=\"mint-palette-button\" :class=\"{ expand: expanded, 'mint-palette-button-active': transforming }\"\n    @animationend=\"onMainAnimationEnd\" @webkitAnimationEnd=\"onMainAnimationEnd\" @mozAnimationEnd=\"onMainAnimationEnd\">\n    <div class=\"mint-sub-button-container\">\n      <slot></slot>\n    </div>\n    <div @touchstart=\"toggle\" class=\"mint-main-button\" :style=\"mainButtonStyle\">\n      {{content}}\n    </div>\n  </div>\n</template>\n\n<script>\n  export default {\n    name: 'mt-palette-button',\n\n    data: function() {\n      return {\n        transforming: false,    // 是否正在执行动画\n        expanded: false           // 是否已经展开子按钮\n      };\n    },\n\n    props: {\n      content: {\n        type: String,\n        default: ''\n      },\n\n      offset: {\n        type: Number,           // 扇面偏移角，默认是四分之π，配合默认方向lt\n        default: Math.PI / 4\n      },\n\n      direction: {\n        type: String,\n        default: 'lt'           // lt t rt this.radius rb b lb l 取值有8个方向，左上、上、右上、右、右下、下、左下、左，默认为左上\n      },\n\n      radius: {\n        type: Number,\n        default: 90\n      },\n\n      mainButtonStyle: {\n        type: String,           // 应用到 mint-main-button 上的 class\n        default: ''\n      }\n    },\n    methods: {\n      toggle(event) {\n        if (!this.transforming) {\n          if (this.expanded) {\n            this.collapse(event);\n          } else {\n            this.expand(event);\n          }\n        }\n      },\n\n      onMainAnimationEnd(event) {\n        this.transforming = false;\n        this.$emit('expanded');\n      },\n\n      expand(event) {\n        this.expanded = true;\n        this.transforming = true;\n        this.$emit('expand', event);\n      },\n\n      collapse(event) {\n        this.expanded = false;\n        this.$emit('collapse', event);\n      }\n    },\n    mounted() {\n      this.slotChildren = [];\n      for (let i = 0; i < this.$slots.default.length; i++) {\n        if (this.$slots.default[i].elm.nodeType !== 3) {\n          this.slotChildren.push(this.$slots.default[i]);\n        }\n      }\n\n      let css = '';\n      let direction_arc = Math.PI * (3 + Math.max(['lt', 't', 'rt', 'r', 'rb', 'b', 'lb', 'l'].indexOf(this.direction), 0)) / 4;\n      for (let i = 0; i < this.slotChildren.length; i++) {\n        var arc = (Math.PI - this.offset * 2) / (this.slotChildren.length - 1) * i + this.offset + direction_arc;\n        var x = (Math.cos(arc) * this.radius).toFixed(2);\n        var y = (Math.sin(arc) * this.radius).toFixed(2);\n        var item_css = '.expand .palette-button-' + this._uid + '-sub-' + i + '{transform:translate(' + x + 'px,' + y + 'px) rotate(720deg);transition-delay:' + 0.03 * i + 's}';\n        css += item_css;\n\n        this.slotChildren[i].elm.className += (' palette-button-' + this._uid + '-sub-' + i);\n      }\n\n      this.styleNode = document.createElement('style');\n      this.styleNode.type = 'text/css';\n      this.styleNode.rel = 'stylesheet';\n      this.styleNode.title = 'palette button style';\n      this.styleNode.appendChild(document.createTextNode(css));\n      document.getElementsByTagName('head')[0].appendChild(this.styleNode);\n    },\n\n    destroyed() {\n      if (this.styleNode) {\n        this.styleNode.parentNode.removeChild(this.styleNode);\n      }\n    }\n  };\n</script>\n\n<style>\n  .mint-palette-button{\n    display:inline-block;\n    position:relative;\n    border-radius:50%;\n    width: 56px;\n    height:56px;\n    line-height:56px;\n    text-align:center;\n    transition:transform .1s ease-in-out;\n  }\n\n  .mint-main-button{\n    position:absolute;\n    top:0;\n    left:0;\n    width:100%;\n    height:100%;\n    border-radius:50%;\n    background-color:blue;\n    font-size:2em;\n  }\n  .mint-palette-button-active{\n    animation: mint-zoom 0.5s ease-in-out;\n  }\n  .mint-sub-button-container>*{\n    position:absolute;\n    top:15px;\n    left:15px;\n    width:25px;\n    height:25px;\n    transition: transform .3s ease-in-out;\n  }\n\n  @keyframes mint-zoom{\n    0% {transform:scale(1)}\n    10% {transform:scale(1.1)}\n    30% {transform:scale(0.9)}\n    50% {transform:scale(1.05)}\n    70% {transform:scale(0.95)}\n    90% {transform:scale(1.01)}\n    100% {transform:scale(1)}\n  }\n</style>\n"
  },
  {
    "path": "packages/picker/README.md",
    "content": "# Overview\nvue-picker is a multi-slot picker based on vue.js.\n\n# Install\n\n```Bash\nnpm install vue-picker --save\n```\n\n```JavaScript\nrequire ('mint-picker/lib/index.css');\n\n// ES6 mudule\nimport Picker from 'mint-picker';\n\n// CommonJS\nconst Picker = require('mint-picker').default;\n```\nRegister component:\n```Javascript\nVue.component('picker', Picker);\n```\n\n# Usage\n\n```HTML\n<picker :slots=\"slots\" @change=\"onValuesChange\" rotate-effect :visible-item-count=\"3\">\n   <!-- Toolbar items -->\n  <button>confirm</button>\n  <button>cancel</button>\n</picker>\n```\n\n```JavaScript\nexport default {\n  methods: {\n    onValuesChange(picker, values) {\n      if (values[0] > values[1]) {\n        picker.setSlotValue(1, values[0]);\n      }\n    }\n  },\n\n  data() {\n    return {\n      slots: [\n        {\n          flex: 1,\n          values: ['2015-01', '2015-02', '2015-03', '2015-04', '2015-05', '2015-06'],\n          className: 'slot1',\n          textAlign: 'right'\n        }, {\n          divider: true,\n          content: '-',\n          className: 'slot2'\n        }, {\n          flex: 1,\n          values: ['2015-01', '2015-02', '2015-03', '2015-04', '2015-05', '2015-06'],\n          className: 'slot3',\n          textAlign: 'left'\n        }\n      ]\n    };\n  }\n};\n```\n\n# Options\n\nPicker Options:\n\n| Option | Description |\n| ----- | ----- |\n| slots | Array(default: []) the slot config of picker. |\n| showToolbar | Boolean(default: false) show a toolbar on top of picker when showToolbar is true. |\n| visibleItemCount | Number(default: 5) visible item count of each slot. |\n| rotateEffect | Boolean(default: false) use rotate effect on picker item when rotateEffect is true. |\n| itemHeight | Number(default: 36) height of each slot. |\n\nPicker Methods:\n\n- getSlotValue(index): get the value of specific slot.\n- setSlotValue(index, value): set the value of specific slot.\n- getSlotValues(index): get the values of specific slot.\n- setSlotValues(index, values): set the values of specific slot.\n- getValues(): values of all slots except divider slots.\n- setValues(values): set values(Array) of all slots except divider slots.\n\nPicker Slot Options:\n\n| Option | Description |\n| ----- | ----- |\n| divider | Boolean(default: false) - just a divider slot when divider is true. |\n| content | String - text content in divider slot. |\n| values | values of this slot. |\n| textAlign |  text align of this slot's item. |\n| flex | the style.flex value of this slot. |\n| className | className of this slot. |\n\n# License\nMIT"
  },
  {
    "path": "packages/picker/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintPicker',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/picker/index.js",
    "content": "export { default } from './src/picker.vue';\n"
  },
  {
    "path": "packages/picker/package.json",
    "content": "{\n  \"name\": \"mint-picker\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-picker\",\n  \"keywords\": [\n    \"picker\",\n    \"multi slots\",\n    \"vue\"\n  ],\n  \"author\": \"long.zhang@ele.me\",\n  \"dependencies\": {\n    \"raf.js\": \"0.0.4\",\n    \"wind-dom\": \"0.0.3\"\n  }\n}"
  },
  {
    "path": "packages/picker/src/draggable.js",
    "content": "let isDragging = false;\nimport Vue from 'vue';\n\nconst supportTouch = !Vue.prototype.$isServer && 'ontouchstart' in window;\n\nexport default function(element, options) {\n  const moveFn = function(event) {\n    if (options.drag) {\n      options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  };\n\n  const endFn = function(event) {\n    if (!supportTouch) {\n      document.removeEventListener('mousemove', moveFn);\n      document.removeEventListener('mouseup', endFn);\n    }\n    document.onselectstart = null;\n    document.ondragstart = null;\n\n    isDragging = false;\n\n    if (options.end) {\n      options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  };\n\n  element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function(event) {\n    if (isDragging) return;\n    document.onselectstart = function() { return false; };\n    document.ondragstart = function() { return false; };\n\n    if (!supportTouch) {\n      document.addEventListener('mousemove', moveFn);\n      document.addEventListener('mouseup', endFn);\n    }\n    isDragging = true;\n\n    if (options.start) {\n      event.preventDefault();\n      options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  });\n\n  if (supportTouch) {\n    element.addEventListener('touchmove', moveFn);\n    element.addEventListener('touchend', endFn);\n    element.addEventListener('touchcancel', endFn);\n  }\n};\n"
  },
  {
    "path": "packages/picker/src/picker-slot.vue",
    "content": "<template>\n  <div class=\"picker-slot\" :class=\"classNames\" :style=\"flexStyle\">\n    <div v-if=\"!divider\" ref=\"wrapper\" class=\"picker-slot-wrapper\" :class=\"{ dragging: dragging }\" :style=\"{ height: contentHeight + 'px' }\">\n      <div class=\"picker-item\" v-for=\"itemValue in mutatingValues\" :class=\"{ 'picker-selected': itemValue === currentValue }\" :style=\"{ height: itemHeight + 'px', lineHeight: itemHeight + 'px' }\">\n        {{ typeof itemValue === 'object' && itemValue[valueKey] ? itemValue[valueKey] : itemValue }}\n      </div>\n    </div>\n    <div v-if=\"divider\">{{ content }}</div>\n  </div>\n</template>\n\n<style>\n  .picker-slot {\n    font-size: 18px;\n    overflow: hidden;\n    position: relative;\n    max-height: 100%\n  }\n\n  .picker-slot.picker-slot-left {\n    text-align: left;\n  }\n\n  .picker-slot.picker-slot-center {\n    text-align: center;\n  }\n\n  .picker-slot.picker-slot-right {\n    text-align: right;\n  }\n\n  .picker-slot.picker-slot-divider {\n    color: #000;\n    display: flex;\n    align-items: center\n  }\n\n  .picker-slot-wrapper {\n    transition-duration: 0.3s;\n    transition-timing-function: ease-out;\n    backface-visibility: hidden;\n  }\n\n  .picker-slot-wrapper.dragging,\n  .picker-slot-wrapper.dragging .picker-item {\n    transition-duration: 0s;\n  }\n\n  .picker-item {\n    height: 36px;\n    line-height: 36px;\n    padding: 0 10px;\n    white-space: nowrap;\n    position: relative;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    color: #707274;\n    left: 0;\n    top: 0;\n    width: 100%;\n    box-sizing: border-box;\n    transition-duration: .3s;\n    backface-visibility: hidden;\n  }\n\n  .picker-slot-absolute .picker-item {\n    position: absolute;\n  }\n\n  .picker-item.picker-item-far {\n    pointer-events: none\n  }\n\n  .picker-item.picker-selected {\n    color: #000;\n    transform: translate3d(0, 0, 0) rotateX(0);\n  }\n\n  .picker-3d .picker-items {\n    overflow: hidden;\n    perspective: 700px;\n  }\n\n  .picker-3d .picker-item,\n  .picker-3d .picker-slot,\n  .picker-3d .picker-slot-wrapper {\n    transform-style: preserve-3d\n  }\n\n  .picker-3d .picker-slot {\n    overflow: visible\n  }\n\n  .picker-3d .picker-item {\n    transform-origin: center center;\n    backface-visibility: hidden;\n    transition-timing-function: ease-out\n  }\n</style>\n\n<script type=\"text/babel\">\n  import draggable from './draggable';\n  import translateUtil from './translate';\n  import { once, addClass, removeClass } from 'mint-ui/src/utils/dom';\n  import emitter from 'mint-ui/src/mixins/emitter';\n  import Vue from 'vue';\n  if (!Vue.prototype.$isServer) {\n    require('raf.js');\n  }\n\n  var rotateElement = function(element, angle) {\n    if (!element) return;\n    var transformProperty = translateUtil.transformProperty;\n\n    element.style[transformProperty] = element.style[transformProperty].replace(/rotateX\\(.+?deg\\)/gi, '') + ` rotateX(${angle}deg)`;\n  };\n\n  const ITEM_HEIGHT = 36;\n  const VISIBLE_ITEMS_ANGLE_MAP = {\n    3: -45,\n    5: -20,\n    7: -15\n  };\n\n  export default {\n    name: 'picker-slot',\n\n    props: {\n      values: {\n        type: Array,\n        default() {\n          return [];\n        }\n      },\n      value: {},\n      visibleItemCount: {\n        type: Number,\n        default: 5\n      },\n      valueKey: String,\n      rotateEffect: {\n        type: Boolean,\n        default: false\n      },\n      divider: {\n        type: Boolean,\n        default: false\n      },\n      textAlign: {\n        type: String,\n        default: 'center'\n      },\n      flex: {},\n      className: {},\n      content: {},\n      itemHeight: {\n        type: Number,\n        default: ITEM_HEIGHT\n      },\n      defaultIndex: {\n        type: Number,\n        default: 0\n      }\n    },\n\n    data() {\n      return {\n        currentValue: this.value,\n        mutatingValues: this.values,\n        dragging: false,\n        animationFrameId: null\n      };\n    },\n\n    mixins: [emitter],\n\n    computed: {\n      flexStyle() {\n        return {\n          'flex': this.flex,\n          '-webkit-box-flex': this.flex,\n          '-moz-box-flex': this.flex,\n          '-ms-flex': this.flex\n        };\n      },\n      classNames() {\n        const PREFIX = 'picker-slot-';\n        let resultArray = [];\n\n        if (this.rotateEffect) {\n          resultArray.push(PREFIX + 'absolute');\n        }\n\n        let textAlign = this.textAlign || 'center';\n        resultArray.push(PREFIX + textAlign);\n\n        if (this.divider) {\n          resultArray.push(PREFIX + 'divider');\n        }\n\n        if (this.className) {\n          resultArray.push(this.className);\n        }\n\n        return resultArray.join(' ');\n      },\n      contentHeight() {\n        return this.itemHeight * this.visibleItemCount;\n      },\n      valueIndex() {\n        var valueKey = this.valueKey;\n        if (this.currentValue instanceof Object) {\n          for (var i = 0, len = this.mutatingValues.length; i < len ; i++) {\n            if (this.currentValue[valueKey] === this.mutatingValues[i][valueKey]) {\n              return i;\n            }\n          }\n          return -1;\n        } else {\n          return this.mutatingValues.indexOf(this.currentValue);\n        }\n      },\n      dragRange() {\n        var values = this.mutatingValues;\n        var visibleItemCount = this.visibleItemCount;\n        var itemHeight = this.itemHeight;\n\n        return [ -itemHeight * (values.length - Math.ceil(visibleItemCount / 2)), itemHeight * Math.floor(visibleItemCount / 2) ];\n      },\n      minTranslateY() {\n        return this.itemHeight * (Math.ceil(this.visibleItemCount / 2) - this.mutatingValues.length);\n      },\n      maxTranslateY() {\n        return this.itemHeight * Math.floor(this.visibleItemCount / 2);\n      }\n    },\n\n    methods: {\n      value2Translate(value) {\n        var values = this.mutatingValues;\n        var valueIndex = values.indexOf(value);\n        var offset = Math.floor(this.visibleItemCount / 2);\n        var itemHeight = this.itemHeight;\n\n        if (valueIndex !== -1) {\n          return (valueIndex - offset) * -itemHeight;\n        }\n      },\n\n      translate2Value(translate) {\n        var itemHeight = this.itemHeight;\n        translate = Math.round(translate / itemHeight) * itemHeight;\n        var index = -(translate - Math.floor(this.visibleItemCount / 2) * itemHeight) / itemHeight;\n\n        return this.mutatingValues[index];\n      },\n\n      updateRotate: function(currentTranslate, pickerItems) {\n        if (this.divider) return;\n        var dragRange = this.dragRange;\n        var wrapper = this.$refs.wrapper;\n\n        if (!pickerItems) {\n          pickerItems = wrapper.querySelectorAll('.picker-item');\n        }\n\n        if (currentTranslate === undefined) {\n          currentTranslate = translateUtil.getElementTranslate(wrapper).top;\n        }\n\n        var itemsFit = Math.ceil(this.visibleItemCount / 2);\n        var angleUnit = VISIBLE_ITEMS_ANGLE_MAP[this.visibleItemCount] || -20;\n\n        [].forEach.call(pickerItems, (item, index) => {\n          var itemOffsetTop = index * this.itemHeight;\n          var translateOffset = dragRange[1] - currentTranslate;\n          var itemOffset = itemOffsetTop - translateOffset;\n          var percentage = itemOffset / this.itemHeight;\n\n          var angle = angleUnit * percentage;\n          if (angle > 180) angle = 180;\n          if (angle < -180) angle = -180;\n\n          rotateElement(item, angle);\n\n          if (Math.abs(percentage) > itemsFit) {\n            addClass(item, 'picker-item-far');\n          } else {\n            removeClass(item, 'picker-item-far');\n          }\n        });\n      },\n\n      planUpdateRotate: function() {\n        var el = this.$refs.wrapper;\n        cancelAnimationFrame(this.animationFrameId);\n\n        this.animationFrameId = requestAnimationFrame(() => {\n          this.updateRotate();\n        });\n\n        once(el, translateUtil.transitionEndProperty, () => {\n          cancelAnimationFrame(this.animationFrameId);\n          this.animationFrameId = null;\n        });\n      },\n\n      initEvents() {\n        var el = this.$refs.wrapper;\n        var dragState = {};\n\n        var velocityTranslate, prevTranslate, pickerItems;\n\n        draggable(el, {\n          start: (event) => {\n            cancelAnimationFrame(this.animationFrameId);\n            this.animationFrameId = null;\n            dragState = {\n              range: this.dragRange,\n              start: new Date(),\n              startLeft: event.pageX,\n              startTop: event.pageY,\n              startTranslateTop: translateUtil.getElementTranslate(el).top\n            };\n            pickerItems = el.querySelectorAll('.picker-item');\n          },\n\n          drag: (event) => {\n            this.dragging = true;\n\n            dragState.left = event.pageX;\n            dragState.top = event.pageY;\n\n            var deltaY = dragState.top - dragState.startTop;\n            var translate = dragState.startTranslateTop + deltaY;\n\n            translateUtil.translateElement(el, null, translate);\n\n            velocityTranslate = translate - prevTranslate || translate;\n\n            prevTranslate = translate;\n\n            if (this.rotateEffect) {\n              this.updateRotate(prevTranslate, pickerItems);\n            }\n          },\n\n          end: (event) => {\n            this.dragging = false;\n\n            var momentumRatio = 7;\n            var currentTranslate = translateUtil.getElementTranslate(el).top;\n            var duration = new Date() - dragState.start;\n            let distance = Math.abs(dragState.startTranslateTop - currentTranslate);\n            var itemHeight = this.itemHeight;\n            var visibleItemCount = this.visibleItemCount;\n\n            let rect, offset;\n            if (distance < 6) {\n              rect = this.$el.getBoundingClientRect();\n              offset = Math.floor((event.clientY - (rect.top + (visibleItemCount - 1) * itemHeight / 2)) / itemHeight) * itemHeight;\n\n              if (offset > this.maxTranslateY) {\n                offset = this.maxTranslateY;\n              }\n\n              velocityTranslate = 0;\n              currentTranslate -= offset;\n            }\n\n            var momentumTranslate;\n            if (duration < 300) {\n              momentumTranslate = currentTranslate + velocityTranslate * momentumRatio;\n            }\n\n            var dragRange = dragState.range;\n\n            this.$nextTick(() => {\n              var translate;\n              if (momentumTranslate) {\n                translate = Math.round(momentumTranslate / itemHeight) * itemHeight;\n              } else {\n                translate = Math.round(currentTranslate / itemHeight) * itemHeight;\n              }\n\n              translate = Math.max(Math.min(translate, dragRange[1]), dragRange[0]);\n\n              translateUtil.translateElement(el, null, translate);\n\n              this.currentValue = this.translate2Value(translate);\n\n              if (this.rotateEffect) {\n                this.planUpdateRotate();\n              }\n            });\n\n            dragState = {};\n          }\n        });\n      },\n\n      doOnValueChange() {\n        var value = this.currentValue;\n        var wrapper = this.$refs.wrapper;\n\n        translateUtil.translateElement(wrapper, null, this.value2Translate(value));\n      },\n\n      doOnValuesChange() {\n        var el = this.$el;\n        var items = el.querySelectorAll('.picker-item');\n        [].forEach.call(items, (item, index) => {\n          translateUtil.translateElement(item, null, this.itemHeight * index);\n        });\n        if (this.rotateEffect) {\n          this.planUpdateRotate();\n        }\n      }\n    },\n\n    mounted() {\n      this.ready = true;\n\n      if (!this.divider) {\n        this.initEvents();\n        this.doOnValueChange();\n      }\n\n      if (this.rotateEffect) {\n        this.doOnValuesChange();\n      }\n    },\n\n    watch: {\n      values(val) {\n        this.mutatingValues = val;\n      },\n\n      mutatingValues(val) {\n        if (this.valueIndex === -1) {\n          this.currentValue = (val || [])[0];\n        }\n        if (this.rotateEffect) {\n          this.$nextTick(() => {\n            this.doOnValuesChange();\n          });\n        }\n      },\n      currentValue(val) {\n        this.doOnValueChange();\n        if (this.rotateEffect) {\n          this.planUpdateRotate();\n        }\n        this.$emit('input', val);\n        this.dispatch('picker', 'slotValueChange', this);\n      },\n      defaultIndex(val) {\n        if ((this.mutatingValues[val] !== undefined) && (this.mutatingValues.length >= val + 1)) {\n          this.currentValue = this.mutatingValues[val];\n        }\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/picker/src/picker.vue",
    "content": "<template>\n  <div class=\"picker\" :class=\"{ 'picker-3d': rotateEffect }\">\n    <div class=\"picker-toolbar\" v-if=\"showToolbar\"><slot></slot></div>\n    <div class=\"picker-items\">\n      <picker-slot v-for=\"slot in slots\" :valueKey=\"valueKey\" :values=\"slot.values || []\" :text-align=\"slot.textAlign || 'center'\" :visible-item-count=\"visibleItemCount\" :class-name=\"slot.className\" :flex=\"slot.flex\" v-model=\"values[slot.valueIndex]\" :rotate-effect=\"rotateEffect\" :divider=\"slot.divider\" :content=\"slot.content\" :itemHeight=\"itemHeight\" :default-index=\"slot.defaultIndex\"></picker-slot>\n      <div class=\"picker-center-highlight\" :style=\"{ height: itemHeight + 'px', marginTop: -itemHeight / 2 + 'px' }\"></div>\n    </div>\n  </div>\n</template>\n\n<style>\n  .picker {\n    overflow: hidden;\n  }\n\n  .picker-toolbar {\n    height: 40px;\n  }\n\n  .picker-items {\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    text-align: right;\n    font-size: 24px;\n    position: relative;\n  }\n\n  .picker-center-highlight {\n    box-sizing: border-box;\n    position: absolute;\n    left: 0;\n    width: 100%;\n    top: 50%;\n    margin-top: -18px;\n    pointer-events: none\n  }\n\n  .picker-center-highlight:before,\n  .picker-center-highlight:after {\n    content: '';\n    position: absolute;\n    height: 1px;\n    width: 100%;\n    background-color: #eaeaea;\n    display: block;\n    z-index: 15;\n    transform: scaleY(0.5);\n  }\n\n  .picker-center-highlight:before {\n    left: 0;\n    top: 0;\n    bottom: auto;\n    right: auto;\n  }\n\n  .picker-center-highlight:after {\n    left: 0;\n    bottom: 0;\n    right: auto;\n    top: auto;\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    name: 'mt-picker',\n\n    componentName: 'picker',\n\n    props: {\n      slots: {\n        type: Array\n      },\n      showToolbar: {\n        type: Boolean,\n        default: false\n      },\n      visibleItemCount: {\n        type: Number,\n        default: 5\n      },\n      valueKey: String,\n      rotateEffect: {\n        type: Boolean,\n        default: false\n      },\n      itemHeight: {\n        type: Number,\n        default: 36\n      }\n    },\n\n    created() {\n      this.$on('slotValueChange', this.slotValueChange);\n      this.slotValueChange();\n    },\n\n    methods: {\n      slotValueChange() {\n        this.$emit('change', this, this.values);\n      },\n\n      getSlot(slotIndex) {\n        var slots = this.slots || [];\n        var count = 0;\n        var target;\n        var children = this.$children.filter(child => child.$options.name === 'picker-slot');\n\n        slots.forEach(function(slot, index) {\n          if (!slot.divider) {\n            if (slotIndex === count) {\n              target = children[index];\n            }\n            count++;\n          }\n        });\n\n        return target;\n      },\n      getSlotValue(index) {\n        var slot = this.getSlot(index);\n        if (slot) {\n          return slot.currentValue;\n        }\n        return null;\n      },\n      setSlotValue(index, value) {\n        var slot = this.getSlot(index);\n        if (slot) {\n          slot.currentValue = value;\n        }\n      },\n      getSlotValues(index) {\n        var slot = this.getSlot(index);\n        if (slot) {\n          return slot.mutatingValues;\n        }\n        return null;\n      },\n      setSlotValues(index, values) {\n        var slot = this.getSlot(index);\n        if (slot) {\n          slot.mutatingValues = values;\n        }\n      },\n      getValues() {\n        return this.values;\n      },\n      setValues(values) {\n        var slotCount = this.slotCount;\n        values = values || [];\n        if (slotCount !== values.length) {\n          throw new Error('values length is not equal slot count.');\n        }\n        values.forEach((value, index) => {\n          this.setSlotValue(index, value);\n        });\n      }\n    },\n\n    computed: {\n      values: {\n        get() {\n          var slots = this.slots || [];\n          var values = [];\n          var valueIndexCount = 0;\n          slots.forEach(slot => {\n            if (!slot.divider) {\n              slot.valueIndex = valueIndexCount++;\n              values[slot.valueIndex] = (slot.values || [])[slot.defaultIndex || 0];\n            }\n          });\n          return values;\n        }\n      },\n      slotCount() {\n        var slots = this.slots || [];\n        var result = 0;\n        slots.forEach(function(slot) {\n          if (!slot.divider) result++;\n        });\n        return result;\n      }\n    },\n\n    components: {\n      PickerSlot: require('./picker-slot.vue')\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/picker/src/translate.js",
    "content": "var exportObj = {};\nimport Vue from 'vue';\nif (!Vue.prototype.$isServer) {\n  var docStyle = document.documentElement.style;\n  var engine;\n  var translate3d = false;\n\n  if (window.opera && Object.prototype.toString.call(opera) === '[object Opera]') {\n    engine = 'presto';\n  } else if ('MozAppearance' in docStyle) {\n    engine = 'gecko';\n  } else if ('WebkitAppearance' in docStyle) {\n    engine = 'webkit';\n  } else if (typeof navigator.cpuClass === 'string') {\n    engine = 'trident';\n  }\n\n  var cssPrefix = {trident: '-ms-', gecko: '-moz-', webkit: '-webkit-', presto: '-o-'}[engine];\n\n  var vendorPrefix = {trident: 'ms', gecko: 'Moz', webkit: 'Webkit', presto: 'O'}[engine];\n\n  var helperElem = document.createElement('div');\n  var perspectiveProperty = vendorPrefix + 'Perspective';\n  var transformProperty = vendorPrefix + 'Transform';\n  var transformStyleName = cssPrefix + 'transform';\n  var transitionProperty = vendorPrefix + 'Transition';\n  var transitionStyleName = cssPrefix + 'transition';\n  var transitionEndProperty = vendorPrefix.toLowerCase() + 'TransitionEnd';\n\n  if (helperElem.style[perspectiveProperty] !== undefined) {\n    translate3d = true;\n  }\n\n  var getTranslate = function(element) {\n    var result = {left: 0, top: 0};\n    if (element === null || element.style === null) return result;\n\n    var transform = element.style[transformProperty];\n    var matches = /translate\\(\\s*(-?\\d+(\\.?\\d+?)?)px,\\s*(-?\\d+(\\.\\d+)?)px\\)\\s*translateZ\\(0px\\)/ig.exec(transform);\n    if (matches) {\n      result.left = +matches[1];\n      result.top = +matches[3];\n    }\n\n    return result;\n  };\n\n  var translateElement = function(element, x, y) {\n    if (x === null && y === null) return;\n\n    if (element === null || element === undefined || element.style === null) return;\n\n    if (!element.style[transformProperty] && x === 0 && y === 0) return;\n\n    if (x === null || y === null) {\n      var translate = getTranslate(element);\n      if (x === null) {\n        x = translate.left;\n      }\n      if (y === null) {\n        y = translate.top;\n      }\n    }\n\n    cancelTranslateElement(element);\n\n    if (translate3d) {\n      element.style[transformProperty] += ' translate(' + (x ? (x + 'px') : '0px') + ',' + (y ? (y + 'px') : '0px') + ') translateZ(0px)';\n    } else {\n      element.style[transformProperty] += ' translate(' + (x ? (x + 'px') : '0px') + ',' + (y ? (y + 'px') : '0px') + ')';\n    }\n  };\n\n  var cancelTranslateElement = function(element) {\n    if (element === null || element.style === null) return;\n    var transformValue = element.style[transformProperty];\n    if (transformValue) {\n      transformValue = transformValue.replace(/translate\\(\\s*(-?\\d+(\\.?\\d+?)?)px,\\s*(-?\\d+(\\.\\d+)?)px\\)\\s*translateZ\\(0px\\)/g, '');\n      element.style[transformProperty] = transformValue;\n    }\n  };\n  exportObj = {\n    transformProperty: transformProperty,\n    transformStyleName: transformStyleName,\n    transitionProperty: transitionProperty,\n    transitionStyleName: transitionStyleName,\n    transitionEndProperty: transitionEndProperty,\n    getElementTranslate: getTranslate,\n    translateElement: translateElement,\n    cancelTranslateElement: cancelTranslateElement\n  };\n};\n\nexport default exportObj ;\n"
  },
  {
    "path": "packages/popup/README.md",
    "content": "# Overview\nmint-popup is a popup component for vue.js\n\n# Installation\nFirst, install `mint-popup` from npm:\n```bash\n$ npm install mint-popup\n```\n\nImport it:\n```Javascript\nrequire ('mint-popup/lib/index.css');\n\n// ES6 mudule\nimport Popup from 'mint-popup';\n\n// CommonJS\nconst Popup = require('mint-popup').default;\n```\n\nRegister component:\n```Javascript\nVue.component('popup', Popup);\n```\n\nThen use it:\n```html\n<popup :visible.sync=\"popupVisible\" position=\"bottom\"></popup>\n```\n\n# Usage\n`position` defines the location of the popup. If it's `bottom`, when you switch on the popup, it'll slide into the screen from the bottom and become fixed at the bottom.\n\nIf the `position` attribute is omitted, the popup will be located at the center of the viewport (and of course you can relocate it using CSS). In this case, you may want to set its `popup-transition` attribute to `popup-fade` so that it'll have a fading effect when switched on/off.\n\nSync `visible` with one of your vue instance variables. Toggle it to switch on/off the popup.\n\n# API\n| Option            | Description                                                 | Value                         | Default       |\n|-------------------|-------------------------------------------------------------|-------------------------------|---------------|\n| visible           | visibility of the popup                                     | Boolean                       | 'false'       |\n| position          | location of the popup                                       | 'top' 'right' 'bottom' 'left' |               |\n| pop-transition    | CSS transition of the popup                                 | 'popup-fade' 'popup-slide'    | 'popup-slide' |\n| modal             | determines if a modal pops with the popup                   | Boolean                       | true          |\n| closeOnClickModal | determines if the popup turns off when the modal is clicked | Boolean                       | true          |\n\n# License\nMIT\n"
  },
  {
    "path": "packages/popup/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintPopup',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/popup/index.js",
    "content": "export { default } from './src/popup.vue';\n"
  },
  {
    "path": "packages/popup/package.json",
    "content": "{\n  \"name\": \"mint-popup\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-popup\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/popup/src/popup.vue",
    "content": "<template>\n  <transition :name=\"currentTransition\">\n    <div v-show=\"currentValue\" class=\"mint-popup\" :class=\"[position ? 'mint-popup-' + position : '']\">\n      <slot></slot>\n    </div>\n  </transition>\n</template>\n\n<style>\n  @component-namespace mint {\n    @component popup {\n      position: fixed;\n      background: #fff;\n      top: 50%;\n      left: 50%;\n      transform: translate3d(-50%, -50%, 0);\n      backface-visibility: hidden;\n      transition: .2s ease-out;\n\n      @descendent top {\n        top: 0;\n        right: auto;\n        bottom: auto;\n        left: 50%;\n        transform: translate3d(-50%, 0, 0);\n      }\n\n      @descendent right {\n        top: 50%;\n        right: 0;\n        bottom: auto;\n        left: auto;\n        transform: translate3d(0, -50%, 0);\n      }\n\n      @descendent bottom {\n        top: auto;\n        right: auto;\n        bottom: 0;\n        left: 50%;\n        transform: translate3d(-50%, 0, 0);\n      }\n\n      @descendent left {\n        top: 50%;\n        right: auto;\n        bottom: auto;\n        left: 0;\n        transform: translate3d(0, -50%, 0);\n      }\n    }\n  }\n\n  .popup-slide-top-enter,\n  .popup-slide-top-leave-active {\n    transform: translate3d(-50%, -100%, 0);\n  }\n\n  .popup-slide-right-enter,\n  .popup-slide-right-leave-active {\n    transform: translate3d(100%, -50%, 0);\n  }\n\n  .popup-slide-bottom-enter,\n  .popup-slide-bottom-leave-active {\n    transform: translate3d(-50%, 100%, 0);\n  }\n\n  .popup-slide-left-enter,\n  .popup-slide-left-leave-active {\n    transform: translate3d(-100%, -50%, 0);\n  }\n\n  .popup-fade-enter,\n  .popup-fade-leave-active {\n    opacity: 0;\n  }\n</style>\n\n<script type=\"text/babel\">\n  import Popup from 'mint-ui/src/utils/popup';\n  import Vue from 'vue';\n  if (!Vue.prototype.$isServer) {\n    require('mint-ui/src/style/popup.css');\n  }\n\n  export default {\n    name: 'mt-popup',\n\n    mixins: [Popup],\n\n    props: {\n      modal: {\n        default: true\n      },\n\n      modalFade: {\n        default: false\n      },\n\n      lockScroll: {\n        default: false\n      },\n\n      closeOnClickModal: {\n        default: true\n      },\n\n      popupTransition: {\n        type: String,\n        default: 'popup-slide'\n      },\n\n      position: {\n        type: String,\n        default: ''\n      }\n    },\n\n    data() {\n      return {\n        currentValue: false,\n        currentTransition: this.popupTransition\n      };\n    },\n\n    watch: {\n      currentValue(val) {\n        this.$emit('input', val);\n      },\n\n      value(val) {\n        this.currentValue = val;\n      }\n    },\n\n    beforeMount() {\n      if (this.popupTransition !== 'popup-fade') {\n        this.currentTransition = `popup-slide-${ this.position }`;\n      }\n    },\n\n    mounted() {\n      if (this.value) {\n        this.rendered = true;\n        this.currentValue = true;\n        this.open();\n      }\n    }\n  };\n</script>"
  },
  {
    "path": "packages/progress/README.md",
    "content": "# mint-progress\n> A mint component\n\n## Installation\n```shell\nnpm i mint-progress -D\n```\n\n## Usage\n```javascript\nimport Vue from 'vue'\nimport MintProgress from 'mint-progress'\n\nVue.use(MintProgress)\n```\n\nor\n\n```javascript\nimport Vue from 'vue'\nimport { MintProgress } from 'mint-progress'\n\nVue.component('mint-progress', MintProgress)\n```\n\n## Development\n\n```shell\nmake dev\n```\n\n## Production\n```\nmake dist\n```\n\n## Deploy\n```shell\nmake deploy\n```\n\n## License\nMIT\n"
  },
  {
    "path": "packages/progress/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintProgress',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/progress/index.js",
    "content": "export { default } from './src/progress.vue';\n"
  },
  {
    "path": "packages/progress/package.json",
    "content": "{\n  \"name\": \"mint-progress\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-progress\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/progress/src/progress.vue",
    "content": "<template>\n  <div class=\"mt-progress\">\n    <slot name=\"start\"></slot>\n    <div class=\"mt-progress-content\">\n      <div class=\"mt-progress-runway\" :style=\"{ height: barHeight + 'px' }\"></div>\n      <div class=\"mt-progress-progress\" :style=\"{ width: value + '%', height: barHeight + 'px' }\"></div>\n    </div>\n    <slot name=\"end\"></slot>\n  </div>\n</template>\n\n<style>\n  @component-namespace mt {\n    @component progress {\n      position: relative;\n      display: flex;\n      height: 30px;\n      line-height: 30px;\n\n      & > * {\n        display: flex;\n        display: -webkit-box;\n      }\n\n      & *[slot=\"start\"] {\n        margin-right: 5px;\n      }\n\n      & *[slot=\"end\"] {\n        margin-left: 5px;\n      }\n\n      @descendent content {\n        position: relative;\n        flex: 1;\n      }\n\n      @descendent runway {\n        position: absolute;\n        transform: translate(0, -50%);\n        top: 50%;\n        left: 0;\n        right: 0;\n        background-color: #ebebeb;\n        height: 3px;\n      }\n\n      @descendent progress {\n        position: absolute;\n        display: block;\n        background-color: #26a2ff;\n        top: 50%;\n        transform: translate(0, -50%);\n        width: 0;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/ecmascript-6\">\n  export default {\n    name: 'mt-progress',\n\n    props: {\n      value: Number,\n      barHeight: {\n        type: Number,\n        default: 3\n      }\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/radio/README.md",
    "content": "# mint-radio"
  },
  {
    "path": "packages/radio/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintRadio',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/radio/index.js",
    "content": "export { default } from './src/radio.vue';\n"
  },
  {
    "path": "packages/radio/package.json",
    "content": "{\n  \"name\": \"mint-radio\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-radio\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/radio/src/radio.vue",
    "content": "<template>\n  <div class=\"mint-radiolist\" @change=\"$emit('change', currentValue)\">\n    <label class=\"mint-radiolist-title\" v-text=\"title\"></label>\n    <x-cell v-for=\"option in options\">\n      <label class=\"mint-radiolist-label\" slot=\"title\">\n        <span\n          :class=\"{'is-right': align === 'right'}\"\n          class=\"mint-radio\">\n          <input\n            class=\"mint-radio-input\"\n            type=\"radio\"\n            v-model=\"currentValue\"\n            :disabled=\"option.disabled\"\n            :value=\"option.value || option\">\n          <span class=\"mint-radio-core\"></span>\n        </span>\n        <span class=\"mint-radio-label\" v-text=\"option.label || option\"></span>\n      </label>\n    </x-cell>\n  </div>\n</template>\n\n<script>\nimport XCell from 'mint-ui/packages/cell/index.js';\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/cell/style.css');\n}\n/**\n * mt-radio\n * @module components/radio\n * @desc 单选框列表，依赖 cell 组件\n *\n * @param {string[], object[]} options - 选项数组，可以传入 [{label: 'label', value: 'value', disabled: true}] 或者 ['ab', 'cd', 'ef']\n * @param {string} value - 选中值\n * @param {string} title - 标题\n * @param {string} [align=left] - checkbox 对齐位置，`left`, `right`\n *\n * @example\n * <mt-radio v-model=\"value\" :options=\"['a', 'b', 'c']\"></mt-radio>\n */\nexport default {\n  name: 'mt-radio',\n\n  props: {\n    title: String,\n    align: String,\n    options: {\n      type: Array,\n      required: true\n    },\n    value: String\n  },\n\n  data() {\n    return {\n      currentValue: this.value\n    };\n  },\n\n  watch: {\n    value(val) {\n      this.currentValue = val;\n    },\n\n    currentValue(val) {\n      this.$emit('input', val);\n    }\n  },\n\n  components: {\n    XCell\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component radiolist {\n\n      .mint-cell {\n        padding: 0;\n      }\n\n      @descendent label {\n        display: block;\n        padding: 0 10px;\n      }\n\n      @descendent title {\n        font-size: 12px;\n        margin: 8px;\n        display: block;\n        color: $radio-title-color;\n      }\n    }\n\n    @component radio {\n      @when right {\n        float: right;\n      }\n\n      @descendent label {\n        vertical-align: middle;\n        margin-left: 6px;\n      }\n\n      @descendent input {\n        display: none;\n\n        &:checked {\n          + .mint-radio-core {\n            background-color: $color-blue;\n            border-color: $color-blue;\n\n            &::after {\n              background-color: $color-white;\n              transform: scale(1);\n            }\n          }\n        }\n\n        &[disabled] + .mint-radio-core {\n          background-color: $color-grey;\n          border-color: #ccc;\n        }\n      }\n\n      @descendent core {\n        box-sizing: border-box;\n        display: inline-block;\n        background-color: $color-white;\n        border-radius: 100%;\n        border: 1px solid #ccc;\n        position: relative;\n        size: 20px;\n        vertical-align: middle;\n\n        &::after {\n          content: \" \";\n          border-radius: 100%;\n          position: absolute 5px * * 5px;\n          size: 8px;\n          transition: transform .2s;\n          transform: scale(0);\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/range/README.md",
    "content": "# mint-range\n> A mint component\n\n## Installation\n```shell\nnpm i mint-range -D\n```\n\n## Usage\n```javascript\nimport Vue from 'vue'\nimport MintRange from 'mint-range'\n\nVue.use(MintRange)\n```\n\nor\n\n```javascript\nimport Vue from 'vue'\nimport { MintRange } from 'mint-range'\n\nVue.component('mint-range', MintRange)\n```\n\n## Development\n\n```shell\nmake dev\n```\n\n## Production\n```\nmake dist\n```\n\n## Deploy\n```shell\nmake deploy\n```\n\n## License\nMIT\n"
  },
  {
    "path": "packages/range/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintRange',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/range/index.js",
    "content": "export { default } from './src/index.vue';\n"
  },
  {
    "path": "packages/range/package.json",
    "content": "{\n  \"name\": \"mint-range\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"long.zhang@ele.me\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-range\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/range/src/draggable.js",
    "content": "let isDragging = false;\nimport Vue from 'vue';\nconst supportTouch = !Vue.prototype.$isServer && 'ontouchstart' in window;\n\nexport default function(element, options) {\n  const moveFn = function(event) {\n    if (options.drag) {\n      options.drag(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  };\n\n  const endFn = function(event) {\n    if (!supportTouch) {\n      document.removeEventListener('mousemove', moveFn);\n      document.removeEventListener('mouseup', endFn);\n    }\n    document.onselectstart = null;\n    document.ondragstart = null;\n\n    isDragging = false;\n\n    if (options.end) {\n      options.end(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  };\n\n  element.addEventListener(supportTouch ? 'touchstart' : 'mousedown', function(event) {\n    if (isDragging) return;\n    event.preventDefault();\n    document.onselectstart = function() { return false; };\n    document.ondragstart = function() { return false; };\n\n    if (!supportTouch) {\n      document.addEventListener('mousemove', moveFn);\n      document.addEventListener('mouseup', endFn);\n    }\n    isDragging = true;\n\n    if (options.start) {\n      options.start(supportTouch ? event.changedTouches[0] || event.touches[0] : event);\n    }\n  });\n\n  if (supportTouch) {\n    element.addEventListener('touchmove', moveFn);\n    element.addEventListener('touchend', endFn);\n    element.addEventListener('touchcancel', endFn);\n  }\n};\n"
  },
  {
    "path": "packages/range/src/index.vue",
    "content": "<template>\n  <div class=\"mt-range\" :class=\"{ 'mt-range--disabled': disabled }\">\n    <slot name=\"start\"></slot>\n    <div class=\"mt-range-content\" ref=\"content\">\n      <div class=\"mt-range-runway\" :style=\"{ 'border-top-width': barHeight + 'px' }\"></div>\n      <div class=\"mt-range-progress\" :style=\"{ width: progress + '%', height: barHeight + 'px' }\"></div>\n      <div class=\"mt-range-thumb\" ref=\"thumb\" :style=\"{ left: progress + '%' }\"></div>\n    </div>\n    <slot name=\"end\"></slot>\n  </div>\n</template>\n\n<style>\n  @component-namespace mt {\n    @component range {\n      position: relative;\n      display: flex;\n      height: 30px;\n      line-height: 30px;\n\n      & > * {\n        display: flex;\n        display: -webkit-box;\n      }\n\n      & *[slot=start] {\n        margin-right: 5px;\n      }\n\n      & *[slot=end] {\n        margin-left: 5px;\n      }\n\n      @descendent content {\n        position: relative;\n        flex: 1;\n        margin-right: 30px;\n      }\n\n      @descendent runway {\n        position: absolute;\n        top: 50%;\n        transform: translateY(-50%);\n        left: 0;\n        right: -30px;\n        border-top-color: #a9acb1;\n        border-top-style: solid;\n      }\n\n      @descendent thumb {\n        background-color: #fff;\n        position: absolute;\n        left: 0;\n        top: 0;\n        width: 30px;\n        height: 30px;\n        border-radius: 100%;\n        cursor: move;\n        box-shadow: 0 1px 3px rgba(0,0,0,.4);\n      }\n\n      @descendent progress {\n        position: absolute;\n        display: block;\n        background-color: #26a2ff;\n        top: 50%;\n        transform: translateY(-50%);\n        width: 0;\n      }\n\n      @modifier disabled {\n        opacity: 0.5;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  import draggable from './draggable';\n\n  export default {\n    name: 'mt-range',\n\n    props: {\n      min: {\n        type: Number,\n        default: 0\n      },\n      max: {\n        type: Number,\n        default: 100\n      },\n      step: {\n        type: Number,\n        default: 1\n      },\n      disabled: {\n        type: Boolean,\n        default: false\n      },\n      value: {\n        type: Number\n      },\n      barHeight: {\n        type: Number,\n        default: 1\n      }\n    },\n\n    computed: {\n      progress() {\n        const value = this.value;\n        if (typeof value === 'undefined' || value === null) return 0;\n        return Math.floor((value - this.min) / (this.max - this.min) * 100);\n      }\n    },\n\n    mounted() {\n      const thumb = this.$refs.thumb;\n      const content = this.$refs.content;\n\n      const getThumbPosition = () => {\n        const contentBox = content.getBoundingClientRect();\n        const thumbBox = thumb.getBoundingClientRect();\n        return {\n          left: thumbBox.left - contentBox.left,\n          top: thumbBox.top - contentBox.top,\n          thumbBoxLeft: thumbBox.left\n        };\n      };\n\n      let dragState = {};\n      draggable(thumb, {\n        start: (event) => {\n          if (this.disabled) return;\n          const position = getThumbPosition();\n          const thumbClickDetalX = event.clientX - position.thumbBoxLeft;\n          dragState = {\n            thumbStartLeft: position.left,\n            thumbStartTop: position.top,\n            thumbClickDetalX: thumbClickDetalX\n          };\n        },\n        drag: (event) => {\n          if (this.disabled) return;\n          const contentBox = content.getBoundingClientRect();\n          const deltaX = event.pageX - contentBox.left - dragState.thumbStartLeft - dragState.thumbClickDetalX;\n          const stepCount = Math.ceil((this.max - this.min) / this.step);\n          const newPosition = (dragState.thumbStartLeft + deltaX) - (dragState.thumbStartLeft + deltaX) % (contentBox.width / stepCount);\n\n          let newProgress = newPosition / contentBox.width;\n\n          if (newProgress < 0) {\n            newProgress = 0;\n          } else if (newProgress > 1) {\n            newProgress = 1;\n          }\n\n          this.$emit('input', Math.round(this.min + newProgress * (this.max - this.min)));\n        },\n        end: () => {\n          if (this.disabled) return;\n          this.$emit('change', this.value);\n          dragState = {};\n        }\n      });\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/search/README.md",
    "content": "# mint-search"
  },
  {
    "path": "packages/search/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintSearch',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/search/index.js",
    "content": "export { default } from './src/search.vue';\n"
  },
  {
    "path": "packages/search/package.json",
    "content": "{\n  \"name\": \"mint-search\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-search\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/search/src/search.vue",
    "content": "<template>\n  <div class=\"mint-search\">\n    <div class=\"mint-searchbar\">\n      <div class=\"mint-searchbar-inner\">\n        <i class=\"mintui mintui-search\"></i>\n        <input\n        ref=\"input\"\n        @click=\"visible = true\"\n        type=\"search\"\n        v-model=\"currentValue\"\n        :placeholder=\"placeholder\"\n        class=\"mint-searchbar-core\">\n      </div>\n      <a\n        class=\"mint-searchbar-cancel\"\n        @click=\"visible = false, currentValue = ''\"\n        v-show=\"visible\"\n        v-text=\"cancelText\">\n      </a>\n    </div>\n    <div class=\"mint-search-list\" v-show=\"show || currentValue\">\n      <div class=\"mint-search-list-warp\">\n        <slot>\n          <x-cell v-for=\"(item, index) in result\" :key=\"index\" :title=\"item\"></x-cell>\n        </slot>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport XCell from 'mint-ui/packages/cell/index.js';\nif (process.env.NODE_ENV === 'component') {\n  require('mint-ui/packages/cell/style.css');\n}\n\n/**\n * mt-search\n * @module components/search\n * @desc 搜索框\n * @param {string} value - 绑定值\n * @param {string} [cancel-text=取消] - 取消按钮文字\n * @param {string} [placeholder=取消] - 搜索框占位内容\n * @param {boolean} [autofocus=false] - 自动 focus\n * @param {boolean} [show=false] - 始终显示列表\n * @param {string[]} [result] - 结果列表\n * @param {slot} 结果列表\n *\n * @example\n * <mt-search :value.sync=\"value\" :result.sync=\"result\"></mt-search>\n * <mt-search :value.sync=\"value\">\n *   <mt-cell v-for=\"item in result\" :title=\"item\"></mt-cell>\n * </mt-search>\n */\nexport default {\n  name: 'mt-search',\n\n  data() {\n    return {\n      visible: false,\n      currentValue: this.value\n    };\n  },\n\n  components: { XCell },\n\n  watch: {\n    currentValue(val) {\n      this.$emit('input', val);\n    },\n\n    value(val) {\n      this.currentValue = val;\n    }\n  },\n\n  props: {\n    value: String,\n    autofocus: Boolean,\n    show: Boolean,\n    cancelText: {\n      default: '取消'\n    },\n    placeholder: {\n      default: '搜索'\n    },\n    result: Array\n  },\n\n  mounted() {\n    this.autofocus && this.$refs.input.focus();\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component search {\n      height: 100%;\n      height: 100vh;\n      overflow: hidden;\n    }\n\n    @component searchbar {\n      position: relative;\n      align-items: center;\n      background-color: $color-grey;\n      box-sizing: border-box;\n      display: flex;\n      padding: 8px 10px;\n      z-index: 1;\n\n      @descendent inner {\n        align-items: center;\n        background-color: $color-white;\n        border-radius: 2px;\n        display: flex;\n        flex: 1;\n        height: 28px;\n        padding: 4px 6px;\n\n        .mintui-search {\n          font-size: 12px;\n          color: $color-grey;\n        }\n      }\n\n      @descendent core {\n        appearance: none;\n        border: 0;\n        box-sizing: border-box;\n        width: 100%;\n        height: 100%;\n        outline: 0;\n      }\n\n      @descendent cancel {\n        color: $color-blue;\n        margin-left: 10px;\n        text-decoration: none;\n      }\n    }\n\n    @component search-list {\n      overflow: auto;\n      padding-top: 44px;\n      position: absolute 0 0 0 0;\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/spinner/README.md",
    "content": "# mint-spinner\n> spinner.\n\n## Install\n```shell\nnpm i mint-spinner -S\n```\n\n## Required\n```shell\nnpm i babel-plugin-component -D\n```\n\n## Usage\nimport all spinner\n```javascript\nimport Vue from 'vue';\nimport Spinner from 'mint-spinner';\n\nVue.use(Spinner);\n```\n\n```html\n<mt-spinner></mt-spinner>\n```\n\nimport one spinner\n\n```javascript\nimport Vue from 'vue';\nimport { DoubleBounce } from 'mint-spinner';\n\nVue.component(DoubleBounce.name, DoubleBounce);\n```\n\n```html\n<double-bounce></double-bounce>\n```\n\n.babelrc\n```json\n{\n  \"plugins\": [\n    \"xxx\",\n    [\"component\", [\n        {\n          \"libraryName\": \"mint-spinner\",\n          \"style\": true\n        }\n      ]\n    ]\n  ]\n}\n```\n\n**`import Spinner from 'mint-spinner'` and `import { DoubleBounce } from 'mint-spinner'` can not be used together.**.\n\n## Spinner\n- snake\n- double-bounce\n- triple-bounce\n- fading-circle\n\n## API\n\n### color\n- type: String\n\n### size\n- type: Number\n\n### type\n- type: String|Number\n\n```html\n<mt-spinner :type=\"0\"></mt-spinner>\n<mt-spinner type=\"snake\"></mt-spinner>\n\n<mt-spinner :type=\"1\"></mt-spinner>\n<mt-spinner type=\"double-bounce\"></mt-spinner>\n\n<mt-spinner :type=\"2\"></mt-spinner>\n<mt-spinner type=\"triple-bounce\"></mt-spinner>\n\n<mt-spinner :type=\"3\"></mt-spinner>\n<mt-spinner type=\"fading-circle\"></mt-spinner>\n```\n\n## Development\n\n```shell\nmake dev\n```\n\n## Production\n```\nmake dist\n```\n\n## License\nMIT\n"
  },
  {
    "path": "packages/spinner/components.json",
    "content": "{\n  \"index\": \"./index.js\",\n  \"double-bounce\": \"./src/spinner/double-bounce.vue\",\n  \"fading-circle\": \"./src/spinner/fading-circle.vue\",\n  \"snake\": \"./src/spinner/snake.vue\",\n  \"triple-bounce\": \"./src/spinner/triple-bounce.vue\"\n}\n"
  },
  {
    "path": "packages/spinner/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar Components = require('./components.json');\nvar path = require('path');\nvar config = require('../../build/config');\nvar WebpackShellPlugin = require('webpack-shell-plugin');\n\nvar entrys = {};\nObject.keys(Components).forEach(function(key) {\n  entrys[key] = [path.join(__dirname, Components[key])];\n});\n\ncooking.set({\n  entry: entrys,\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintSpinner',\n  extractCSS: '[name]/style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\ncooking.add('output.filename', '[name]/index.js');\ncooking.add('plugin.WebpackShell', new WebpackShellPlugin({\n  onBuildExit: [`mv ${__dirname}/lib/index/* ${__dirname}/lib/ && rm -rf ${__dirname}/lib/index`]\n}));\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/spinner/index.js",
    "content": "export { default } from './src/spinner';\n"
  },
  {
    "path": "packages/spinner/package.json",
    "content": "{\n  \"name\": \"mint-spinner\",\n  \"version\": \"2.0.0\",\n  \"description\": \"A spinner component for vue.js\",\n  \"main\": \"lib/index.js\",\n  \"files\": [\n    \"lib\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mint-ui/mint-spinner.git\"\n  },\n  \"homepage\": \"https://github.com/mint-ui/mint-spinner#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/mint-ui/mint-spinner/issues\"\n  },\n  \"author\": \"qingwei-li<cinwell.li@gmail.com>\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n  }\n}\n"
  },
  {
    "path": "packages/spinner/src/spinner/common.vue",
    "content": "<script>\n  export default {\n    computed: {\n      spinnerColor() {\n        return this.color || this.$parent.color || '#ccc';\n      },\n\n      spinnerSize() {\n        return (this.size || this.$parent.size || 28) + 'px';\n      }\n    },\n\n    props: {\n      size: Number,\n      color: String\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/spinner/src/spinner/double-bounce.vue",
    "content": "<template>\n  <div class=\"mint-spinner-double-bounce\" :style=\"{\n      width: spinnerSize,\n      height: spinnerSize\n    }\">\n    <div class=\"mint-spinner-double-bounce-bounce1\" :style=\"{ backgroundColor: spinnerColor }\"></div>\n    <div class=\"mint-spinner-double-bounce-bounce2\" :style=\"{ backgroundColor: spinnerColor }\"></div>\n  </div>\n</template>\n\n<script>\n  import common from './common.vue';\n\n  export default {\n    name: 'double-bounce',\n\n    mixins: [common]\n  };\n</script>\n\n<style lang=\"css\">\n  @component-namespace mint-spinner {\n    @component double-bounce {\n      position: relative;\n\n      @descendent bounce1, bounce2 {\n        width: 100%;\n        height: 100%;\n        border-radius: 50%;\n        opacity: 0.6;\n        position: absolute;\n        top: 0;\n        left: 0;\n\n        animation: mint-spinner-double-bounce 2.0s infinite ease-in-out;\n      }\n\n      @descendent bounce2 {\n        animation-delay: -1.0s;\n      }\n    }\n  }\n\n  @keyframes mint-spinner-double-bounce {\n    0%, 100% {\n      transform: scale(0.0);\n    }\n\n    50% {\n      transform: scale(1.0);\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/spinner/src/spinner/fading-circle.vue",
    "content": "<template>\n  <div :class=\"['mint-spinner-fading-circle circle-color-' + _uid]\" :style=\"{\n      width: spinnerSize,\n      height: spinnerSize\n    }\">\n    <div v-for=\"n in 12\" :class=\"['is-circle' + (n + 1)]\" class=\"mint-spinner-fading-circle-circle\"></div>\n  </div>\n</template>\n\n<script>\n  import common from './common.vue';\n\n  export default {\n    name: 'fading-circle',\n\n    mixins: [common],\n\n    created() {\n      if (this.$isServer) return;\n      this.styleNode = document.createElement('style');\n      const css = `.circle-color-${this._uid} > div::before { background-color: ${this.spinnerColor}; }`;\n\n      this.styleNode.type = 'text/css';\n      this.styleNode.rel = 'stylesheet';\n      this.styleNode.title = 'fading circle style';\n      document.getElementsByTagName('head')[0].appendChild(this.styleNode);\n      this.styleNode.appendChild(document.createTextNode(css));\n    },\n\n    destroyed() {\n      if (this.styleNode) {\n        this.styleNode.parentNode.removeChild(this.styleNode);\n      }\n    }\n  };\n</script>\n\n<style lang=\"css\">\n  @component-namespace mint-spinner {\n    @component fading-circle {\n      position: relative;\n\n      @descendent circle {\n        size: 100%;\n        position: absolute 0 * * 0;\n\n        &::before {\n          content: \" \";\n          display: block;\n          margin: 0 auto;\n          size: 15%;\n          border-radius: 100%;\n          animation: mint-fading-circle 1.2s infinite ease-in-out both;\n        }\n\n         @for $i from 2 to 12 {\n          &.is-circle$i {\n            transform: rotate(calc(360deg / 12 * ($i - 1)));\n\n            &::before {\n              animation-delay: calc(-1.2s + 1.2s / 12 * ($i - 1));\n            }\n          }\n        }\n      }\n    }\n\n    @keyframes mint-fading-circle {\n      0%, 39%, 100% { opacity: 0 }\n      40% { opacity: 1 }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/spinner/src/spinner/snake.vue",
    "content": "<template>\n  <div class=\"mint-spinner-snake\" :style=\"{\n    'border-top-color': spinnerColor,\n    'border-left-color': spinnerColor,\n    'border-bottom-color': spinnerColor,\n    'height': spinnerSize,\n    'width': spinnerSize\n    }\">\n  </div>\n</template>\n\n<script>\n  import common from './common.vue';\n\n  export default {\n    name: 'snake',\n\n    mixins: [common]\n  };\n</script>\n\n<style lang=\"css\">\n  .mint-spinner-snake {\n    animation: mint-spinner-rotate 0.8s infinite linear;\n    border: 4px solid transparent;\n    border-radius: 50%;\n  }\n\n  @keyframes mint-spinner-rotate {\n    0% {\n      transform: rotate(0deg);\n    }\n    100% {\n      transform: rotate(360deg);\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/spinner/src/spinner/triple-bounce.vue",
    "content": "<template>\n  <div class=\"mint-spinner-triple-bounce\">\n    <div class=\"mint-spinner-triple-bounce-bounce1\" :style=\"bounceStyle\"></div>\n    <div class=\"mint-spinner-triple-bounce-bounce2\" :style=\"bounceStyle\"></div>\n    <div class=\"mint-spinner-triple-bounce-bounce3\" :style=\"bounceStyle\"></div>\n  </div>\n</template>\n\n<script>\n  import common from './common.vue';\n\n  export default {\n    name: 'triple-bounce',\n\n    mixins: [common],\n\n    computed: {\n      spinnerSize() {\n        return ((this.size || this.$parent.size || 28) / 3) + 'px';\n      },\n\n      bounceStyle() {\n        return {\n          width: this.spinnerSize,\n          height: this.spinnerSize,\n          backgroundColor: this.spinnerColor\n        };\n      }\n    }\n  };\n</script>\n\n<style lang=\"css\">\n@component-namespace mint-spinner {\n  @component triple-bounce {\n    @descendent bounce1, bounce2, bounce3 {\n      border-radius: 100%;\n      display: inline-block;\n      animation: mint-spinner-triple-bounce 1.4s infinite ease-in-out both;\n    }\n\n    @descendent bounce1 {\n      animation-delay: -0.32s;\n    }\n\n    @descendent bounce2 {\n      animation-delay: -0.16s;\n    }\n  }\n}\n\n@keyframes mint-spinner-triple-bounce {\n  0%, 80%, 100% {\n    transform: scale(0);\n  } 40% {\n    transform: scale(1.0);\n  }\n}\n</style>\n"
  },
  {
    "path": "packages/spinner/src/spinner.vue",
    "content": "<template>\n  <span><component :is=\"spinner\"></component></span>\n</template>\n\n<script>\nconst SPINNERS = [\n  'snake',\n  'double-bounce',\n  'triple-bounce',\n  'fading-circle'\n];\nconst parseSpinner = function(index) {\n  if ({}.toString.call(index) === '[object Number]') {\n    if (SPINNERS.length <= index) {\n      console.warn(`'${index}' spinner not found, use the default spinner.`);\n      index = 0;\n    }\n    return SPINNERS[index];\n  }\n\n  if (SPINNERS.indexOf(index) === -1) {\n    console.warn(`'${index}' spinner not found, use the default spinner.`);\n    index = SPINNERS[0];\n  }\n  return index;\n};\n\n/**\n * mt-spinner\n * @module components/spinner\n * @desc 加载动画\n * @param {(string|number)} [type=snake] - 显示类型，传入类型名或者类型 id，可选 `snake`, `dobule-bounce`, `triple-bounce`, `fading-circle`\n * @param {number} size - 尺寸\n * @param {string} color - 颜色\n *\n * @example\n * <mt-spinner type=\"snake\"></mt-spinner>\n *\n * <!-- double-bounce -->\n * <mt-spinner :type=\"1\"></mt-spinner>\n *\n * <!-- default snake -->\n * <mt-spinner :size=\"30\" color=\"#999\"></mt-spinner>\n */\nexport default {\n  name: 'mt-spinner',\n\n  computed: {\n    spinner() {\n      return `spinner-${parseSpinner(this.type)}`;\n    }\n  },\n\n  components: {\n    SpinnerSnake: require('./spinner/snake.vue'),\n    SpinnerDoubleBounce: require('./spinner/double-bounce.vue'),\n    SpinnerTripleBounce: require('./spinner/triple-bounce.vue'),\n    SpinnerFadingCircle: require('./spinner/fading-circle.vue')\n  },\n\n  props: {\n    type: {\n      default: 0\n    },\n    size: {\n      type: Number,\n      default: 28\n    },\n    color: {\n      type: String,\n      default: '#ccc'\n    }\n  }\n};\n</script>\n"
  },
  {
    "path": "packages/swipe/README.md",
    "content": "# mint-swipe"
  },
  {
    "path": "packages/swipe/index.js",
    "content": "export { default } from './src/swipe.vue';\n"
  },
  {
    "path": "packages/swipe/package.json",
    "content": "{\n  \"private\": true,\n  \"dependencies\": {\n    \"wind-dom\": \"0.0.3\"\n  },\n  \"name\": \"mint-swipe\"\n}\n"
  },
  {
    "path": "packages/swipe/src/swipe-item.vue",
    "content": "<template>\n  <div class=\"mint-swipe-item\">\n    <slot></slot>\n  </div>\n</template>\n\n<script>\n  export default {\n    name: 'mt-swipe-item',\n\n    mounted() {\n      this.$parent && this.$parent.swipeItemCreated(this);\n    },\n\n    destroyed() {\n      this.$parent && this.$parent.swipeItemDestroyed(this);\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/swipe/src/swipe.vue",
    "content": "<style>\n  @component-namespace mint {\n    @component swipe {\n      overflow: hidden;\n      position: relative;\n      height: 100%;\n\n      @descendent items-wrap {\n        position: relative;\n        overflow: hidden;\n        height: 100%;\n\n        > div {\n          position: absolute;\n          transform: translateX(-100%);\n          size: 100% 100%;\n          display: none;\n\n          @when active {\n            display: block;\n            transform: none;\n          }\n        }\n      }\n\n      @descendent indicators {\n        position: absolute;\n        bottom: 10px;\n        left: 50%;\n        transform: translateX(-50%);\n      }\n\n      @descendent indicator {\n        size: 8px 8px;\n        display: inline-block;\n        border-radius: 100%;\n        background: #000;\n        opacity: 0.2;\n        margin: 0 3px;\n\n        @when active {\n          background: #fff;\n        }\n      }\n    }\n  }\n</style>\n\n<template>\n  <div class=\"mint-swipe\">\n    <div class=\"mint-swipe-items-wrap\" ref=\"wrap\">\n      <slot></slot>\n    </div>\n    <div class=\"mint-swipe-indicators\" v-show=\"showIndicators\">\n      <div class=\"mint-swipe-indicator\"\n        v-for=\"(page, $index) in pages\"\n        :class=\"{ 'is-active': $index === index }\"></div>\n    </div>\n  </div>\n</template>\n\n<script>\n  import { once } from 'mint-ui/src/utils/dom';\n  import { addClass, removeClass } from 'mint-ui/src/utils/dom';\n\n  export default {\n    name: 'mt-swipe',\n\n    created() {\n      this.dragState = {};\n    },\n\n    data() {\n      return {\n        ready: false,\n        dragging: false,\n        userScrolling: false,\n        animating: false,\n        index: 0,\n        pages: [],\n        timer: null,\n        reInitTimer: null,\n        noDrag: false,\n        isDone: false\n      };\n    },\n\n    props: {\n      speed: {\n        type: Number,\n        default: 300\n      },\n\n      defaultIndex: {\n        type: Number,\n        default: 0\n      },\n\n      auto: {\n        type: Number,\n        default: 3000\n      },\n\n      continuous: {\n        type: Boolean,\n        default: true\n      },\n\n      showIndicators: {\n        type: Boolean,\n        default: true\n      },\n\n      noDragWhenSingle: {\n        type: Boolean,\n        default: true\n      },\n\n      prevent: {\n        type: Boolean,\n        default: false\n      },\n\n      stopPropagation: {\n        type: Boolean,\n        default: false\n      }\n    },\n\n    watch: {\n      index(newIndex) {\n        this.$emit('change', newIndex);\n      }\n    },\n\n    methods: {\n      swipeItemCreated() {\n        if (!this.ready) return;\n\n        clearTimeout(this.reInitTimer);\n        this.reInitTimer = setTimeout(() => {\n          this.reInitPages();\n        }, 100);\n      },\n\n      swipeItemDestroyed() {\n        if (!this.ready) return;\n\n        clearTimeout(this.reInitTimer);\n        this.reInitTimer = setTimeout(() => {\n          this.reInitPages();\n        }, 100);\n      },\n\n      rafTranslate(element, initOffset, offset, callback, nextElement) {\n        let ALPHA = 0.88;\n        this.animating = true;\n        var _offset = initOffset;\n        var raf = 0;\n\n        function animationLoop() {\n          if (Math.abs(_offset - offset) < 0.5) {\n            this.animating = false;\n            _offset = offset;\n            element.style.webkitTransform = '';\n            if (nextElement) {\n              nextElement.style.webkitTransform = '';\n            }\n            cancelAnimationFrame(raf);\n\n            if (callback) {\n              callback();\n            }\n\n            return;\n          }\n\n          _offset = ALPHA * _offset + (1.0 - ALPHA) * offset;\n          element.style.webkitTransform = `translate3d(${_offset}px, 0, 0)`;\n\n          if (nextElement) {\n            nextElement.style.webkitTransform = `translate3d(${_offset - offset}px, 0, 0)`;\n          }\n\n          raf = requestAnimationFrame(animationLoop.bind(this));\n        }\n\n        animationLoop.call(this);\n      },\n\n      translate(element, offset, speed, callback) {\n        if (speed) {\n          this.animating = true;\n          element.style.webkitTransition = '-webkit-transform ' + speed + 'ms ease-in-out';\n          setTimeout(() => {\n            element.style.webkitTransform = `translate3d(${offset}px, 0, 0)`;\n          }, 50);\n\n          var called = false;\n\n          var transitionEndCallback = () => {\n            if (called) return;\n            called = true;\n            this.animating = false;\n            element.style.webkitTransition = '';\n            element.style.webkitTransform = '';\n            if (callback) {\n              callback.apply(this, arguments);\n            }\n          };\n\n          once(element, 'webkitTransitionEnd', transitionEndCallback);\n          setTimeout(transitionEndCallback, speed + 100); // webkitTransitionEnd maybe not fire on lower version android.\n        } else {\n          element.style.webkitTransition = '';\n          element.style.webkitTransform = `translate3d(${offset}px, 0, 0)`;\n        }\n      },\n\n      reInitPages() {\n        var children = this.$children;\n        this.noDrag = children.length === 1 && this.noDragWhenSingle;\n\n        var pages = [];\n        var intDefaultIndex = Math.floor(this.defaultIndex);\n        var defaultIndex = (intDefaultIndex >= 0 && intDefaultIndex < children.length) ? intDefaultIndex : 0;\n        this.index = defaultIndex;\n\n        children.forEach(function(child, index) {\n          pages.push(child.$el);\n\n          removeClass(child.$el, 'is-active');\n\n          if (index === defaultIndex) {\n            addClass(child.$el, 'is-active');\n          }\n        });\n\n        this.pages = pages;\n      },\n\n      doAnimate(towards, options) {\n        if (this.$children.length === 0) return;\n        if (!options && this.$children.length < 2) return;\n\n        var prevPage, nextPage, currentPage, pageWidth, offsetLeft, speedX;\n        var speed = this.speed || 300;\n        var index = this.index;\n        var pages = this.pages;\n        var pageCount = pages.length;\n\n        if (!options) {\n          pageWidth = this.$el.clientWidth;\n          currentPage = pages[index];\n          prevPage = pages[index - 1];\n          nextPage = pages[index + 1];\n          if (this.continuous && pages.length > 1) {\n            if (!prevPage) {\n              prevPage = pages[pages.length - 1];\n            }\n            if (!nextPage) {\n              nextPage = pages[0];\n            }\n          }\n          if (prevPage) {\n            prevPage.style.display = 'block';\n            this.translate(prevPage, -pageWidth);\n          }\n          if (nextPage) {\n            nextPage.style.display = 'block';\n            this.translate(nextPage, pageWidth);\n          }\n        } else {\n          prevPage = options.prevPage;\n          currentPage = options.currentPage;\n          nextPage = options.nextPage;\n          pageWidth = options.pageWidth;\n          offsetLeft = options.offsetLeft;\n          speedX = options.speedX;\n        }\n\n        var newIndex;\n\n        var oldPage = this.$children[index].$el;\n\n        if (towards === 'prev') {\n          if (index > 0) {\n            newIndex = index - 1;\n          }\n          if (this.continuous && index === 0) {\n            newIndex = pageCount - 1;\n          }\n        } else if (towards === 'next') {\n          if (index < pageCount - 1) {\n            newIndex = index + 1;\n          }\n          if (this.continuous && index === pageCount - 1) {\n            newIndex = 0;\n          }\n        }\n\n        var callback = () => {\n          if (newIndex !== undefined) {\n            var newPage = this.$children[newIndex].$el;\n            removeClass(oldPage, 'is-active');\n            addClass(newPage, 'is-active');\n\n            this.index = newIndex;\n          }\n          if (this.isDone) {\n            this.end();\n          }\n\n          if (prevPage) {\n            prevPage.style.display = '';\n          }\n\n          if (nextPage) {\n            nextPage.style.display = '';\n          }\n        };\n\n        setTimeout(() => {\n          if (towards === 'next') {\n            this.isDone = true;\n            this.before(currentPage);\n            if (speedX) {\n              this.rafTranslate(currentPage, offsetLeft, -pageWidth, callback, nextPage);\n            } else {\n              this.translate(currentPage, -pageWidth, speed, callback);\n              if (nextPage) {\n                this.translate(nextPage, 0, speed);\n              }\n            }\n          } else if (towards === 'prev') {\n            this.isDone = true;\n            this.before(currentPage);\n            if (speedX) {\n              this.rafTranslate(currentPage, offsetLeft, pageWidth, callback, prevPage);\n            } else {\n              this.translate(currentPage, pageWidth, speed, callback);\n              if (prevPage) {\n                this.translate(prevPage, 0, speed);\n              }\n            }\n          } else {\n            this.isDone = false;\n            this.translate(currentPage, 0, speed, callback);\n            if (typeof offsetLeft !== 'undefined') {\n              if (prevPage && offsetLeft > 0) {\n                this.translate(prevPage, pageWidth * -1, speed);\n              }\n              if (nextPage && offsetLeft < 0) {\n                this.translate(nextPage, pageWidth, speed);\n              }\n            } else {\n              if (prevPage) {\n                this.translate(prevPage, pageWidth * -1, speed);\n              }\n              if (nextPage) {\n                this.translate(nextPage, pageWidth, speed);\n              }\n            }\n          }\n        }, 10);\n      },\n\n      next() {\n        this.doAnimate('next');\n      },\n\n      prev() {\n        this.doAnimate('prev');\n      },\n\n      before() {\n        this.$emit('before', this.index);\n      },\n\n      end() {\n        this.$emit('end', this.index);\n      },\n\n      doOnTouchStart(event) {\n        if (this.noDrag) return;\n\n        var element = this.$el;\n        var dragState = this.dragState;\n        var touch = event.touches[0];\n\n        dragState.startTime = new Date();\n        dragState.startLeft = touch.pageX;\n        dragState.startTop = touch.pageY;\n        dragState.startTopAbsolute = touch.clientY;\n\n        dragState.pageWidth = element.offsetWidth;\n        dragState.pageHeight = element.offsetHeight;\n\n        var prevPage = this.$children[this.index - 1];\n        var dragPage = this.$children[this.index];\n        var nextPage = this.$children[this.index + 1];\n\n        if (this.continuous && this.pages.length > 1) {\n          if (!prevPage) {\n            prevPage = this.$children[this.$children.length - 1];\n          }\n          if (!nextPage) {\n            nextPage = this.$children[0];\n          }\n        }\n\n        dragState.prevPage = prevPage ? prevPage.$el : null;\n        dragState.dragPage = dragPage ? dragPage.$el : null;\n        dragState.nextPage = nextPage ? nextPage.$el : null;\n\n        if (dragState.prevPage) {\n          dragState.prevPage.style.display = 'block';\n        }\n\n        if (dragState.nextPage) {\n          dragState.nextPage.style.display = 'block';\n        }\n      },\n\n      doOnTouchMove(event) {\n        if (this.noDrag) return;\n\n        var dragState = this.dragState;\n        var touch = event.touches[0];\n\n        dragState.speedX = touch.pageX - dragState.currentLeft;\n        dragState.currentLeft = touch.pageX;\n        dragState.currentTop = touch.pageY;\n        dragState.currentTopAbsolute = touch.clientY;\n\n        var offsetLeft = dragState.currentLeft - dragState.startLeft;\n        var offsetTop = dragState.currentTopAbsolute - dragState.startTopAbsolute;\n\n        var distanceX = Math.abs(offsetLeft);\n        var distanceY = Math.abs(offsetTop);\n        if (distanceX < 5 || (distanceX >= 5 && distanceY >= 1.73 * distanceX)) {\n          this.userScrolling = true;\n          return;\n        } else {\n          this.userScrolling = false;\n          event.preventDefault();\n        }\n        offsetLeft = Math.min(Math.max(-dragState.pageWidth + 1, offsetLeft), dragState.pageWidth - 1);\n\n        var towards = offsetLeft < 0 ? 'next' : 'prev';\n\n        if (dragState.prevPage && towards === 'prev') {\n          this.translate(dragState.prevPage, offsetLeft - dragState.pageWidth);\n        }\n        this.translate(dragState.dragPage, offsetLeft);\n        if (dragState.nextPage && towards === 'next') {\n          this.translate(dragState.nextPage, offsetLeft + dragState.pageWidth);\n        }\n      },\n\n      doOnTouchEnd() {\n        if (this.noDrag) return;\n\n        var dragState = this.dragState;\n\n        var dragDuration = new Date() - dragState.startTime;\n        var towards = null;\n\n        var offsetLeft = dragState.currentLeft - dragState.startLeft;\n        var offsetTop = dragState.currentTop - dragState.startTop;\n        var pageWidth = dragState.pageWidth;\n        var index = this.index;\n        var pageCount = this.pages.length;\n\n        if (dragDuration < 300) {\n          let fireTap = Math.abs(offsetLeft) < 5 && Math.abs(offsetTop) < 5;\n          if (isNaN(offsetLeft) || isNaN(offsetTop)) {\n            fireTap = true;\n          }\n          if (fireTap) {\n            this.$children[this.index].$emit('tap');\n          }\n        }\n\n        if (dragDuration < 300 && dragState.currentLeft === undefined) return;\n\n        if (dragDuration < 300 || Math.abs(offsetLeft) > pageWidth / 2) {\n          towards = offsetLeft < 0 ? 'next' : 'prev';\n        }\n\n        if (!this.continuous) {\n          if ((index === 0 && towards === 'prev') || (index === pageCount - 1 && towards === 'next')) {\n            towards = null;\n          }\n        }\n\n        if (this.$children.length < 2) {\n          towards = null;\n        }\n\n        this.doAnimate(towards, {\n          offsetLeft: offsetLeft,\n          pageWidth: dragState.pageWidth,\n          prevPage: dragState.prevPage,\n          currentPage: dragState.dragPage,\n          nextPage: dragState.nextPage,\n          speedX: dragState.speedX\n        });\n\n        this.dragState = {};\n      },\n\n      initTimer() {\n        if (this.auto > 0 && !this.timer) {\n          this.timer = setInterval(() => {\n            if (!this.continuous && (this.index >= this.pages.length - 1)) {\n              return this.clearTimer();\n            }\n            if (!this.dragging && !this.animating) {\n              this.next();\n            }\n          }, this.auto);\n        }\n      },\n\n      clearTimer() {\n        clearInterval(this.timer);\n        this.timer = null;\n      }\n    },\n\n    destroyed() {\n      if (this.timer) {\n        this.clearTimer();\n      }\n      if (this.reInitTimer) {\n        clearTimeout(this.reInitTimer);\n        this.reInitTimer = null;\n      }\n    },\n\n    mounted() {\n      this.ready = true;\n\n      this.initTimer();\n\n      this.reInitPages();\n\n      var element = this.$el;\n\n      element.addEventListener('touchstart', (event) => {\n        if (this.prevent) event.preventDefault();\n        if (this.stopPropagation) event.stopPropagation();\n        if (this.animating) return;\n        this.dragging = true;\n        this.userScrolling = false;\n        this.doOnTouchStart(event);\n      });\n\n      element.addEventListener('touchmove', (event) => {\n        if (!this.dragging) return;\n        if (this.timer) this.clearTimer();\n        this.doOnTouchMove(event);\n      });\n\n      element.addEventListener('touchend', (event) => {\n        if (this.userScrolling) {\n          this.dragging = false;\n          this.dragState = {};\n          return;\n        }\n        if (!this.dragging) return;\n        this.initTimer();\n        this.doOnTouchEnd(event);\n        this.dragging = false;\n      });\n    }\n  };\n</script>\n"
  },
  {
    "path": "packages/swipe-item/README.md",
    "content": "# mint-swipe-item"
  },
  {
    "path": "packages/swipe-item/index.js",
    "content": "import 'mint-ui/src/style/empty.css';\nexport { default } from '../swipe/src/swipe-item.vue';\n"
  },
  {
    "path": "packages/switch/README.md",
    "content": "# mint-switch"
  },
  {
    "path": "packages/switch/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintSwitch',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/switch/index.js",
    "content": "export { default } from './src/switch.vue';\n"
  },
  {
    "path": "packages/switch/package.json",
    "content": "{\n  \"name\": \"mint-switch\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-switch\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/switch/src/switch.vue",
    "content": "<template>\n  <label class=\"mint-switch\">\n    <input class=\"mint-switch-input\" :disabled=\"disabled\" @change=\"$emit('change', currentValue)\" type=\"checkbox\" v-model=\"currentValue\">\n    <span class=\"mint-switch-core\"></span>\n    <div class=\"mint-switch-label\"><slot></slot></div>\n  </label>\n</template>\n\n<script>\n/**\n * mt-switch\n * @module components/switch\n * @desc 切换按钮\n * @param {boolean} [value] - 绑定值，支持双向绑定\n * @param {slot} - 显示内容\n *\n * @example\n * <mt-switch v-model=\"value\"></mt-switch>\n */\nexport default {\n  name: 'mt-switch',\n\n  props: {\n    value: Boolean,\n    disabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    currentValue: {\n      get() {\n        return this.value;\n      },\n      set(val) {\n        this.$emit('input', val);\n      }\n    }\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component switch {\n      display: flex;\n      align-items: center;\n      position: relative;\n\n      * {\n        pointer-events: none;\n      }\n\n      @descendent label {\n        margin-left: 10px;\n        display: inline-block;\n\n        &:empty {\n          margin-left: 0;\n        }\n      }\n\n      @descendent core {\n        display: inline-block;\n        position: relative;\n        size: 52px 32px;\n        border: 1px solid $color-grey;\n        border-radius: 16px;\n        box-sizing: border-box;\n        background: $color-grey;\n\n        &::after, &::before {\n          content: \" \";\n          position: absolute 0 * * 0;\n          transition:transform .3s;\n          border-radius: 15px;\n        }\n\n        &::after {\n          size: 30px;\n          background-color: $color-white;\n          box-shadow: 0 1px 3px rgba(0, 0, 0, .4);\n        }\n\n        &::before {\n          size: 50px 30px;\n          background-color: #fdfdfd;\n        }\n      }\n\n      @descendent input {\n        display: none;\n\n        &:checked {\n          + .mint-switch-core {\n            border-color: $color-blue;\n            background-color: $color-blue;\n\n            &::before {\n              transform: scale(0);\n            }\n\n            &::after {\n              transform: translateX(20px);\n            }\n          }\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/tab-container/README.md",
    "content": "# mint-tab-container"
  },
  {
    "path": "packages/tab-container/_index.js",
    "content": "export default {\n  TabContainer: require('./src/tab-container.vue'),\n  TabContainerItem: require('../tab-container-item/src/tab-container-item.vue')\n};\n"
  },
  {
    "path": "packages/tab-container/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintTabContainer',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/tab-container/index.js",
    "content": "export { default } from './src/tab-container.vue';\n"
  },
  {
    "path": "packages/tab-container/package.json",
    "content": "{\n  \"name\": \"mint-tab-container\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tab-container\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/tab-container/src/tab-container.vue",
    "content": "<template>\n  <div\n    @touchstart=\"startDrag\"\n    @mousedown=\"startDrag\"\n    @touchmove=\"onDrag\"\n    @mousemove=\"onDrag\"\n    @mouseup=\"endDrag\"\n    @touchend=\"endDrag\"\n    class=\"mint-tab-container\">\n    <div\n      ref=\"wrap\"\n      class=\"mint-tab-container-wrap\">\n      <slot></slot>\n    </div>\n  </div>\n</template>\n\n<style lang=\"css\">\n  @component-namespace mint {\n    @component tab-container {\n      overflow: hidden;\n      position: relative;\n\n      @descendent wrap {\n        display: flex;\n      }\n\n      .swipe-transition {\n        transition: transform 150ms ease-in-out;\n      }\n    }\n  }\n</style>\n\n<script>\nimport { once } from 'mint-ui/src/utils/dom';\nimport arrayFindIndex from 'array-find-index';\n\n/**\n * mt-tab-container\n * @desc 面板，搭配 tab-container-item 使用\n * @module components/tab-container\n *\n * @param {number|string} [value] - 当前激活的 tabId\n *\n * @example\n * <mt-tab-container v-model=\"selected\">\n *   <mt-tab-container-item id=\"1\"> 内容A </mt-tab-container-item>\n *   <mt-tab-container-item id=\"2\"> 内容B </mt-tab-container-item>\n *   <mt-tab-container-item id=\"3\"> 内容C </mt-tab-container-item>\n * </mt-tab-container>\n */\nexport default {\n  name: 'mt-tab-container',\n\n  props: {\n    value: {},\n    swipeable: Boolean\n  },\n\n  data() {\n    return {\n      start: { x: 0, y: 0 },\n      swiping: false,\n      activeItems: [],\n      pageWidth: 0,\n      currentActive: this.value\n    };\n  },\n\n  watch: {\n    value(val) {\n      this.currentActive = val;\n    },\n\n    currentActive(val, oldValue) {\n      this.$emit('input', val);\n      if (!this.swipeable) return;\n      const lastIndex = arrayFindIndex(this.$children,\n        item => item.id === oldValue);\n      this.swipeLeaveTransition(lastIndex);\n    }\n  },\n\n  mounted() {\n    if (!this.swipeable) return;\n\n    this.wrap = this.$refs.wrap;\n    this.pageWidth = this.wrap.clientWidth;\n    this.limitWidth = this.pageWidth / 4;\n  },\n\n  methods: {\n    swipeLeaveTransition(lastIndex = 0) {\n      if (typeof this.index !== 'number') {\n        this.index = arrayFindIndex(this.$children,\n          item => item.id === this.currentActive);\n        this.swipeMove(-lastIndex * this.pageWidth);\n      }\n\n      setTimeout(() => {\n        this.wrap.classList.add('swipe-transition');\n        this.swipeMove(-this.index * this.pageWidth);\n\n        once(this.wrap, 'webkitTransitionEnd', _ => {\n          this.wrap.classList.remove('swipe-transition');\n          this.wrap.style.webkitTransform = '';\n          this.swiping = false;\n          this.index = null;\n        });\n      }, 0);\n    },\n\n    swipeMove(offset) {\n      this.wrap.style.webkitTransform = `translate3d(${offset}px, 0, 0)`;\n      this.swiping = true;\n    },\n\n    startDrag(evt) {\n      if (!this.swipeable) return;\n      evt = evt.changedTouches ? evt.changedTouches[0] : evt;\n      this.dragging = true;\n      this.start.x = evt.pageX;\n      this.start.y = evt.pageY;\n    },\n\n    onDrag(evt) {\n      if (!this.dragging) return;\n      let swiping;\n      const e = evt.changedTouches ? evt.changedTouches[0] : evt;\n      const offsetTop = e.pageY - this.start.y;\n      const offsetLeft = e.pageX - this.start.x;\n      const y = Math.abs(offsetTop);\n      const x = Math.abs(offsetLeft);\n\n      swiping = !(x < 5 || (x >= 5 && y >= x * 1.73));\n      if (!swiping) return;\n      evt.preventDefault();\n\n      const len = this.$children.length - 1;\n      const index = arrayFindIndex(this.$children,\n        item => item.id === this.currentActive);\n      const currentPageOffset = index * this.pageWidth;\n      const offset = offsetLeft - currentPageOffset;\n      const absOffset = Math.abs(offset);\n\n      if (absOffset > len * this.pageWidth ||\n          (offset > 0 && offset < this.pageWidth)) {\n        this.swiping = false;\n        return;\n      }\n\n      this.offsetLeft = offsetLeft;\n      this.index = index;\n      this.swipeMove(offset);\n    },\n\n    endDrag() {\n      if (!this.swiping) return;\n      this.dragging = false;\n      const direction = this.offsetLeft > 0 ? -1 : 1;\n      const isChange = Math.abs(this.offsetLeft) > this.limitWidth;\n\n      if (isChange) {\n        this.index += direction;\n        const child = this.$children[this.index];\n        if (child) {\n          this.currentActive = child.id;\n          return;\n        }\n      }\n\n      this.swipeLeaveTransition();\n    }\n  }\n};\n</script>\n"
  },
  {
    "path": "packages/tab-container-item/README.md",
    "content": "# mint-tab-container-item"
  },
  {
    "path": "packages/tab-container-item/index.js",
    "content": "export { default } from './src/tab-container-item.vue';\n"
  },
  {
    "path": "packages/tab-container-item/src/tab-container-item.vue",
    "content": "<template>\n  <div\n    v-show=\"$parent.swiping || id === $parent.currentActive\"\n    class=\"mint-tab-container-item\">\n    <slot></slot>\n  </div>\n</template>\n\n<script>\n/**\n * mt-tab-container-item\n * @desc 搭配 tab-container 使用\n * @module components/tab-container-item\n *\n * @param {number|string} [id] - 该项的 id\n *\n * @example\n * <mt-tab-container v-model=\"selected\">\n *   <mt-tab-container-item id=\"1\"> 内容A </mt-tab-container-item>\n *   <mt-tab-container-item id=\"2\"> 内容B </mt-tab-container-item>\n *   <mt-tab-container-item id=\"3\"> 内容C </mt-tab-container-item>\n * </mt-tab-container>\n */\nexport default {\n  name: 'mt-tab-container-item',\n\n  props: ['id']\n};\n</script>\n\n<style>\n  @component-namespace mint {\n    @component tab-container-item {\n      flex-shrink: 0;\n      width: 100%;\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/tab-item/README.md",
    "content": "# mint-tab-item"
  },
  {
    "path": "packages/tab-item/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintTabItem',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/tab-item/index.js",
    "content": "export { default } from './src/tab-item.vue';\n"
  },
  {
    "path": "packages/tab-item/package.json",
    "content": "{\n  \"name\": \"mint-tab-item\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tab-item\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/tab-item/src/tab-item.vue",
    "content": "<template>\n  <a class=\"mint-tab-item\"\n    @click=\"$parent.$emit('input', id)\"\n    :class=\"{ 'is-selected': $parent.value === id }\">\n    <div class=\"mint-tab-item-icon\"><slot name=\"icon\"></slot></div>\n    <div class=\"mint-tab-item-label\"><slot></slot></div>\n  </a>\n</template>\n\n<script>\n/**\n * mt-tab-item\n * @module components/tab-item\n * @desc 搭配 tabbar 或 navbar 使用\n * @param {*} id - 选中后的返回值，任意类型\n * @param {slot} [icon] - icon 图标\n * @param {slot} - 文字\n *\n * @example\n * <mt-tab-item>\n *   <img slot=\"icon\" src=\"http://placehold.it/100x100\">\n *   订单\n * </mt-tab-item>\n */\nexport default {\n  name: 'mt-tab-item',\n\n  props: ['id']\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component tab-item {\n      display: block;\n      padding: 7px 0;\n      flex: 1;\n      text-decoration: none;\n\n      @descendent icon {\n        size: 24px;\n        margin: 0 auto 5px;\n\n        &:empty {\n          display: none;\n        }\n\n        & > * {\n          display: block;\n          size: 100%;\n        }\n      }\n\n      @descendent label {\n        color: inherit;\n        font-size: $tab-item-font-size;\n        line-height: 1;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/tabbar/README.md",
    "content": "# mint-tabbar"
  },
  {
    "path": "packages/tabbar/cooking.conf.js",
    "content": "var cooking = require('cooking');\nvar path = require('path');\nvar config = require('../../build/config');\n\ncooking.set({\n  entry: {\n    index: path.join(__dirname, 'index.js')\n  },\n  dist: path.join(__dirname, 'lib'),\n  template: false,\n  format: 'umd',\n  moduleName: 'MintTabBar',\n  extractCSS: 'style.css',\n  extends: config.extends,\n  alias: config.alias,\n  externals: config.externals\n});\n\nmodule.exports = cooking.resolve();\n"
  },
  {
    "path": "packages/tabbar/index.js",
    "content": "export { default } from './src/tabbar.vue';\n"
  },
  {
    "path": "packages/tabbar/package.json",
    "content": "{\n  \"name\": \"mint-tabbar\",\n  \"description\": \"\",\n  \"version\": \"0.1.0\",\n  \"main\": \"lib/index.js\",\n  \"author\": \"elemefe\",\n  \"homepage\": \"https://github.com/ElemeFE/mint-ui\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/ElemeFE/mint-ui/tree/master/components/mint-tabbar\",\n  \"dependencies\": {\n  }\n}"
  },
  {
    "path": "packages/tabbar/src/tabbar.vue",
    "content": "<template>\n  <div class=\"mint-tabbar\" :class=\"{\n      'is-fixed': fixed\n    }\">\n    <slot></slot>\n  </div>\n</template>\n\n<script>\n/**\n * mt-tabbar\n * @module components/tabbar\n * @desc 底部 tab，依赖 tab-item\n * @param {boolean} [fixed=false] - 固定底部\n * @param {*} value - 返回 item component 传入的 id\n *\n * @example\n * <mt-tabbar v-model=\"selected\">\n *   <mt-tab-item id=\"订单\">\n *     <img slot=\"icon\" src=\"http://placehold.it/100x100\">\n *     <span slot=\"label\">订单</span>\n *   </mt-tab-item>\n * </mt-tabbar>\n *\n * <mt-tabbar v-model=\"selected\" fixed>\n *   <mt-tab-item :id=\"['传入数组', '也是可以的']\">\n *     <img slot=\"icon\" src=\"http://placehold.it/100x100\">\n *     <span slot=\"label\">订单</span>\n *   </mt-tab-item>\n * </mt-tabbar>\n */\nexport default {\n  name: 'mt-tabbar',\n\n  props: {\n    fixed: Boolean,\n    value: {}\n  }\n};\n</script>\n\n<style lang=\"css\">\n  @import \"../../../src/style/var.css\";\n\n  @component-namespace mint {\n    @component tabbar {\n      background-image:linear-gradient(180deg, $color-grey, $color-grey 50%, transparent 50%);\n      background-size: 100% 1px;\n      background-repeat: no-repeat;\n      background-position: top left;\n      position: relative;\n      background-color: $tabbar-background-color;\n      display: flex;\n      position: absolute * 0 0 0;\n      text-align: center;\n\n      @when fixed {\n        position: fixed * 0 0 0;\n        z-index: $z-index-normal;\n      }\n\n      > .mint-tab-item.is-selected {\n        background-color: $tabbar-tab-item-selected-background-color;\n        color: $tabbar-tab-item-selected-color;\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "packages/toast/README.md",
    "content": "# mint-toast"
  },
  {
    "path": "packages/toast/index.js",
    "content": "export { default } from './src/toast.js';\n"
  },
  {
    "path": "packages/toast/src/toast.js",
    "content": "import Vue from 'vue';\n\nconst ToastConstructor = Vue.extend(require('./toast.vue'));\nlet toastPool = [];\n\nlet getAnInstance = () => {\n  if (toastPool.length > 0) {\n    let instance = toastPool[0];\n    toastPool.splice(0, 1);\n    return instance;\n  }\n  return new ToastConstructor({\n    el: document.createElement('div')\n  });\n};\n\nlet returnAnInstance = instance => {\n  if (instance) {\n    toastPool.push(instance);\n  }\n};\n\nlet removeDom = event => {\n  if (event.target.parentNode) {\n    event.target.parentNode.removeChild(event.target);\n  }\n};\n\nToastConstructor.prototype.close = function() {\n  this.visible = false;\n  this.$el.addEventListener('transitionend', removeDom);\n  this.closed = true;\n  returnAnInstance(this);\n};\n\nlet Toast = (options = {}) => {\n  let duration = options.duration || 3000;\n\n  let instance = getAnInstance();\n  instance.closed = false;\n  clearTimeout(instance.timer);\n  instance.message = typeof options === 'string' ? options : options.message;\n  instance.position = options.position || 'middle';\n  instance.className = options.className || '';\n  instance.iconClass = options.iconClass || '';\n\n  document.body.appendChild(instance.$el);\n  Vue.nextTick(function() {\n    instance.visible = true;\n    instance.$el.removeEventListener('transitionend', removeDom);\n    ~duration && (instance.timer = setTimeout(function() {\n      if (instance.closed) return;\n      instance.close();\n    }, duration));\n  });\n  return instance;\n};\n\nexport default Toast;\n"
  },
  {
    "path": "packages/toast/src/toast.vue",
    "content": "<template>\n  <transition name=\"mint-toast-pop\">\n    <div class=\"mint-toast\" v-show=\"visible\" :class=\"customClass\" :style=\"{ 'padding': iconClass === '' ? '10px' : '20px' }\">\n      <i class=\"mint-toast-icon\" :class=\"iconClass\" v-if=\"iconClass !== ''\"></i>\n      <span class=\"mint-toast-text\" :style=\"{ 'padding-top': iconClass === '' ? '0' : '10px' }\">{{ message }}</span>\n    </div>\n  </transition>\n</template>\n\n<style>\n  @component-namespace mint {\n    @component toast {\n      position: fixed;\n      max-width: 80%;\n      border-radius: 5px;\n      background: rgba(0, 0, 0, 0.7);\n      color: #fff;\n      box-sizing: border-box;\n      text-align: center;\n      z-index: 1000;\n      transition: opacity .3s linear;\n  \n      @descendent icon {\n        display: block;\n        text-align: center;\n        font-size: 56px;\n      }\n      \n      @descendent text {\n        font-size: 14px;\n        display: block;\n        text-align: center;\n      }\n      \n      @when placetop {\n        top: 50px;\n        left: 50%;\n        transform: translate(-50%, 0);\n      }\n      \n      @when placemiddle {\n        left: 50%;\n        top: 50%;\n        transform: translate(-50%, -50%);\n      }\n      \n      @when placebottom {\n        bottom: 50px;\n        left: 50%;\n        transform: translate(-50%, 0);\n      }\n      \n      @descendent pop-enter, pop-leave-active {\n        opacity: 0;\n      }\n    }\n  }\n</style>\n\n<script type=\"text/babel\">\n  export default {\n    props: {\n      message: String,\n      className: {\n        type: String,\n        default: ''\n      },\n      position: {\n        type: String,\n        default: 'middle'\n      },\n      iconClass: {\n        type: String,\n        default: ''\n      }\n    },\n\n    data() {\n      return {\n        visible: false\n      };\n    },\n\n    computed: {\n      customClass() {\n        var classes = [];\n        switch (this.position) {\n          case 'top':\n            classes.push('is-placetop');\n            break;\n          case 'bottom':\n            classes.push('is-placebottom');\n            break;\n          default:\n            classes.push('is-placemiddle');\n        }\n        classes.push(this.className);\n\n        return classes.join(' ');\n      }\n    }\n  };\n</script>"
  },
  {
    "path": "src/assets/font/iconfont.css",
    "content": "\n@font-face {font-family: \"mintui\";\n  src: url('iconfont.ttf?t=1464927413')\n}\n\n.mintui {\n  font-family:\"mintui\" !important;\n  font-size:16px;\n  font-style:normal;\n  -webkit-font-smoothing: antialiased;\n  -webkit-text-stroke-width: 0.2px;\n  -moz-osx-font-smoothing: grayscale;\n}\n.mintui-search:before { content: \"\\e604\"; }\n.mintui-more:before { content: \"\\e601\"; }\n.mintui-back:before { content: \"\\e600\"; }\n.mintui-field-error:before { content: \"\\e605\"; }\n.mintui-field-warning:before { content: \"\\e608\"; }\n.mintui-success:before { content: \"\\e602\"; }\n.mintui-field-success:before { content: \"\\e609\"; }\n"
  },
  {
    "path": "src/index.js",
    "content": "import Header from '../packages/header';\nimport Button from '../packages/button';\nimport Cell from '../packages/cell';\nimport CellSwipe from '../packages/cell-swipe';\nimport Field from '../packages/field';\nimport Badge from '../packages/badge';\nimport Switch from '../packages/switch';\nimport Spinner from '../packages/spinner';\nimport TabItem from '../packages/tab-item';\nimport TabContainerItem from '../packages/tab-container-item';\nimport TabContainer from '../packages/tab-container';\nimport Navbar from '../packages/navbar';\nimport Tabbar from '../packages/tabbar';\nimport Search from '../packages/search';\nimport Checklist from '../packages/checklist';\nimport Radio from '../packages/radio';\nimport Loadmore from '../packages/loadmore';\nimport Actionsheet from '../packages/actionsheet';\nimport Popup from '../packages/popup';\nimport Swipe from '../packages/swipe';\nimport SwipeItem from '../packages/swipe-item';\nimport Range from '../packages/range';\nimport Picker from '../packages/picker';\nimport Progress from '../packages/progress';\nimport Toast from '../packages/toast';\nimport Indicator from '../packages/indicator';\nimport MessageBox from '../packages/message-box';\nimport InfiniteScroll from '../packages/infinite-scroll';\nimport Lazyload from '../packages/lazyload';\nimport DatetimePicker from '../packages/datetime-picker';\nimport IndexList from '../packages/index-list';\nimport IndexSection from '../packages/index-section';\nimport PaletteButton from '../packages/palette-button';\nimport '../src/assets/font/iconfont.css';\nimport merge from './utils/merge';\n\nconst version = '2.2.13';\nconst install = function(Vue, config = {}) {\n  if (install.installed) return;\n\n  Vue.component(Header.name, Header);\n  Vue.component(Button.name, Button);\n  Vue.component(Cell.name, Cell);\n  Vue.component(CellSwipe.name, CellSwipe);\n  Vue.component(Field.name, Field);\n  Vue.component(Badge.name, Badge);\n  Vue.component(Switch.name, Switch);\n  Vue.component(Spinner.name, Spinner);\n  Vue.component(TabItem.name, TabItem);\n  Vue.component(TabContainerItem.name, TabContainerItem);\n  Vue.component(TabContainer.name, TabContainer);\n  Vue.component(Navbar.name, Navbar);\n  Vue.component(Tabbar.name, Tabbar);\n  Vue.component(Search.name, Search);\n  Vue.component(Checklist.name, Checklist);\n  Vue.component(Radio.name, Radio);\n  Vue.component(Loadmore.name, Loadmore);\n  Vue.component(Actionsheet.name, Actionsheet);\n  Vue.component(Popup.name, Popup);\n  Vue.component(Swipe.name, Swipe);\n  Vue.component(SwipeItem.name, SwipeItem);\n  Vue.component(Range.name, Range);\n  Vue.component(Picker.name, Picker);\n  Vue.component(Progress.name, Progress);\n  Vue.component(DatetimePicker.name, DatetimePicker);\n  Vue.component(IndexList.name, IndexList);\n  Vue.component(IndexSection.name, IndexSection);\n  Vue.component(PaletteButton.name, PaletteButton);\n  Vue.use(InfiniteScroll);\n  Vue.use(Lazyload, merge({\n    loading: require('./assets/loading-spin.svg'),\n    attempt: 3\n  }, config.lazyload));\n\n  Vue.$messagebox = Vue.prototype.$messagebox = MessageBox;\n  Vue.$toast = Vue.prototype.$toast = Toast;\n  Vue.$indicator = Vue.prototype.$indicator = Indicator;\n};\n\n// auto install\nif (typeof window !== 'undefined' && window.Vue) {\n  install(window.Vue);\n};\n\nmodule.exports = {\n  install,\n  version,\n  Header,\n  Button,\n  Cell,\n  CellSwipe,\n  Field,\n  Badge,\n  Switch,\n  Spinner,\n  TabItem,\n  TabContainerItem,\n  TabContainer,\n  Navbar,\n  Tabbar,\n  Search,\n  Checklist,\n  Radio,\n  Loadmore,\n  Actionsheet,\n  Popup,\n  Swipe,\n  SwipeItem,\n  Range,\n  Picker,\n  Progress,\n  Toast,\n  Indicator,\n  MessageBox,\n  InfiniteScroll,\n  Lazyload,\n  DatetimePicker,\n  IndexList,\n  IndexSection,\n  PaletteButton\n};\n"
  },
  {
    "path": "src/mixins/emitter.js",
    "content": "function broadcast(componentName, eventName, params) {\n  this.$children.forEach(child => {\n    var name = child.$options.componentName;\n\n    if (name === componentName) {\n      child.$emit.apply(child, [eventName].concat(params));\n    } else {\n      broadcast.apply(child, [componentName, eventName].concat(params));\n    }\n  });\n}\nexport default {\n  methods: {\n    dispatch(componentName, eventName, params) {\n      var parent = this.$parent;\n      var name = parent.$options.componentName;\n\n      while (parent && (!name || name !== componentName)) {\n        parent = parent.$parent;\n\n        if (parent) {\n          name = parent.$options.componentName;\n        }\n      }\n      if (parent) {\n        parent.$emit.apply(parent, [eventName].concat(params));\n      }\n    },\n    broadcast(componentName, eventName, params) {\n      broadcast.call(this, componentName, eventName, params);\n    }\n  }\n};\n"
  },
  {
    "path": "src/style/empty.css",
    "content": "\n"
  },
  {
    "path": "src/style/popup.css",
    "content": ".v-modal-enter {\n  animation: v-modal-in .2s ease;\n}\n\n.v-modal-leave {\n  animation: v-modal-out .2s ease forwards;\n}\n\n@keyframes v-modal-in {\n  0% {\n    opacity: 0;\n  }\n  100% {\n  }\n}\n\n@keyframes v-modal-out {\n  0% {\n  }\n  100% {\n    opacity: 0;\n  }\n}\n\n.v-modal {\n  position: fixed;\n  left: 0;\n  top: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0.5;\n  background: #000;\n}\n"
  },
  {
    "path": "src/style/var.css",
    "content": "$color-blue: #26a2ff;\n$color-white: #fff;\n$color-grey: #d9d9d9;\n$border-color: #c8c8cd;\n$success-color: #4caf50;\n$error-color: #f44336;\n$warning-color: #ffc107;\n\n/* Cell Component */\n$cell-value-color: #888;\n\n/* Header Component */\n$header-height: 40px;\n\n/* Button Component */\n$button-default-color: #656b79;\n$button-default-background-color: #f6f8fa;\n$button-default-plain-color: #5a5a5a;\n$button-default-box-shadow: 0 0 1px #b8bbbf;\n$button-primary-color: #fff;\n$button-primary-background-color: #26a2ff;\n$button-danger-color: #fff;\n$button-danger-background-color: #ef4f4f;\n\n/* Tab Item Component */\n$tab-item-font-size: 12px;\n\n/* Tabbar Component */\n$tabbar-background-color: #fafafa;\n$tabbar-tab-item-selected-background-color: #eaeaea;\n$tabbar-tab-item-selected-color: $color-blue;\n\n/* Navbar Component */\n$navbar-background-color: #fafafa;\n$tabbar-tab-item-selected-background-color: #eaeaea;\n\n/* Checklist Component */\n$checklist-title-color: #888;\n\n/* Radio Component */\n$radio-title-color: #888;\n\n/* z-index */\n$z-index-normal: 1;\n"
  },
  {
    "path": "src/utils/clickoutside.js",
    "content": "/**\n * v-clickoutside\n * @desc 点击元素外面才会触发的事件\n * @example\n * ```vue\n * <div v-element-clickoutside=\"handleClose\">\n * ```\n */\nconst clickoutsideContext = '@@clickoutsideContext';\n\nexport default {\n  bind(el, binding, vnode) {\n    const documentHandler = function(e) {\n      if (vnode.context && !el.contains(e.target)) {\n        vnode.context[el[clickoutsideContext].methodName]();\n      }\n    };\n    el[clickoutsideContext] = {\n      documentHandler,\n      methodName: binding.expression,\n      arg: binding.arg || 'click'\n    };\n    document.addEventListener(el[clickoutsideContext].arg, documentHandler);\n  },\n\n  update(el, binding) {\n    el[clickoutsideContext].methodName = binding.expression;\n  },\n\n  unbind(el) {\n    document.removeEventListener(\n      el[clickoutsideContext].arg,\n      el[clickoutsideContext].documentHandler);\n  },\n\n  install(Vue) {\n    Vue.directive('clickoutside', {\n      bind: this.bind,\n      unbind: this.unbind\n    });\n  }\n};\n"
  },
  {
    "path": "src/utils/dom.js",
    "content": "/* istanbul ignore next */\n\nimport Vue from 'vue';\n\nconst isServer = Vue.prototype.$isServer;\nconst SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nconst MOZ_HACK_REGEXP = /^moz([A-Z])/;\nconst ieVersion = isServer ? 0 : Number(document.documentMode);\n\n/* istanbul ignore next */\nconst trim = function(string) {\n  return (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n};\n/* istanbul ignore next */\nconst camelCase = function(name) {\n  return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n    return offset ? letter.toUpperCase() : letter;\n  }).replace(MOZ_HACK_REGEXP, 'Moz$1');\n};\n\n/* istanbul ignore next */\nexport const on = (function() {\n  if (!isServer && document.addEventListener) {\n    return function(element, event, handler) {\n      if (element && event && handler) {\n        element.addEventListener(event, handler, false);\n      }\n    };\n  } else {\n    return function(element, event, handler) {\n      if (element && event && handler) {\n        element.attachEvent('on' + event, handler);\n      }\n    };\n  }\n})();\n\n/* istanbul ignore next */\nexport const off = (function() {\n  if (!isServer && document.removeEventListener) {\n    return function(element, event, handler) {\n      if (element && event) {\n        element.removeEventListener(event, handler, false);\n      }\n    };\n  } else {\n    return function(element, event, handler) {\n      if (element && event) {\n        element.detachEvent('on' + event, handler);\n      }\n    };\n  }\n})();\n\n/* istanbul ignore next */\nexport const once = function(el, event, fn) {\n  var listener = function() {\n    if (fn) {\n      fn.apply(this, arguments);\n    }\n    off(el, event, listener);\n  };\n  on(el, event, listener);\n};\n\n/* istanbul ignore next */\nexport function hasClass(el, cls) {\n  if (!el || !cls) return false;\n  if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n  if (el.classList) {\n    return el.classList.contains(cls);\n  } else {\n    return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;\n  }\n};\n\n/* istanbul ignore next */\nexport function addClass(el, cls) {\n  if (!el) return;\n  var curClass = el.className;\n  var classes = (cls || '').split(' ');\n\n  for (var i = 0, j = classes.length; i < j; i++) {\n    var clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.add(clsName);\n    } else {\n      if (!hasClass(el, clsName)) {\n        curClass += ' ' + clsName;\n      }\n    }\n  }\n  if (!el.classList) {\n    el.className = curClass;\n  }\n};\n\n/* istanbul ignore next */\nexport function removeClass(el, cls) {\n  if (!el || !cls) return;\n  var classes = cls.split(' ');\n  var curClass = ' ' + el.className + ' ';\n\n  for (var i = 0, j = classes.length; i < j; i++) {\n    var clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.remove(clsName);\n    } else {\n      if (hasClass(el, clsName)) {\n        curClass = curClass.replace(' ' + clsName + ' ', ' ');\n      }\n    }\n  }\n  if (!el.classList) {\n    el.className = trim(curClass);\n  }\n};\n\n/* istanbul ignore next */\nexport const getStyle = ieVersion < 9 ? function(element, styleName) {\n  if (isServer) return;\n  if (!element || !styleName) return null;\n  styleName = camelCase(styleName);\n  if (styleName === 'float') {\n    styleName = 'styleFloat';\n  }\n  try {\n    switch (styleName) {\n      case 'opacity':\n        try {\n          return element.filters.item('alpha').opacity / 100;\n        } catch (e) {\n          return 1.0;\n        }\n      default:\n        return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);\n    }\n  } catch (e) {\n    return element.style[styleName];\n  }\n} : function(element, styleName) {\n  if (isServer) return;\n  if (!element || !styleName) return null;\n  styleName = camelCase(styleName);\n  if (styleName === 'float') {\n    styleName = 'cssFloat';\n  }\n  try {\n    var computed = document.defaultView.getComputedStyle(element, '');\n    return element.style[styleName] || computed ? computed[styleName] : null;\n  } catch (e) {\n    return element.style[styleName];\n  }\n};\n\n/* istanbul ignore next */\nexport function setStyle(element, styleName, value) {\n  if (!element || !styleName) return;\n\n  if (typeof styleName === 'object') {\n    for (var prop in styleName) {\n      if (styleName.hasOwnProperty(prop)) {\n        setStyle(element, prop, styleName[prop]);\n      }\n    }\n  } else {\n    styleName = camelCase(styleName);\n    if (styleName === 'opacity' && ieVersion < 9) {\n      element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';\n    } else {\n      element.style[styleName] = value;\n    }\n  }\n};\n"
  },
  {
    "path": "src/utils/merge.js",
    "content": "export default function(target) {\n  for (let i = 1, j = arguments.length; i < j; i++) {\n    let source = arguments[i] || {};\n    for (let prop in source) {\n      if (source.hasOwnProperty(prop)) {\n        let value = source[prop];\n        if (value !== undefined) {\n          target[prop] = value;\n        }\n      }\n    }\n  }\n\n  return target;\n};\n"
  },
  {
    "path": "src/utils/popup/index.js",
    "content": "import Vue from 'vue';\nimport merge from 'mint-ui/src/utils/merge';\nimport PopupManager from 'mint-ui/src/utils/popup/popup-manager';\n\nlet idSeed = 1;\nconst transitions = [];\n\nconst hookTransition = (transition) => {\n  if (transitions.indexOf(transition) !== -1) return;\n\n  const getVueInstance = (element) => {\n    let instance = element.__vue__;\n    if (!instance) {\n      const textNode = element.previousSibling;\n      if (textNode.__vue__) {\n        instance = textNode.__vue__;\n      }\n    }\n    return instance;\n  };\n\n  Vue.transition(transition, {\n    afterEnter(el) {\n      const instance = getVueInstance(el);\n\n      if (instance) {\n        instance.doAfterOpen && instance.doAfterOpen();\n      }\n    },\n    afterLeave(el) {\n      const instance = getVueInstance(el);\n\n      if (instance) {\n        instance.doAfterClose && instance.doAfterClose();\n      }\n    }\n  });\n};\n\nlet scrollBarWidth;\nconst getScrollBarWidth = () => {\n  if (Vue.prototype.$isServer) return;\n  if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n  const outer = document.createElement('div');\n  outer.style.visibility = 'hidden';\n  outer.style.width = '100px';\n  outer.style.position = 'absolute';\n  outer.style.top = '-9999px';\n  document.body.appendChild(outer);\n\n  const widthNoScroll = outer.offsetWidth;\n  outer.style.overflow = 'scroll';\n\n  const inner = document.createElement('div');\n  inner.style.width = '100%';\n  outer.appendChild(inner);\n\n  const widthWithScroll = inner.offsetWidth;\n  outer.parentNode.removeChild(outer);\n\n  return widthNoScroll - widthWithScroll;\n};\n\nconst getDOM = function(dom) {\n  if (dom.nodeType === 3) {\n    dom = dom.nextElementSibling || dom.nextSibling;\n    getDOM(dom);\n  }\n  return dom;\n};\n\nexport default {\n  props: {\n    value: {\n      type: Boolean,\n      default: false\n    },\n    transition: {\n      type: String,\n      default: ''\n    },\n    openDelay: {},\n    closeDelay: {},\n    zIndex: {},\n    modal: {\n      type: Boolean,\n      default: false\n    },\n    modalFade: {\n      type: Boolean,\n      default: true\n    },\n    modalClass: {\n    },\n    lockScroll: {\n      type: Boolean,\n      default: true\n    },\n    closeOnPressEscape: {\n      type: Boolean,\n      default: false\n    },\n    closeOnClickModal: {\n      type: Boolean,\n      default: false\n    }\n  },\n\n  created() {\n    if (this.transition) {\n      hookTransition(this.transition);\n    }\n  },\n\n  beforeMount() {\n    this._popupId = 'popup-' + idSeed++;\n    PopupManager.register(this._popupId, this);\n  },\n\n  beforeDestroy() {\n    PopupManager.deregister(this._popupId);\n    PopupManager.closeModal(this._popupId);\n    if (this.modal && this.bodyOverflow !== null && this.bodyOverflow !== 'hidden') {\n      document.body.style.overflow = this.bodyOverflow;\n      document.body.style.paddingRight = this.bodyPaddingRight;\n    }\n    this.bodyOverflow = null;\n    this.bodyPaddingRight = null;\n  },\n\n  data() {\n    return {\n      opened: false,\n      bodyOverflow: null,\n      bodyPaddingRight: null,\n      rendered: false\n    };\n  },\n\n  watch: {\n    value(val) {\n      if (val) {\n        if (this._opening) return;\n        if (!this.rendered) {\n          this.rendered = true;\n          Vue.nextTick(() => {\n            this.open();\n          });\n        } else {\n          this.open();\n        }\n      } else {\n        this.close();\n      }\n    }\n  },\n\n  methods: {\n    open(options) {\n      if (!this.rendered) {\n        this.rendered = true;\n        this.$emit('input', true);\n      }\n\n      const props = merge({}, this, options, this.$props);\n\n      if (this._closeTimer) {\n        clearTimeout(this._closeTimer);\n        this._closeTimer = null;\n      }\n      clearTimeout(this._openTimer);\n\n      const openDelay = Number(props.openDelay);\n      if (openDelay > 0) {\n        this._openTimer = setTimeout(() => {\n          this._openTimer = null;\n          this.doOpen(props);\n        }, openDelay);\n      } else {\n        this.doOpen(props);\n      }\n    },\n\n    doOpen(props) {\n      if (this.$isServer) return;\n      if (this.willOpen && !this.willOpen()) return;\n      if (this.opened) return;\n\n      this._opening = true;\n\n      // 使用 vue-popup 的组件，如果需要和父组件通信显示的状态，应该使用 value，它是一个 prop，\n      // 这样在父组件中用 v-model 即可；否则可以使用 visible，它是一个 data\n      this.visible = true;\n      this.$emit('input', true);\n\n      const dom = getDOM(this.$el);\n\n      const modal = props.modal;\n\n      const zIndex = props.zIndex;\n      if (zIndex) {\n        PopupManager.zIndex = zIndex;\n      }\n\n      if (modal) {\n        if (this._closing) {\n          PopupManager.closeModal(this._popupId);\n          this._closing = false;\n        }\n        PopupManager.openModal(this._popupId, PopupManager.nextZIndex(), dom, props.modalClass, props.modalFade);\n        if (props.lockScroll) {\n          if (!this.bodyOverflow) {\n            this.bodyPaddingRight = document.body.style.paddingRight;\n            this.bodyOverflow = document.body.style.overflow;\n          }\n          scrollBarWidth = getScrollBarWidth();\n          let bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;\n          if (scrollBarWidth > 0 && bodyHasOverflow) {\n            document.body.style.paddingRight = scrollBarWidth + 'px';\n          }\n          document.body.style.overflow = 'hidden';\n        }\n      }\n\n      if (getComputedStyle(dom).position === 'static') {\n        dom.style.position = 'absolute';\n      }\n\n      dom.style.zIndex = PopupManager.nextZIndex();\n      this.opened = true;\n\n      this.onOpen && this.onOpen();\n\n      if (!this.transition) {\n        this.doAfterOpen();\n      }\n    },\n\n    doAfterOpen() {\n      this._opening = false;\n    },\n\n    close() {\n      if (this.willClose && !this.willClose()) return;\n\n      if (this._openTimer !== null) {\n        clearTimeout(this._openTimer);\n        this._openTimer = null;\n      }\n      clearTimeout(this._closeTimer);\n\n      const closeDelay = Number(this.closeDelay);\n\n      if (closeDelay > 0) {\n        this._closeTimer = setTimeout(() => {\n          this._closeTimer = null;\n          this.doClose();\n        }, closeDelay);\n      } else {\n        this.doClose();\n      }\n    },\n\n    doClose() {\n      this.visible = false;\n      this.$emit('input', false);\n      this._closing = true;\n\n      this.onClose && this.onClose();\n\n      if (this.lockScroll) {\n        setTimeout(() => {\n          if (this.modal && this.bodyOverflow !== 'hidden') {\n            document.body.style.overflow = this.bodyOverflow;\n            document.body.style.paddingRight = this.bodyPaddingRight;\n          }\n          this.bodyOverflow = null;\n          this.bodyPaddingRight = null;\n        }, 200);\n      }\n\n      this.opened = false;\n\n      if (!this.transition) {\n        this.doAfterClose();\n      }\n    },\n\n    doAfterClose() {\n      PopupManager.closeModal(this._popupId);\n      this._closing = false;\n    }\n  }\n};\n\nexport { PopupManager };\n"
  },
  {
    "path": "src/utils/popup/popup-manager.js",
    "content": "import Vue from 'vue';\nimport { addClass, removeClass } from 'mint-ui/src/utils/dom';\n\nlet hasModal = false;\n\nconst getModal = function() {\n  if (Vue.prototype.$isServer) return;\n  let modalDom = PopupManager.modalDom;\n  if (modalDom) {\n    hasModal = true;\n  } else {\n    hasModal = false;\n    modalDom = document.createElement('div');\n    PopupManager.modalDom = modalDom;\n\n    modalDom.addEventListener('touchmove', function(event) {\n      event.preventDefault();\n      event.stopPropagation();\n    });\n\n    modalDom.addEventListener('click', function() {\n      PopupManager.doOnModalClick && PopupManager.doOnModalClick();\n    });\n  }\n\n  return modalDom;\n};\n\nconst instances = {};\n\nconst PopupManager = {\n  zIndex: 2000,\n\n  modalFade: true,\n\n  getInstance: function(id) {\n    return instances[id];\n  },\n\n  register: function(id, instance) {\n    if (id && instance) {\n      instances[id] = instance;\n    }\n  },\n\n  deregister: function(id) {\n    if (id) {\n      instances[id] = null;\n      delete instances[id];\n    }\n  },\n\n  nextZIndex: function() {\n    return PopupManager.zIndex++;\n  },\n\n  modalStack: [],\n\n  doOnModalClick: function() {\n    const topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n    if (!topItem) return;\n\n    const instance = PopupManager.getInstance(topItem.id);\n    if (instance && instance.closeOnClickModal) {\n      instance.close();\n    }\n  },\n\n  openModal: function(id, zIndex, dom, modalClass, modalFade) {\n    if (Vue.prototype.$isServer) return;\n    if (!id || zIndex === undefined) return;\n    this.modalFade = modalFade;\n\n    const modalStack = this.modalStack;\n\n    for (let i = 0, j = modalStack.length; i < j; i++) {\n      const item = modalStack[i];\n      if (item.id === id) {\n        return;\n      }\n    }\n\n    const modalDom = getModal();\n\n    addClass(modalDom, 'v-modal');\n    if (this.modalFade && !hasModal) {\n      addClass(modalDom, 'v-modal-enter');\n    }\n    if (modalClass) {\n      let classArr = modalClass.trim().split(/\\s+/);\n      classArr.forEach(item => addClass(modalDom, item));\n    }\n    setTimeout(() => {\n      removeClass(modalDom, 'v-modal-enter');\n    }, 200);\n\n    if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {\n      dom.parentNode.appendChild(modalDom);\n    } else {\n      document.body.appendChild(modalDom);\n    }\n\n    if (zIndex) {\n      modalDom.style.zIndex = zIndex;\n    }\n    modalDom.style.display = '';\n\n    this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });\n  },\n\n  closeModal: function(id) {\n    const modalStack = this.modalStack;\n    const modalDom = getModal();\n\n    if (modalStack.length > 0) {\n      const topItem = modalStack[modalStack.length - 1];\n      if (topItem.id === id) {\n        if (topItem.modalClass) {\n          let classArr = topItem.modalClass.trim().split(/\\s+/);\n          classArr.forEach(item => removeClass(modalDom, item));\n        }\n\n        modalStack.pop();\n        if (modalStack.length > 0) {\n          modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;\n        }\n      } else {\n        for (let i = modalStack.length - 1; i >= 0; i--) {\n          if (modalStack[i].id === id) {\n            modalStack.splice(i, 1);\n            break;\n          }\n        }\n      }\n    }\n\n    if (modalStack.length === 0) {\n      if (this.modalFade) {\n        addClass(modalDom, 'v-modal-leave');\n      }\n      setTimeout(() => {\n        if (modalStack.length === 0) {\n          if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);\n          modalDom.style.display = 'none';\n          PopupManager.modalDom = undefined;\n        }\n        removeClass(modalDom, 'v-modal-leave');\n      }, 200);\n    }\n  }\n};\n!Vue.prototype.$isServer && window.addEventListener('keydown', function(event) {\n  if (event.keyCode === 27) { // ESC\n    if (PopupManager.modalStack.length > 0) {\n      const topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];\n      if (!topItem) return;\n      const instance = PopupManager.getInstance(topItem.id);\n      if (instance.closeOnPressEscape) {\n        instance.close();\n      }\n    }\n  }\n});\n\nexport default PopupManager;\n"
  }
]