[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\"es2015\"],\n  \"plugins\": [\"transform-runtime\"],\n  \"comments\": false\n}"
  },
  {
    "path": ".gitignore",
    "content": "node_modules\n*.log\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2016 Bruno Bonnin\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": "README.md",
    "content": "# vue-morris\n\n> Vue.js components wrapping Morris.js lib\n> \n> See http://morrisjs.github.io/morris.js/ for documentation\n\n> Depends on Vue.js v2.1.0+\n \n## Install\n\nUse npm\n\n```bash\nnpm install vue-morris --save\n```\n\nDo not forget to declare jQuery in your `package.json` and, if you are using Webpack, you should have something like that in your `webpack.config.js` \n\n```javascript\nresolve: {\n    alias: {\n      'vue$': 'vue/dist/vue.common.js',\n      'jquery': 'jquery/src/jquery.js'\n    }\n  },\n```\n\n## Examples\nFor a complete example, see files in `examples` directory or the project: https://github.com/bbonnin/vue-morris-example.\n\n* Import the component\n\n```javascript\n// Do not forget to import raphael\nimport Raphael from 'raphael/raphael'\nglobal.Raphael = Raphael\n\nimport Vue from 'vue'\nimport { DonutChart } from 'vue-morris'\n\nnew Vue({\n  el: '#app',\n\n  data: {\n    donutData: [\n      { label: 'Red', value: 300 },\n      { label: 'Blue', value: 50 },\n      { label: 'Yellow', value: 100 }\n    ],\n\n    components: {\n    DonutChart, BarChart, LineChart, AreaChart\n  }\n})\n```\n\n* Use the component in html\n```html\n<donut-chart \n  id=\"donut\" \n  :data=\"donutData\" \n  colors='[ \"#FF6384\", \"#36A2EB\", \"#FFCE56\" ]' \n  resize=\"true\">\n</donut-chart>\n```\n\n* Bar chart\n![bar chart](img/barchart.png)\n\n* Line chart\n![line chart](img/linechart.png)\n\n* Area chart\n![area chart](img/areachart.png)\n\n* Donut chart\n![donut chart](img/donutchart.png)\n\n\n## Build Setup\n\n``` bash\n# install dependencies\nnpm install\n\n# serve with hot reload at localhost:8080\nnpm run dev\n\n# build for production with minification\nnpm run build\n```\n\n\n\n"
  },
  {
    "path": "build/webpack.base.conf.js",
    "content": "var path = require('path')\n\nmodule.exports = {\n  entry: {\n    'vue-morris': './src/index.js'\n  },\n  output: {\n    path: path.resolve(__dirname, '../dist'),\n    publicPath: '/dist/',\n    //library: 'VueMorris',\n    //libraryTarget: 'amd',\n    filename: process.env.NODE_ENV === 'production' ? '[name].min.js' : '[name].js'\n  },\n  module: {\n    rules: [\n      {\n        test: /\\.vue$/,\n        loader: 'vue-loader',\n        options: {\n          // vue-loader options go here\n        }\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel-loader',\n        exclude: /node_modules/\n      },\n      {\n        test: /\\.(png|jpg|gif|svg)$/,\n        loader: 'file-loader',\n        options: {\n          name: '[name].[ext]?[hash]'\n        }\n      },\n      {\n        test: /\\.css$/,\n        loader: 'vue-style-loader!css-loader'\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": "build/webpack.build.conf.js",
    "content": "var webpack = require('webpack')\nvar merge = require('webpack-merge')\nvar baseWebpackConfig = require('./webpack.base.conf')\n\nbaseWebpackConfig.output.library = 'VueMorris'\nbaseWebpackConfig.output.libraryTarget = 'amd'\n\nmodule.exports = merge(baseWebpackConfig, {\n\n  devtool: '#source-map',\n\n  plugins: [\n    new webpack.DefinePlugin({\n      'process.env': {\n        NODE_ENV: '\"production\"'\n      }\n    }),\n    new webpack.optimize.UglifyJsPlugin({\n      sourceMap: true,\n      compress: {\n        warnings: false\n      }\n    }),\n    new webpack.LoaderOptionsPlugin({\n      minimize: true\n    })\n  ]\n})\n"
  },
  {
    "path": "build/webpack.dev.conf.js",
    "content": "var webpack = require('webpack')\nvar merge = require('webpack-merge')\nvar baseWebpackConfig = require('./webpack.base.conf')\nvar HtmlWebpackPlugin = require('html-webpack-plugin')\n\nbaseWebpackConfig.entry.examples = './examples/main.js'\n\nmodule.exports = merge(baseWebpackConfig, {\n\n  devServer: {\n    historyApiFallback: true,\n    noInfo: true\n  },\n\n  devtool: '#eval-source-map',\n\n  resolve: {\n    alias: {\n      'vue$': 'vue/dist/vue.common.js',\n      'jquery': 'jquery/src/jquery.js'/*,\n      'raphael': 'raphael/raphael.js'*/\n    }\n  },\n\n  plugins: [\n    new webpack.ProvidePlugin({\n      $: 'jquery',\n      jQuery: 'jquery'/*,\n      Raphael: 'raphael'*/\n    }),\n    new webpack.DefinePlugin({\n      'process.env': {\n        NODE_ENV: '\"development\"'\n      }\n    }),\n    new HtmlWebpackPlugin({\n      filename: './examples/index.html',\n      inject: false\n    })\n  ]\n})\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"vue-morris\",\n  \"description\": \"Vue.js component wrapping Morris.js lib\",\n  \"version\": \"1.1.0\",\n  \"author\": \"Bruno Bonnin <bbonnin@gmail.com>\",\n  \"private\": false,\n  \"keywords\": [\n    \"vue\",\n    \"vuejs\",\n    \"morris.js\"\n  ],\n  \"main\": \"dist/vue-morris.min.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/bbonnin/vue-morris.git\"\n  },\n  \"bugs\": \"https://github.com/bbonnin/vue-morris/issues\",\n  \"scripts\": {\n    \"dev\": \"cross-env NODE_ENV=development webpack-dev-server --content-base ./examples --open --inline --hot --colors --config build/webpack.dev.conf.js\",\n    \"build\": \"cross-env NODE_ENV=production webpack --progress --hide-modules --colors --config build/webpack.build.conf.js\"\n  },\n  \"dependencies\": {\n    \"babel-runtime\": \"^6.0.0\",\n    \"morris.js\": \"github:morrisjs/morris.js\",\n    \"raphael\": \"^2.2.7\",\n    \"vue\": \"^2.1.0\"\n  },\n  \"devDependencies\": {\n    \"babel-core\": \"^6.0.0\",\n    \"babel-loader\": \"^6.0.0\",\n    \"babel-plugin-transform-runtime\": \"^6.0.0\",\n    \"babel-preset-es2015\": \"^6.0.0\",\n    \"cross-env\": \"^3.0.0\",\n    \"css-loader\": \"^0.25.0\",\n    \"file-loader\": \"^0.9.0\",\n    \"html-webpack-plugin\": \"^2.24.1\",\n    \"vue-loader\": \"^10.0.0\",\n    \"vue-style-loader\": \"^1.0.0\",\n    \"vue-template-compiler\": \"^2.1.0\",\n    \"webpack\": \"^2.1.0-beta.25\",\n    \"webpack-dev-server\": \"^2.11.5\",\n    \"webpack-merge\": \"^2.3.1\"\n  },\n  \"peerDependencies\": {\n    \"jquery\": \"^3.0.0\"\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "src/components/area-chart.vue",
    "content": "<template>\n  <div :id=\"id\"></div>\n</template>\n\n<script>\nimport 'morris.js/morris'\nimport 'morris.js/morris.css'\nimport Converter from '../util/converter'\nimport ChartProps from './chart-mixins'\n\nexport default {\n  name: 'area-chart',\n\n  mixins: [ ChartProps.area ],\n\n  data () {\n    return {\n      chart: null\n    }\n  },\n\n  watch: {\n    data (val) {\n      this.$nextTick(() => {\n        this.chart.options.labels = Converter.toObject(this.labels)\n        this.chart.options.xkey = this.xkey\n        this.chart.options.ykeys = Converter.toObject(this.ykeys)\n\n        if (this['lineColors']) {\n          this.chart.options['lineColors'] = Converter.toObject(this['lineColors'])\n        }\n        \n        this.chart.setData(Converter.toObject(this.data))\n      })\n    }\n  },\n\n  mounted () {\n    let options = {\n      element: this.id,\n      data: Converter.toObject(this.data),\n      resize: Converter.toBoolean(this.resize),\n      labels: Converter.toObject(this.labels),\n      xkey: this.xkey,\n      ykeys: Converter.toObject(this.ykeys),\n      grid: Converter.toBoolean(this.grid),\n      gridTextColor: this.gridTextColor,\n      gridTextSize: Converter.toInt(this.gridTextSize),\n      gridTextFamily: this.gridTextFamily,\n      gridTextWeight: this.gridTextWeight,\n      lineWidth: this.lineWidth,\n      pointSize: this.pointSize,\n      ymax: this.ymax,\n      ymin: this.ymin,\n      smooth: Converter.toBoolean(this.smooth),\n      hideHover: this.hideHover,\n      parseTime: Converter.toBoolean(this.parseTime),\n      postUnits: this.postUnits,\n      preUnits: this.preUnits,\n      xLabelAngle: this.xLabelAngle,\n      goalStrokeWidth: this.goalStrokeWidth,\n      eventStrokeWidth: this.eventStrokeWidth,\n      fillOpacity: this.fillOpacity,\n      behaveLikeLine: this.behaveLikeLine\n    }\n\n    this.addOptionAsObject('lineColors', options)\n    this.addOption('xLabels', options)\n    this.addOptionAsObject('pointFillColors', options)\n    this.addOptionAsObject('pointStrokeColors', options)\n    this.addOption('dateFormat', options)\n    this.addOption('xLabelFormat', options)\n    this.addOption('yLabelFormat', options)\n    this.addOptionAsObject('goals', options)\n    this.addOptionAsObject('goalLineColors', options)\n    this.addOptionAsObject('events', options)\n    this.addOptionAsObject('eventLineColors', options)\n    this.addOption('hoverCallback', options)\n\n    this.chart = Morris.Area(options)\n  }\n}\n</script>\n"
  },
  {
    "path": "src/components/bar-chart.vue",
    "content": "<template>\n  <div :id=\"id\"></div>\n</template>\n\n<script>\nimport 'morris.js/morris'\nimport 'morris.js/morris.css'\nimport Converter from '../util/converter'\nimport ChartProps from './chart-mixins'\n\nexport default {\n  name: 'bar-chart',\n\n  mixins: [ ChartProps.bar ],\n\n  data () {\n    return {\n      chart: null\n    }\n  },\n\n  watch: {\n    data (val) {\n      this.$nextTick(() => {\n        this.chart.options.labels = Converter.toObject(this.labels)\n        this.chart.options.xkey = this.xkey\n        this.chart.options.ykeys = Converter.toObject(this.ykeys)\n\n        if (this['barColors']) {\n          this.chart.options['barColors'] = Converter.toObject(this['barColors'])\n        }\n\n        this.chart.setData(this.data)\n      })\n    }\n  },\n\n  mounted () {\n    let options = {\n      element: this.id,\n      data: Converter.toObject(this.data),\n      labels: Converter.toObject(this.labels),\n      resize: Converter.toBoolean(this.resize),\n      xkey: this.xkey,\n      ykeys: Converter.toObject(this.ykeys),\n      axes: Converter.toBoolean(this.axes),\n      ymax: this.ymax,\n      ymin: this.ymin,\n      hideHover: this.hideHover,\n      horizontal: Converter.toBoolean(this.horizontal),\n      stacked: Converter.toBoolean(this.stacked),\n      grid: Converter.toBoolean(this.grid),\n      gridTextColor: this.gridTextColor,\n      gridTextSize: Converter.toInt(this.gridTextSize),\n      gridTextFamily: this.gridTextFamily,\n      gridTextWeight: this.gridTextWeight,\n      xLabelAngle: this.xLabelAngle,\n      lineWidth: this.lineWidth,\n      pointSize: this.pointSize\n    }\n\n    this.addOptionAsObject('barColors', options)\n    this.addOption('xLabelFormat', options)\n    this.addOption('yLabelFormat', options)\n    this.addOption('hoverCallback', options)\n\n    this.chart = Morris.Bar(options)\n  }\n}\n</script>\n"
  },
  {
    "path": "src/components/chart-mixins.js",
    "content": "import Converter from '../util/converter'\n\n/**\n * All properties used by the charts with their constraints.\n */\nconst Props = {\n  id: { type: String, required: true }, \n  data: { type: [ String, Array ], required: true },\n  barColors: { type: [ String, Array, Function ], required: false },\n  xkey: { type: String, required: false, default: 'key' },\n  ykeys: { type: [ String, Array ], required: false, default: function _default() { return ['value']; }},\n  labels: { type: [ String, Array ], required: false, default: function _default() { return ['Value']; }},\n  hoverCallback: { type: Function, required: false },\n  axes: { type: [ Boolean, String ], required: false, default: true },\n  hideHover: { type: String, required: false },\n  stacked: { type: [ Boolean, String ], required: false },\n  resize: { type: [ Boolean, String ], required: false },\n  horizontal: { type: [ Boolean, String ], required: false, default: false },\n  grid: { type: [ Boolean, String ], required: false, default: true },\n  gridTextColor: { type: String, required: false, default: '#888' },\n  gridTextSize: { type: [ Number, String ], required: false, default: 12 },\n  gridTextFamily: { type: String, required: false, default: 'sans-serif' },\n  gridTextWeight: { type: String, required: false, default: 'normal' },\n\n  colors: { type: [ String, Array ], required: false },\n  formatter: { type: Function, required: false },\n\n  lineColors: { type: [ String, Array, Function ], required: false },\n  xLabels: { type: String, required: false },\n  lineWidth: { type: [ Number, String ], required: false },\n  pointSize: { type: [ Number, String ], required: false },\n  pointFillColors: { type: [ String, Array ], required: false },\n  pointStrokeColors: {  type: [ String, Array ], required: false },\n  ymax: { type: String, required: false }, \n  ymin: { type: String, required: false },\n  smooth: { type: [ Boolean, String ], required: false, default: true },\n  parseTime: { type: [ Boolean, String ], required: false, default: true },\n  postUnits: { type: String, required: false },\n  preUnits: { type: String, required: false },\n  dateFormat: { type: Function, required: false },\n  xLabelFormat: { type: Function, required: false },\n  yLabelFormat: { type: Function, required: false },\n  xLabelAngle: { type: String, required: false },\n  goals: { type: [ String, Array ], required: false },\n  goalStrokeWidth: { type: [ Number, String ], required: false },\n  goalLineColors: { type: [ String, Array ], required: false },\n  events: { type: [ String, Array ], required: false },\n  eventStrokeWidth: { type: String, required: false },\n  eventLineColors: { type: [ String, Array ], required: false },\n  fillOpacity: { type: String, required: false },\n\n  behaveLikeLine: { type: [ Boolean, String ], required: false, default: false }\n}\n\n/**\n * Properties of a bar chart.\n */\nconst BarProps = {\n  id: Props.id,\n  data: Props.data,\n  barColors: Props.barColors,\n  xkey: Props.xkey,\n  ykeys: Props.ykeys,\n  labels: Props.labels,\n  xLabelFormat: Props.xLabelFormat,\n  yLabelFormat: Props.yLabelFormat,\n  xLabelAngle: Props.xLabelAngle,\n  hoverCallback: Props.hoverCallback,\n  grid: Props.grid,\n  horizontal: Props.horizontal,\n  axes: Props.axes,\n  hideHover: Props.hideHover,\n  stacked: Props.stacked,\n  resize: Props.resize,\n  ymax: Props.ymax,\n  ymin: Props.ymin,\n  gridTextColor: Props.gridTextColor,\n  gridTextSize: Props.gridTextSize,\n  gridTextFamily: Props.gridTextFamily,\n  gridTextWeight: Props.gridTextWeight\n}\n\n/**\n * Properties of a donut chart.\n */\nconst DonutProps = {\n  id: Props.id, \n  data: Props.data,\n  colors: Props.colors,\n  formatter: Props.formatter,\n  resize: Props.resize\n}\n\n/**\n * Properties of a line chart.\n */\nconst LineProps = {\n  id: Props.id, \n  data: Props.data,\n  resize: Props.resize,\n  lineColors: Props.lineColors,\n  xkey: Props.xkey,\n  ykeys: Props.ykeys,\n  labels: Props.labels,\n  xLabels: Props.xLabels,\n  grid: Props.grid,\n  gridTextColor: Props.gridTextColor,\n  gridTextSize: Props.gridTextSize,\n  gridTextFamily: Props.gridTextFamily,\n  gridTextWeight: Props.gridTextWeight,\n  lineWidth: Props.lineWidth,\n  pointSize: Props.pointSize,\n  pointFillColors: Props.pointFillColors,\n  pointStrokeColors: Props.pointStrokeColors,\n  ymax: Props.ymax,\n  ymin: Props.ymin,\n  smooth: Props.smooth,\n  hideHover: Props.hideHover,\n  parseTime: Props.parseTime,\n  postUnits: Props.postUnits,\n  preUnits: Props.preUnits,\n  dateFormat: Props.dateFormat,\n  xLabelFormat: Props.xLabelFormat,\n  yLabelFormat: Props.yLabelFormat,\n  xLabelAngle: Props.xLabelAngle,\n  goals: Props.goals,\n  goalStrokeWidth: Props.goalStrokeWidth,\n  goalLineColors: Props.goalLineColors,\n  events: Props.events,\n  eventStrokeWidth: Props.eventStrokeWidth,\n  eventLineColors: Props.eventLineColors,\n  fillOpacity: Props.fillOpacity,\n  hoverCallback: Props.hoverCallback\n}\n\n/**\n * Properties of an area chart.\n */\nconst AreaProps = {\n  behaveLikeLine: Props.behaveLikeLine\n}\n\nfor (var prop in LineProps) {\n    if (LineProps.hasOwnProperty(prop)) {\n        AreaProps[prop] = LineProps[prop];\n    }\n}\n\n/**\n * Common methods for all the charts.\n */\nconst ChartMethods = {\n  addOption (name, options) {\n    if (this[name]) {\n      options[name] = this[name]\n    }\n  },\n\n  addOptionAsObject (name, options) {\n    if (this[name]) {\n      options[name] = Converter.toObject(this[name])\n    }\n  }\n}\n\nexport default {\n  bar: {\n    props: BarProps,\n    methods: ChartMethods\n  },\n\n  donut: {\n    props: DonutProps,\n    methods: ChartMethods\n  },\n\n  line: {\n    props: LineProps,\n    methods: ChartMethods\n  },\n\n  area: {\n    props: AreaProps,\n    methods: ChartMethods\n  }\n}\n"
  },
  {
    "path": "src/components/donut-chart.vue",
    "content": "<template>\n  <div :id=\"id\"></div>\n</template>\n\n<script>\nimport 'morris.js/morris'\nimport 'morris.js/morris.css'\nimport Converter from '../util/converter'\nimport ChartProps from './chart-mixins'\n\nexport default {\n  name: 'donut-chart',\n\n  mixins: [ ChartProps.donut ],\n\n  data () {\n    return {\n      chart: null\n    }\n  },\n\n  watch: {\n    data (val) {\n      this.$nextTick(() => {\n        if (this.data && this.data.length > 0 && !this.chart) {\n          this.createChart ()\n        }\n\n        if (this.chart) {\n          if (this['colors']) {\n            this.chart.options['colors'] = Converter.toObject(this['colors'])\n          }\n\n          this.chart.setData(Converter.toObject(this.data))\n        }\n      })\n    }\n  },\n  \n  mounted () {\n    if (this.data && this.data.length > 0) {\n      this.createChart()\n    }\n  },\n\n  methods: {\n    createChart () {\n      let options = {\n        element: this.id,\n        data: Converter.toObject(this.data),\n        resize: Converter.toBoolean(this.resize)\n      }\n\n      this.addOptionAsObject('colors', options)\n      this.addOption('formatter', options)\n\n      this.chart = Morris.Donut(options)\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "src/components/line-chart.vue",
    "content": "<template>\n  <div :id=\"id\"></div>\n</template>\n\n<script>\nimport 'morris.js/morris'\nimport 'morris.js/morris.css'\nimport Converter from '../util/converter'\nimport ChartProps from './chart-mixins'\n\nexport default {\n  name: 'line-chart',\n\n  mixins: [ ChartProps.line ],\n\n  data () {\n    return {\n      chart: null\n    }\n  },\n\n  watch: {\n    data (val) {\n      this.$nextTick(() => {\n        this.chart.options.labels = Converter.toObject(this.labels)\n        this.chart.options.xkey = this.xkey\n        this.chart.options.ykeys = Converter.toObject(this.ykeys)\n\n        if (this['lineColors']) {\n          this.chart.options['lineColors'] = Converter.toObject(this['lineColors'])\n        }\n\n        this.chart.setData(Converter.toObject(this.data))\n      })\n    }\n  },\n\n  mounted () {\n    let options = {\n      element: this.id,\n      data: Converter.toObject(this.data),\n      resize: Converter.toBoolean(this.resize),\n      labels: Converter.toObject(this.labels),\n      xkey: this.xkey,\n      ykeys: Converter.toObject(this.ykeys),\n      grid: Converter.toBoolean(this.grid),\n      gridTextColor: this.gridTextColor,\n      gridTextSize: Converter.toInt(this.gridTextSize),\n      gridTextFamily: this.gridTextFamily,\n      gridTextWeight: this.gridTextWeight,\n      lineWidth: this.lineWidth,\n      pointSize: this.pointSize,\n      ymax: this.ymax,\n      ymin: this.ymin,\n      smooth: Converter.toBoolean(this.smooth),\n      hideHover: this.hideHover,\n      parseTime: Converter.toBoolean(this.parseTime),\n      postUnits: this.postUnits,\n      preUnits: this.preUnits,\n      xLabelAngle: this.xLabelAngle,\n      goalStrokeWidth: this.goalStrokeWidth,\n      eventStrokeWidth: this.eventStrokeWidth,\n      fillOpacity: this.fillOpacity\n    }\n\n    this.addOptionAsObject('lineColors', options)\n    this.addOption('xLabels', options)\n    this.addOptionAsObject('pointFillColors', options)\n    this.addOptionAsObject('pointStrokeColors', options)\n    this.addOption('dateFormat', options)\n    this.addOption('xLabelFormat', options)\n    this.addOption('yLabelFormat', options)\n    this.addOptionAsObject('goals', options)\n    this.addOptionAsObject('goalLineColors', options)\n    this.addOptionAsObject('events', options)\n    this.addOptionAsObject('eventLineColors', options)\n    this.addOption('hoverCallback', options)\n\n    this.chart = Morris.Line(options)\n  }\n}\n</script>\n"
  },
  {
    "path": "src/index.js",
    "content": "import DonutChart from './components/donut-chart.vue'\nimport BarChart from './components/bar-chart.vue'\nimport LineChart from './components/line-chart.vue'\nimport AreaChart from './components/area-chart.vue'\n\nconst VueMorris = {\n  DonutChart, BarChart, LineChart, AreaChart\n}\n\nmodule.exports = VueMorris\n"
  },
  {
    "path": "src/util/converter.js",
    "content": "const Converter = {\n  toObject: function (data) {\n    if (typeof data === 'string') {\n      return JSON.parse(data)\n    }\n    return data\n  },\n\n  toBoolean: function (data) {\n    if (typeof data === 'string') {\n      return data === 'true'\n    }\n    return data\n  },\n\n  toInt: function(data) {\n    if (typeof data === 'string') {\n      return parseInt(data)\n    }\n    return data\n  },\n}\n\nmodule.exports = Converter\n"
  }
]