[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\"es2015\"]\n}"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules/\nnpm-debug.log\n.idea/\ndev/"
  },
  {
    "path": ".npmignore",
    "content": "dev/\nbuild/\nindex.html"
  },
  {
    "path": "README.md",
    "content": "# Docs\nhttps://vuematerials.com\n\n# Deprecated\n\nThis project is no longer maintained, please see [Vuetify](https://github.com/vuetifyjs/vuetify)\n"
  },
  {
    "path": "build/release.sh",
    "content": "set -e\necho \"Enter release version: \"\nread VERSION\n\nread -p \"Releasing $VERSION - are you sure (y/n)\" -n 1 -r\necho #\nif [[ $REPLY =~ ^[Yy]$ ]]\nthen\n  echo \"Releasing $VERSION ...\"\n\n  npm run build\n  git add -A\n  git commit -m \"[build] $VERSION\"\n  npm version $VERSION --message \"[release] $VERSION\"\n\n  git push\n  npm publish\nfi\n"
  },
  {
    "path": "build/webpack.config.js",
    "content": "var path = require('path')\nvar webpack = require('webpack')\n\nmodule.exports = {\n  entry: './src/index.js',\n  output: {\n    path: path.resolve(__dirname, '../dist'),\n    filename: 'vue-materials.min.js',\n    library: 'VueMaterials',\n    libraryTarget: 'umd'\n  },\n  resolveLoader: {\n    root: path.join(__dirname, 'node_modules'),\n  },\n  module: {\n    loaders: [\n      {\n        test: /\\.vue$/,\n        loader: 'vue'\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel',\n        exclude: /node_modules/\n      },\n      {\n        test: /\\.scss$/,\n        loaders: ['style', 'css', 'sass']\n      },\n      {\n        test: /\\.(png|jpg|gif|svg)$/,\n        loader: 'file',\n        query: {\n          name: '[name].[ext]?[hash]'\n        }\n      },\n      {\n          test: /\\.(eot|svg|ttf|woff|woff2)$/,\n          loader: 'file?name=/fonts/[name].[ext]'\n      }\n    ]\n  },\n  devServer: {\n    historyApiFallback: true,\n    noInfo: true\n  },\n  devtool: '#eval-source-map'\n}\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports.devtool = '#source-map'\n  // http://vue-loader.vuejs.org/en/workflow/production.html\n  module.exports.plugins = (module.exports.plugins || []).concat([\n    new webpack.DefinePlugin({\n      'process.env': {\n        NODE_ENV: '\"production\"'\n      }\n    }),\n    new webpack.optimize.UglifyJsPlugin({\n      compress: {\n        warnings: true\n      }\n    })\n  ])\n}\n"
  },
  {
    "path": "build/webpack.dev.config.js",
    "content": "var path = require('path')\nvar webpack = require('webpack')\n\nmodule.exports = {\n  entry: './dev/index.js',\n  output: {\n    path: path.resolve(__dirname, '../dev'),\n    publicPath: '/dev/',\n    filename: 'dev.js'\n  },\n  resolveLoader: {\n    root: path.join(__dirname, 'node_modules'),\n  },\n  module: {\n    loaders: [\n      {\n        test: /\\.vue$/,\n        loader: 'vue'\n      },\n      {\n        test: /\\.js$/,\n        loader: 'babel',\n        exclude: /node_modules|dist/\n      },\n      {\n        test: /\\.scss$/,\n        loaders: ['style', 'css', 'sass']\n      },\n      {\n        test: /\\.(png|jpg|gif|svg)$/,\n        loader: 'file',\n        query: {\n          name: '[name].[ext]?[hash]'\n        }\n      },\n      {\n          test: /\\.(eot|svg|ttf|woff|woff2)$/,\n          loader: 'file?name=/fonts/[name].[ext]'\n      }\n    ]\n  },\n  devServer: {\n    historyApiFallback: true,\n    noInfo: true\n  },\n  devtool: '#eval-source-map'\n}\n"
  },
  {
    "path": "index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <title>vue-materialize</title>\n    <link href=\"http://fonts.googleapis.com/icon?family=Material+Icons\" rel=\"stylesheet\">\n    <link href=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css\" rel=\"stylesheet\">\n  </head>\n  <body>\n    <div id=\"app\">\n    </div>\n    <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js\"></script>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js\"></script>\n    <script src=\"/dev/dev.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"vue-materials\",\n  \"description\": \"Materialize.css components for Vue JS\",\n  \"author\": \"John Leider <john.j.leider@gmail.com>\",\n  \"version\": \"1.0.7-rc.7\",\n  \"private\": false,\n  \"main\": \"dist/vue-materials.min.js\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"dev\": \"webpack-dev-server --inline --hot --host=0.0.0.0 --port=8082 --config=build/webpack.dev.config.js\",\n    \"build\": \"cross-env NODE_ENV=production webpack  --progress --hide-modules --config=build/webpack.config.js\"\n  },\n  \"dependencies\": {\n    \"vue\": \"^2.0.1\"\n  },\n  \"devDependencies\": {\n    \"babel-cli\": \"^6.10.1\",\n    \"babel-core\": \"^6.0.0\",\n    \"babel-loader\": \"^6.0.0\",\n    \"babel-preset-es2015\": \"^6.0.0\",\n    \"cross-env\": \"^1.0.6\",\n    \"css-loader\": \"^0.23.1\",\n    \"file-loader\": \"^0.8.4\",\n    \"materialize-css\": \"^0.97.6\",\n    \"node-sass\": \"^3.8.0\",\n    \"rollup\": \"^0.33.0\",\n    \"rollup-plugin-babel\": \"^2.6.1\",\n    \"rollup-plugin-vue\": \"^2.0.1\",\n    \"sass-loader\": \"^4.0.0\",\n    \"style-loader\": \"^0.13.1\",\n    \"uglify-js\": \"^2.7.0\",\n    \"vue-hot-reload-api\": \"^2.0.5\",\n    \"vue-loader\": \"^9.1.2\",\n    \"webpack\": \"^1.13.1\",\n    \"webpack-dev-server\": \"^1.12.0\"\n  }\n}\n"
  },
  {
    "path": "src/components/_index.js",
    "content": "import VFooter from './footer.vue'\nimport VNav from './nav.vue'\nimport VSideNav from './side-nav.vue'\nimport VBadge from './badge.vue'\nimport VBreadcrumbs from './breadcrumbs.vue'\nimport VBtn from './button.vue'\nimport VBtnLink from './button-link.vue'\nimport VCard from './card.vue'\nimport VCarousel from './carousel.vue'\nimport VCarouselItem from './carousel-item.vue'\nimport VCheckbox from './checkbox.vue'\nimport VChip from './chip.vue'\nimport VCollapsible from './collapsible.vue'\nimport VCollection from './collection.vue'\nimport VCollectionItem from './collection-item.vue'\nimport VCollectionLink from './collection-link.vue'\nimport VCollectionAvatar from './collection-avatar.vue'\nimport VDateInput from './date-input.vue'\nimport VFileInput from './file-input.vue'\nimport VIcon from './icon.vue'\nimport VMaterialBox from './material-box.vue'\nimport VModal from './modal.vue'\nimport VFab from './fab.vue'\nimport VPagination from './pagination.vue'\nimport VPaginationItem from './pagination-item.vue'\nimport VParallax from './parallax.vue'\nimport VProgressLinear from './progress-linear.vue'\nimport VProgressCircular from './progress-circular.vue'\nimport VRadio from './radio.vue'\nimport VRange from './range.vue'\nimport VSelect from './select.vue'\nimport VSlider from './slider.vue'\nimport VSlide from './slide.vue'\nimport VSwitch from './switch.vue'\nimport VTab from './tab.vue'\nimport VTabs from './tabs.vue'\nimport VTextArea from './text-area.vue'\nimport VTextInput from './text-input.vue'\n\nexport default {\n    VFooter,\n    VNav,\n    VSideNav,\n    VBadge,\n    VBreadcrumbs,\n    VBtn,\n    VBtnLink,\n    VCard,\n    VCarousel,\n    VCarouselItem,\n    VChip,\n    VCollapsible,\n    VCollection,\n    VCollectionItem,\n    VCheckbox,\n    VCollectionLink,\n    VCollectionAvatar,\n    VDateInput,\n    VFileInput,\n    VIcon,\n    VMaterialBox,\n    VModal,\n    VFab,\n    VPagination,\n    VPaginationItem,\n    VParallax,\n    VProgressLinear,\n    VProgressCircular,\n    VRadio,\n    VRange,\n    VSelect,\n    VSlider,\n    VSlide,\n    VSwitch,\n    VTab,\n    VTabs,\n    VTextArea,\n    VTextInput\n}"
  },
  {
    "path": "src/components/badge.vue",
    "content": "<template>\n    <span class=\"badge\"\n          :class=\"classes\"\n    >\n        <slot></slot>\n    </span>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            new: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'new': this.new\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/breadcrumbs.vue",
    "content": "<template>\n    <nav>\n        <div class=\"nav-wrapper\">\n            <div class=\"col s12\">\n                <a v-for=\"crumb in items\"\n                   :href=\"crumb.href\" \n                   class=\"breadcrumb\"\n                >\n                    {{ crumb.text }}    \n                </a>\n                <slot></slot>\n            </div>\n        </div>\n    </nav>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            items: {\n                type: Array,\n                default: () => []\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/button-link.vue",
    "content": "<template>\n    <a :class=\"classes\"\n       :href=\"href\"\n       :data-induration=\"induration\"\n       :data-outduration=\"outduration\"\n       :data-constrainwidth=\"constrainwidth\"\n       :data-hover=\"hover\"\n       :data-gutter=\"gutter\"\n       :data-beloworigin=\"beloworigin\"\n       :data-alignment=\"alignment\"\n    >\n        <slot></slot>\n    </a>\n</template>\n\n<script type=\"text/babel\">\n    import Buttons from '../mixins/buttons'\n    import Waves from '../mixins/waves'\n    import Dropdown from '../mixins/dropdown'\n    \n    export default {\n        mixins: [\n            Buttons,\n            Waves,\n            Dropdown\n        ],\n\n        props: {\n            href: {\n                type: String,\n                default: '#!'\n            }\n        },\n\n        computed: {\n            classes () {\n                return Object.assign(\n                    this.buttonsMixin,\n                    this.wavesMixin\n                )\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/button.vue",
    "content": "<template>\n    <button :class=\"classes\"\n            :type=\"type\"\n            :data-induration=\"induration\"\n            :data-outduration=\"outduration\"\n            :data-constrainwidth=\"constrainwidth\"\n            :data-hover=\"hover\"\n            :data-gutter=\"gutter\"\n            :data-beloworigin=\"beloworigin\"\n            :data-alignment=\"alignment\"\n    >\n        <slot></slot>\n    </button>\n</template>\n\n<script type=\"text/babel\">\n    import Buttons from '../mixins/buttons'\n    import Waves from '../mixins/waves'\n    import Dropdown from '../mixins/dropdown'\n\n    export default {\n        mixins: [\n            Buttons,\n            Waves,\n            Dropdown\n        ],\n\n        props: {\n            type: {\n                type: String,\n                default: 'button'\n            }\n        },\n\n        computed: {\n            classes () {\n                return Object.assign(\n                    this.buttonsMixin,\n                    this.wavesMixin\n                )\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/card.vue",
    "content": "<template>\n    <div :class=\"classes\">\n        <slot></slot>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            large: {\n                type: Boolean,\n                default: false\n            },\n\n            medium: {\n                type: Boolean,\n                default: false\n            },\n\n            panel: {\n                type: Boolean,\n                default: false\n            },\n\n            small: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'card': !this.panel,\n                    'card-panel': this.panel,\n                    'large': this.large,\n                    'medium': this.medium,\n                    'small': this.small\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/carousel-item.vue",
    "content": "<template>\n    <a href=\"#!\"\n       class=\"carousel-item\"\n    >\n        <img :src=\"src\">\n        <slot></slot>\n    </a>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            src: {\n                type: String,\n                required: true\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/carousel.vue",
    "content": "<template>\n    <div class=\"carousel\"\n         :class=\"classes\"\n         :style=\"styles\"\n    >\n        <v-carousel-item v-for=\"i in items\"\n                       :src=\"i\"\n        ></v-carousel-item>\n        <slot></slot>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n        \n        props: {\n            height: {\n                type: Number,\n                default: 300\n            },\n\n            dist: {\n                type: Number,\n                default: -100\n            },\n            \n            timeConstant: {\n                type: Number,\n                default: 200\n            },\n\n            shift: {\n                type: Number,\n                default: 0\n            },\n\n            padding: {\n                type: Number,\n                default: 0\n            },\n\n            full_width: {\n                type: Boolean,\n                default: false\n            },\n\n            slider: {\n                type: Boolean,\n                default: false\n            },\n\n            items: {\n                type: Array,\n                default: () => []\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'carousel-slider': this.slider\n                }\n            },\n\n            styles () {\n                return {\n                    'height': this.height\n                }\n            },\n\n            params () {\n                return {\n                    time_constant: this.timeConstant,\n                    dist: this.dist,\n                    shift: this.shift,\n                    padding: this.padding,\n                    full_width: this.fullWidth\n                }\n            }\n        },\n\n        methods: {\n            init () {\n                $(this.$el).carousel(this.params)\n            },\n\n            next (n = 1) {\n                $(this.$el).carousel('next', [n])\n                this.$emit('next')\n            },\n\n            prev (n = 1) {\n                $(this.$el).carousel('prev', [n])\n                this.$emit('prev')\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/checkbox.vue",
    "content": "<template>\n    <p>\n      <input type=\"checkbox\"\n             :id=\"id || name\"\n             :name=\"name\"\n             :disabled=\"disabled\"\n             :class=\"classes\"\n             ref=\"checkbox\"\n      >\n      <label :for=\"id || name\">\n          <slot></slot>\n      </label>\n    </p>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            id: String,\n\n            name: {\n                type: String,\n                required: true\n            },\n\n            checked: {\n                type: Boolean,\n                default: false\n            },\n\n            value: {\n                required: false\n            },\n\n            disabled: {\n                type: Boolean,\n                default: false\n            },\n\n            indeterminate: {\n                type: Boolean,\n                default: false\n            },\n\n            filledIn: {\n                type: Boolean,\n                default: false\n            },\n\n            valueV: {\n                required: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'filled-in': this.filledIn\n                }\n            }\n        },\n\n        watch: {\n            value () {\n                if (Array.isArray(this.value)) {\n                    const index = this.value.indexOf(this.valueV)\n\n                    if (index !== -1) {\n                        this.$refs.checkbox.checked = true\n                    } else {\n                        this.$refs.checkbox.checked = false\n                    }\n                } else {\n                    this.$refs.checkbox.checked = this.value\n                }\n                this.check()\n            }\n        },\n\n        mounted () {\n            if (this.indeterminate) {\n                this.$refs.checkbox.indeterminate = true\n            }\n\n            this.check()\n\n            const vm = this\n            this.$refs.checkbox.onchange = function () {\n                let value = vm.value\n                if (Array.isArray(vm.value)) {\n                    const index = vm.value.indexOf(vm.valueV)\n\n                    if (index !== -1) {\n                        value.splice(index, 1)\n                    } else {\n                        value = vm.value\n                        value.push(vm.valueV)\n                    }\n                }\n\n                vm.$emit('input', value)\n            }\n        },\n\n        methods: {\n            check () {\n                if ((Array.isArray(this.value) &&\n                    this.value.includes(this.valueV)) ||\n                        (!Array.isArray(this.value) &&\n                            this.value)\n                ) {\n                    this.$refs.checkbox.setAttribute('checked', true)\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/chip.vue",
    "content": "<template>\n    <div class=\"chip\"\n         v-if=\"!remove\"\n    >\n        <slot></slot>\n        <v-icon v-if=\"close\">close</v-icon>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        events: {\n            close () {\n                this.remove = true\n            }\n        },\n\n        data () {\n            return {\n                remove: false\n            }\n        },\n\n        props: {\n            close: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        methods: {\n            init () {\n                if (this.remove) {\n                    this.$el.addEventListener('click', () => this.$emit('close'))\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/collapsible.vue",
    "content": "<template>\n    <ul class=\"collapsible\"\n        :data-collapsible=\"type\"\n        :class=\"classes\"\n    >\n        <slot></slot>\n    </ul>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            collapse: {\n                type: Boolean,\n                default: false\n            },\n\n            expand: {\n                type: Boolean,\n                default: false\n            },\n\n            popout: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'popout': this.popout\n                }\n            },\n\n            params () {\n                return {\n                    accordion: this.type === 'accordion'\n                }\n            },\n\n            type () {\n                if (this.collapse) return 'accordion'\n                if (this.expand)  return 'expandable'\n            }\n        },\n\n        methods: {\n            init () {\n                $(this.$el).collapsible(this.params)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/collection-avatar.vue",
    "content": "<template>\n    <li class=\"avatar\"\n        :class=\"classes\"\n    >\n        <img :src=\"src\" \n             class=\"circle\"\n        >\n        <slot></slot>\n        <a href=\"#!\" \n           class=\"secondary-content\"\n        >\n            <slot name=\"secondary\"></slot>\n        </a>\n    </li>\n</template>\n\n<script type=\"text/babel\">\n    import CollectionItem from '../mixins/collection-item'\n\n    export default {\n        mixins: [\n            CollectionItem\n        ],\n\n        props: {\n            src: {\n                type: String,\n                required: true\n            }\n        },\n\n        computed: {\n            classes () {\n                return this.collectionsMixin\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/collection-item.vue",
    "content": "<template>\n    <li :class=\"classes\">\n        <slot></slot>\n        <a href=\"#!\" \n           class=\"secondary-content\"\n        >\n            <slot name=\"secondary\"></slot>\n        </a>\n    </li>\n</template>\n\n<script type=\"text/babel\">\n    import CollectionItem from '../mixins/collection-item'\n\n    export default {\n        mixins: [\n            CollectionItem\n        ],\n\n        computed: {\n            classes () {\n                return this.collectionsMixin\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/collection-link.vue",
    "content": "<template>\n    <a href=\"#!\"\n       :class=\"classes\"\n    >\n        <slot></slot>\n        <a href=\"#!\" \n           class=\"secondary-content\"\n        >\n            <slot name=\"secondary\"></slot>\n        </a>\n    </a>\n</template>\n\n<script type=\"text/babel\">\n    import CollectionItem from '../mixins/collection-item'\n\n    export default {\n        mixins: [\n            CollectionItem\n        ],\n\n        computed: {\n            classes () {\n                return this.collectionsMixin\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/collection.vue",
    "content": "<template>\n    <ul class=\"collection\"\n        :class=\"classes\"\n    >\n        <slot></slot>\n    </ul>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            withHeader: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'with-header': this.withHeader\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/date-input.vue",
    "content": "<template>\n    <input type=\"date\" \n           class=\"datepicker\"\n    >\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            value: {\n                type: String\n            },\n            format: {\n                type: String\n            }\n        },\n\n        methods: {\n            init () {\n                if (this.format) $(this.$el).pickadate({format: this.format})\n                else $(this.$el).pickadate()\n\n                const picker = $(this.$el).pickadate('picker')\n                picker.set('select', this.value)\n\n                const vm = this\n                this.$el.onchange = function () {\n                    if (vm.format)\n                        vm.$emit('input', picker.get('select', vm.format))\n                    else\n                        vm.$emit('input', picker.get('select', 'd mmmm, yyyy'))\n                }\n            }\n        }    \n    }\n</script>\n"
  },
  {
    "path": "src/components/fab.vue",
    "content": "<template>\n    <div class=\"fixed-action-btn\"\n         :class=\"classes\"\n    >\n        <v-btn-link large\n                  floating\n        >\n            <v-icon>{{ icon }}</v-icon>\n        </v-btn-link>\n        <slot name=\"items\"></slot>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            icon: {\n                type: String,\n                required: true\n            },\n            \n            horizontal: {\n                type: Boolean,\n                default: false\n            },\n\n            toggle: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'click-to-toggle': this.toggle,\n                    'horizontal': this.horizontal\n                }\n            }\n        },\n\n        methods: {\n            open () {\n                $(this.$el).openFAB()\n                this.$emit('open')\n            },\n\n            close () {\n                $(this.$el).closeFAB()\n                this.$emit('close')\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/file-input.vue",
    "content": "<template>\n    <div class=\"file-field input-field\">\n        <div class=\"btn\">\n            <span>File</span>\n            <input type=\"file\"\n                   :multiple=\"multiple\"\n            >\n        </div>\n        <div class=\"file-path-wrapper\">\n            <v-text-input class=\"file-path validate\"></v-text-input>\n        </div>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            multiple: {\n                type: Boolean,\n                default: false\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/footer.vue",
    "content": "<template>\n    <footer class=\"page-footer\">\n        <slot name=\"content\"></slot>\n        <div class=\"footer-copyright\">\n            <slot name=\"copyright\"></slot>\n        </div>\n    </footer>\n</template>\n"
  },
  {
    "path": "src/components/functional/_index.js",
    "content": "import VRow from './row'\nimport VGrid from './grid'\nimport VContainer from './container'\nimport VCollapsibleHeader from './collapsible-header'\nimport VCollapsibleBody from './collapsible-body'\nimport VDropdown from './dropdown'\n\nexport default {\n    VRow,\n    VGrid,\n    VContainer,\n    VCollapsibleHeader,\n    VCollapsibleBody,\n    VDropdown\n}\n"
  },
  {
    "path": "src/components/functional/collapsible-body.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        if (!data.staticClass) {\n            data.staticClass = ''\n        }\n\n        data.staticClass += ' collapsible-body'\n\n        return h('div', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/functional/collapsible-header.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        if (!data.staticClass) {\n            data.staticClass = ''\n        }\n\n        data.staticClass += ' collapsible-header'\n\n        return h('div', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/functional/container.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        data.staticClass = data.staticClass || ''\n        data.staticClass += ' container'\n\n        return h('div', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/functional/dropdown.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        if (!data.staticClass) {\n            data.staticClass = ''\n        }\n\n        data.staticClass += ' dropdown-content'\n\n        return h('ul', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/functional/grid.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        let attrs = Object.keys(data.attrs)\n        attrs.unshift('col')\n        data.attrs = {}\n        data.attrs.class = attrs.join(' ')\n\n        return h('div', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/functional/row.js",
    "content": "export default {\n    functional: true,\n\n    render: (h, { data, children }) => {\n        data.staticClass = data.staticClass || ''\n        data.staticClass += ' row'\n\n        return h('div', data, children)\n    }\n}\n"
  },
  {
    "path": "src/components/icon.vue",
    "content": "<template>\n    <i class=\"material-icons\"\n       :class=\"classes\"\n    >\n        <slot></slot>\n    </i>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            tiny: {\n                type: Boolean,\n                default: false\n            },\n            \n            small: {\n                type: Boolean,\n                default: false\n            },\n            \n            medium: {\n                type: Boolean,\n                default: false\n            },\n\n            large: {\n                type: Boolean,\n                default: false\n            },\n\n            prefix: {\n                type: Boolean,\n                default: false\n            },\n\n            right: {\n                type: Boolean,\n                default: false\n            },\n\n            left: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'tiny': this.tiny,\n                    'small': this.small,\n                    'medium': this.medium,\n                    'large': this.large,\n                    'prefix': this.prefix,\n                    'right': this.right,\n                    'left': this.left\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/material-box.vue",
    "content": "<template>\n    <img class=\"materialboxed\" \n         :width=\"width\"\n         :src=\"src\"\n         :data-caption=\"caption\"\n    >\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            caption: {\n                type: [Boolean, String],\n                default: false\n            },\n\n            src: {\n                type: String,\n                required: true\n            },\n\n            width: {\n                type: [Boolean, Number, String],\n                default: '100%'\n            }\n        },\n\n        methods: {\n            init () {\n                $(this.$el).materialbox()\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/modal.vue",
    "content": "<template>\n    <div :id=\"id\" \n         :class=\"classes\"\n         class=\"modal\"\n    >\n        <div class=\"modal-content\">\n            <slot name=\"content\"></slot>\n        </div>\n        <div class=\"modal-footer\">\n            <slot name=\"footer\"></slot>\n        </div>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            bottomSheet: {\n                type: Boolean,\n                default: false\n            },\n\n            id: {\n                type: String,\n                required: true\n            },\n\n            fixedFooter: {\n                type: Boolean,\n                default: false\n            },\n\n            params: {\n                type: Object,\n                default: () => {}\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'bottom-sheet': this.bottomSheet,\n                    'modal-fixed-footer': this.fixedFooter\n                }\n            }\n        },\n\n        methods: {\n            close () {\n                $(this.$el).closeModal()\n                this.$emit('close')\n            },\n            \n            open () {\n                $(this.$el).openModal()\n                this.$emit('open')\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/nav.vue",
    "content": "<template>\n    <div :class=\"{ 'navbar-fixed': fixed }\">\n        <nav :class=\"[navClass]\">\n            <div class=\"nav-wrapper\">\n                <slot name=\"logo\"></slot>\n                <slot></slot>\n                <slot name=\"side-nav\"></slot>\n            </div>\n        </nav>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            navClass: {\n                type: String,\n                default: ''\n            },\n\n            fixed: {\n                type: Boolean,\n                default: false\n            }\n        }\n    }\n</script>"
  },
  {
    "path": "src/components/pagination-item.vue",
    "content": "<template>\n    <li :class=\"classes\"\n        @click.prevent=\"click\"\n    >\n        <a href=\"#!\">\n            <slot></slot>\n        </a>\n    </li>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            active: {\n                type: Boolean,\n                default: false\n            },\n\n            color: {\n                type: String,\n                default: ''\n            },\n\n            disabled: {\n                type: Boolean,\n                default: false\n            },\n\n            waves: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'active': this.active,\n                    [this.color]: this.active,\n                    'disabled': this.disabled,\n                    'waves-effect': this.waves\n                }\n            }\n        },\n\n        methods: {\n            click () {\n                if (!this.disabled) {\n                    this.$emit('click')\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/pagination.vue",
    "content": "<template>\n    <ul class=\"pagination\">\n        <v-pagination-item :disabled=\"value === 1\"\n                         @click=\"prev\"\n        >\n            <i class=\"material-icons\">chevron_left</i>\n        </v-pagination-item>\n        <v-pagination-item v-if=\"length > 0\"\n                         v-for=\"n in length\"\n                         :active=\"value === n\"\n                         :waves=\"waves\"\n                         :color=\"color\"\n                         @click=\"page(n)\"\n        >\n            {{ n }}\n        </v-pagination-item>\n        <v-pagination-item :disabled=\"value === length\"\n                         @click=\"next\"\n        >\n            <i class=\"material-icons\">chevron_right</i>\n        </v-pagination-item>\n    </ul>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            active: {\n                type: Boolean,\n                default: false\n            },\n\n            value: {\n                type: [Number, String],\n                default: 0\n            },\n\n            color: {\n                type: String,\n                default: ''\n            },\n\n            length: {\n                type: Number,\n                default: 0\n            },\n\n            waves: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        methods: {\n            next () {\n                this.$emit('input', this.value + 1)\n            },\n\n            page (n) {\n                this.$emit('input', n)\n            },\n\n            prev () {\n                this.$emit('input', this.value - 1)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/parallax.vue",
    "content": "<template>\n    <div class=\"parallax-container\"\n         :style=\"style\"\n    >\n        <div class=\"parallax\">\n            <img :src=\"src\">\n        </div>\n        <slot></slot>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            height: {\n                type: Number,\n                default: 500\n            },\n\n            src: {\n                type: String,\n                required: true\n            }\n        },\n\n        computed: {\n            style () {\n                return {\n                    height: `${this.height}px`\n                }\n            }\n        },\n\n        methods: {\n            init () {\n                $('.parallax').parallax()\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/progress-circular.vue",
    "content": "<template>\n    <div class=\"preloader-wrapper\"\n         :class=\"wrapper_classes\"\n    >\n        <div class=\"spinner-layer\"\n             :class=\"classes\"\n        >\n            <div class=\"circle-clipper left\">\n                <div class=\"circle\"></div>\n            </div>\n            <div class=\"gap-patch\">\n                <div class=\"circle\"></div>\n            </div>\n            <div class=\"circle-clipper right\">\n                <div class=\"circle\"></div>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            active: {\n                type: Boolean,\n                default: false\n            },\n\n            blue: {\n                type: Boolean,\n                default: false\n            },\n\n            blueFlash: {\n                type: Boolean,\n                default: false\n            },\n\n            green: {\n                type: Boolean,\n                default: false\n            },\n\n            greenFlash: {\n                type: Boolean,\n                default: false\n            },\n\n            small: {\n                type: Boolean,\n                default: false\n            },\n\n            large: {\n                type: Boolean,\n                default: false\n            },\n\n            red: {\n                type: Boolean,\n                default: false\n            },\n\n            redFlash: {\n                type: Boolean,\n                default: false\n            },\n\n            yellow: {\n                type: Boolean,\n                default: false\n            },\n\n            yellowFlash: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'spinner-blue-only': this.blue,\n                    'spinner-red-only': this.red,\n                    'spinner-green-only': this.green,\n                    'spinner-yellow-only': this.yellow,\n                    'spinner-blue': this.blueFlash,\n                    'spinner-red': this.redFlash,\n                    'spinner-green': this.greenFlash,\n                    'spinner-yellow': this.yellowFlash\n                }\n            },\n\n            wrapper_classes () {\n                return {\n                    'active': this.active,\n                    'small': this.small,\n                    'large': this.large\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/progress-linear.vue",
    "content": "<template>\n    <div class=\"progress\">\n        <div :class=\"classes\" \n             :style=\"style\"\n        ></div>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            determinate: {\n                type: Boolean,\n                default: false\n            },\n\n            indeterminate: {\n                type: Boolean,\n                default: false\n            },\n\n            value: {\n                type: [String, Number]\n            },\n\n            width: {\n                type: [String, Number]\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'determinate': this.determinate,\n                    'indeterminate': this.indeterminate\n                }\n            },\n\n            style () {\n                if (!this.width && !this.value) {\n                    return {}\n                }\n\n                const value = this.value ? this.value : this.width\n\n                return {\n                    'width': value\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/radio.vue",
    "content": "<template>\n    <p>\n      <input type=\"radio\"\n             :id=\"id\"\n             :name=\"name\"\n             :disabled=\"disabled\"\n             :class=\"classes\"\n             :value=\"val\"\n             ref=\"radio\"\n      >\n      <label :for=\"id\">\n          <slot></slot>\n      </label>\n    </p>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            id: {\n                type: String,\n                required: true\n            },\n\n            name: {\n                type: String\n            },\n\n            checked: {\n                type: Boolean,\n                default: false\n            },\n\n            val: {\n                type: [String, Number]\n            },\n\n            value: {\n                type: [String, Number]\n            },\n\n            disabled: {\n                type: Boolean,\n                default: false\n            },\n\n            withGap: {\n                type: Boolean,\n                default: false\n            }\n        },\n\n        watch: {\n            value () {\n                this.$refs.radio.checked = this.value == this.val\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'with-gap': this.withGap\n                }\n            }\n        },\n\n        mounted () {\n            this.$refs.radio.checked = this.$refs.radio.value == this.value || this.checked\n\n            const vm = this\n            this.$refs.radio.onchange = function () {\n                vm.$emit('input', this.value)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/range.vue",
    "content": "<template>\n    <p class=\"range-field\">\n        <input type=\"range\"\n               :min=\"min\"\n               :max=\"max\"\n               :value=\"value\"\n               ref=\"range\"\n        >\n    </p>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            max: {\n                type: [String, Number],\n                default: 100\n            },\n\n            min: {\n                type: [String, Number],\n                default: 0\n            },\n\n            value: {\n                type: [String, Number]\n            }\n        },\n\n        mounted () {\n            const vm = this\n            this.$refs.range.onchange = function () {\n                vm.$emit('input', this.value)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/select.vue",
    "content": "<template>\n    <select v-model=\"model\" v-bind:multiple=\"multiple\">\n        <option value=\"\"\n                disabled\n        >{{ selectText }}</option>\n        <option v-for=\"item in items\"\n                v-bind:value=\"item.id\"\n                v-text=\"item[textField]\"\n        ></option>\n        <slot></slot>\n    </select>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        props: {\n            items: {\n                type: Array,\n                default: () => []\n            },\n            multiple: {\n                type: Boolean,\n                default: false\n            },\n            selectText: {\n                type: String,\n                default: 'Choose your options'\n            },\n            value: {\n                default: null,\n                required: false\n            },\n            textField: {\n                type: String,\n                default: 'text'\n            }\n        },\n\n        watch: {\n            items () {\n                this.$el.removeAttribute('onchange')\n                this.$nextTick(this.init)\n            },\n            value () {\n                this.$el.removeAttribute('onchange')\n                this.$nextTick(this.init)\n            }\n        },\n\n        computed: {\n            model () {\n                if (this.multiple && !this.value) {\n                    return []\n                }\n\n                return this.value\n            }\n        },\n\n        mixins: [\n            IsLoadable\n        ],\n\n        methods: {\n            init () {\n                $(this.$el).material_select()\n\n                const vm = this\n                this.$el.onchange = function () {\n                    if (!this.multiple) {\n                        vm.$emit('input', this.value)\n                    } else {\n                        vm.multi(this, vm)\n                    }\n                }\n            },\n\n            multi (context, vm) {\n                const siblings = [...vm.$el.previousSibling.getElementsByClassName('active')].map(i => {\n                    return i.getElementsByTagName('label')[0].nextSibling.nodeValue\n                })\n\n                const options = [...context.getElementsByTagName('option')]\n                let array = []\n                \n                siblings.forEach(i => {\n                    const option = options.find(j => j.textContent == i)\n                    \n                    if (option) {\n                        array.push(option.value)\n                    }\n                })\n\n                vm.$emit('input', array)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/side-nav.vue",
    "content": "<template>\n    <ul :id=\"id\" \n        :class=\"options\"\n        class=\"side-nav\"\n    >\n        <slot></slot>\n    </ul>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            fixed: {\n                type: Boolean,\n                default: false\n            },\n\n            id: {\n                type: String,\n                required: true\n            }\n        },\n\n        computed: {\n            options () {\n                return {\n                    'fixed': this.fixed\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/slide.vue",
    "content": "<template>\n    <li>\n        <img :src=\"src\">\n        <div class=\"caption\"\n             :class=\"classes\"\n        >\n            <slot></slot>\n        </div>\n    </li>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            center: {\n                type: Boolean,\n                default: false\n            },\n\n            left: {\n                type: Boolean,\n                default: false\n            },\n\n            right: {\n                type: Boolean,\n                default: false\n            },\n\n            src: {\n                type: String,\n                required: true\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'left-align': this.left,\n                    'center-align': this.center,\n                    'right-align': this.right\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/slider.vue",
    "content": "<template>\n    <div class=\"slider\"\n         :class=\"classes\"\n    >\n        <ul class=\"slides\">\n            <slot></slot>\n        </ul>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            fullWidth: {\n                type: Boolean,\n                default: false\n            },\n\n            indicators: {\n                type: Boolean,\n                default: true\n            },\n\n            height: {\n                type: Number,\n                default: 400\n            },\n\n            transition: {\n                type: Number,\n                default: 500\n            },\n\n            interval: {\n                type: Number,\n                default: 6000\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'fullscreen': this.fullWidth\n                }\n            },\n\n            params () {\n                return {\n                    full_width: this.fullWidth,\n                    indicators: this.indicators,\n                    height: this.height,\n                    transition: this.transition,\n                    interval: this.interval\n                }\n            }\n        },\n\n        methods: {\n            init () {\n                $(this.$el).slider(this.params)\n            },\n\n            pause () {\n                $(this.$el).slider('pause')\n                this.$emit('pause')\n            },\n\n            start () {\n                $(this.$el).slider('start')\n                this.$emit('start')\n            },\n\n            next () {\n                $(this.$el).slider('next')\n                this.$emit('next')\n            },\n\n            prev () {\n                $(this.$el).slider('prev')\n                this.$emit('prev')\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/switch.vue",
    "content": "<template>\n    <div class=\"switch\">\n        <label>\n            {{ off }}\n            <input type=\"checkbox\"\n                   ref=\"checkbox\"\n                   :name=\"name\"\n            >\n            <span class=\"lever\"></span>\n            {{ on }}\n        </label>\n    </div>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            off: {\n                type: String,\n                default: 'Off'\n            },\n\n            on: {\n                type: String,\n                default: 'On'\n            },\n\n            name: String,\n\n            checked: {\n                type: Boolean,\n                default: false\n            },\n\n            value: {\n                type: Boolean\n            }\n        },\n\n        mounted () {\n            if (this.value || this.checked) {\n                this.$refs.checkbox.checked = true\n            }\n\n            const vm = this\n            this.$el.onchange = function () {\n                vm.$emit('input', vm.$refs.checkbox.checked)\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/tab.vue",
    "content": "<template>\n    <li class=\"tab col\"\n        :class=\"{ 'disabled': this.disabled }\"\n    >\n        <a :href=\"target\"\n           :class=\"classes\"\n        >\n            <slot></slot>\n        </a>\n    </li>\n</template>\n\n<script type=\"text/babel\">\n    export default {\n        props: {\n            active: {\n                type: Boolean,\n                default: false\n            },\n\n            target: {\n                type: String,\n                required: true\n            }\n        },\n\n        computed: {\n            classes () {\n                return {\n                    'active': this.active\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/tabs.vue",
    "content": "<template>\n    <ul class=\"tabs\">\n        <slot></slot>\n    </ul>\n</template>\n\n<script type=\"text/babel\">\n    import IsLoadable from '../mixins/is-loadable'\n\n    export default {\n        mixins: [\n            IsLoadable\n        ],\n\n        props: {\n            selected: {\n                type: String,\n                default: ''\n            }\n        },\n\n        methods: {\n            init () {\n                if (!this.selected) {\n                    $(this.$el).tabs()\n                } else {\n                    $(this.$el).tabs('select_tab', this.selected)\n                }\n            }\n        }\n    }\n</script>\n"
  },
  {
    "path": "src/components/text-area.vue",
    "content": "<template>\n    <textarea class=\"materialize-textarea\"\n              :length=\"length\"\n              @input=\"$emit('input', $event.target.value)\"\n    >\n        <slot></slot>\n    </textarea>\n</template>\n\n<script type=\"text/babel\">\n    import Counter from '../mixins/counter'\n\n    export default {\n        mixins: [\n            Counter\n        ]\n    }\n</script>\n"
  },
  {
    "path": "src/components/text-input.vue",
    "content": "<template>\n    <input class=\"validate\"\n           type=\"text\"\n           :length=\"length\"\n           :value=\"value\"\n           @input=\"$emit('input', $event.target.value)\"\n    >\n</template>\n\n<script type=\"text/babel\">\n    import Counter from '../mixins/counter'\n\n    export default {\n        props: ['value'],\n\n        mixins: [\n            Counter\n        ]\n    }\n</script>\n"
  },
  {
    "path": "src/directives/_index.js",
    "content": "import Dropdown from './dropdown'\nimport Modal from './modal'\nimport SideNav from './side-nav'\nimport Tooltip from './tooltip'\n\nexport default {\n    Dropdown,\n    Modal,\n    SideNav,\n    Tooltip\n}\n"
  },
  {
    "path": "src/directives/dropdown.js",
    "content": "import Load from '../util/load'\n\nexport default {\n    bind (el, binding, vnode) {\n        Load.call(vnode.context, () => {\n            const params = binding.value || {}\n\n            el.setAttribute('data-activates', binding.arg || params.value)\n            $(el).dropdown(params)\n        })\n    }\n}\n"
  },
  {
    "path": "src/directives/modal.js",
    "content": "import Load from '../util/load'\n\nexport default {\n    bind (el, binding, vnode) {\n        Load.call(vnode.context, () => {\n            const params = binding.value || {}\n            if (el.nodeName === 'button') {\n                el.setAttribute('data-target', binding.arg || params.value)\n            } else {\n                el.setAttribute('href', `#${binding.arg || params.value}`)\n            }\n            \n            $(`#${binding.arg || params.value}`).modal()\n        })\n    }\n}\n"
  },
  {
    "path": "src/directives/side-nav.js",
    "content": "import Load from '../util/load'\n\nexport default {\n    bind (el, binding, vnode) {\n        Load.call(vnode.context, () => {\n            el.setAttribute('data-activates', binding.arg)\n            $(el).sideNav(binding.value || {})\n        })\n    }\n}\n"
  },
  {
    "path": "src/directives/tooltip.js",
    "content": "import Load from '../util/load'\n\nconst tooltip = (el, binding, vnode) => {\n    const delay = typeof binding.modifiers !== 'undefined'\n        ? Object.keys(binding.modifiers)[0]\n        : 50\n\n    el.classList.add('tooltipped')\n    el.setAttribute('data-position', binding.arg)\n    el.setAttribute('data-delay', delay)\n    el.setAttribute('data-tooltip', binding.expression.replace(/\\'/g, ''))\n\n    Load.call(vnode.context, () => $(el).tooltip())\n} \n\nexport default {\n    bind (el, binding, vnode) {\n        tooltip(el, binding, vnode)\n    },\n\n    postupdate (el, binding, vnode) {\n        tooltip(el, binding, vnode)\n    }\n}\n"
  },
  {
    "path": "src/index.js",
    "content": "import Components from './components/_index'\nimport Directives from './directives/_index'\nimport Functional from './components/functional/_index'\nimport Dialog from './util/dialog'\nimport ScrollFire from './util/scroll-fire'\n\nfunction plugin(Vue) {\n    if (plugin.installed) return\n\n    for (let key in Components) {\n        Vue.component(key, Components[key])\n    }\n    \n    for (let key in Functional) {\n        Vue.component(key, Functional[key])\n    }\n\n    for (let key in Directives) {\n        Vue.directive(key, Directives[key])\n    }\n\n    Vue.dialog = Dialog\n    Vue.scrollFire = ScrollFire\n\n    Object.defineProperties(Vue.prototype, {\n        $dialog: {\n            get: () => Vue.dialog.bind(this)\n        },\n\n        $scrollFire: {\n            get: () => Vue.scrollFire.bind(this)\n        }\n    })\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n    window.Vue.use(plugin);\n}\n\nexport default plugin\n"
  },
  {
    "path": "src/mixins/buttons.js",
    "content": "export default {\n    props: {\n        disabled: {\n            type: Boolean,\n            default: false\n        },\n\n        flat: {\n            type: Boolean,\n            default: false\n        },\n\n        floating: {\n            type: Boolean,\n            default: false\n        },\n\n        large: {\n            type: Boolean,\n            default: false\n        },\n\n        modal: {\n            type: Boolean,\n            default: false\n        }\n    },\n\n    computed: {\n        buttonsMixin () {\n            return {\n                'btn': !this.flat,\n                'btn-floating': this.floating,\n                'btn-large': this.large,\n                'btn-flat': this.flat,\n                'modal-action modal-close': this.modal,\n                'disabled': this.disabled\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/mixins/collection-item.js",
    "content": "export default {\n    props: {\n        active: {\n            type: Boolean,\n            default: false\n        },\n\n        dismissable: {\n            type: Boolean,\n            default: false\n        },\n\n        header: {\n            type: Boolean,\n            default: false\n        }\n    },\n\n    computed: {\n        collectionsMixin () {\n            return {\n                'active': this.active,\n                'dismissable': this.dismissable,\n                'collection-item': !this.header,\n                'collection-header': this.header\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/mixins/counter.js",
    "content": "import Load from '../util/load'\n\nexport default {\n    props: {\n        length: {\n            type: [Boolean, Number, String],\n            default: false\n        }\n    },\n\n    mounted () {\n        Load.call(this, () => $(this.$el).characterCounter())\n    },\n\n    postupdate () {\n        Load.call(this, () => $(this.$el).characterCounter())\n    }\n}\n"
  },
  {
    "path": "src/mixins/dropdown.js",
    "content": "export default {\n    props: {\n        induration: {\n            type: Number,\n            default: 300\n        },\n\n        outduration: {\n            type: Number,\n            default: 225\n        },\n\n        constrainwidth: {\n            type: Boolean,\n            default: true\n        },\n\n        hover: {\n            type: Boolean,\n            default: false\n        },\n\n        gutter: {\n            type: Number,\n            default: 0\n        },\n\n        beloworigin: {\n            type: Boolean,\n            default: false\n        },\n\n        alignment: {\n            type: String,\n            default: 'left'\n        }\n    }\n}"
  },
  {
    "path": "src/mixins/is-loadable.js",
    "content": "import Load from '../util/load'\n\nexport default {\n    mounted () {\n        Load.call(this, () => this.init())\n    }\n}\n"
  },
  {
    "path": "src/mixins/waves.js",
    "content": "export default {\n    props: {\n        wavesCircle: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesLight: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesOrange: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesPurple: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesGreen: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesTeal: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesRed: {\n            type: Boolean,\n            default: false\n        },\n\n        wavesYellow: {\n            type: Boolean,\n            default: false\n        }\n    },\n\n    computed: {\n        wavesMixin () {\n            return {\n                'waves-effect waves-light': this.wavesLight,\n                'waves-effect waves-red': this.wavesRed,\n                'waves-effect waves-yellow': this.wavesYellow,\n                'waves-effect waves-orange': this.wavesOrange,\n                'waves-effect waves-purple': this.wavesPurple,\n                'waves-effect waves-green': this.wavesGreen,\n                'waves-effect waves-teal': this.wavesTeal,\n                'waves-circle': this.wavesCircle\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/util/dialog.js",
    "content": "export default function Dialog(message, duration = 4000, rounded, cb) {\n    if (typeof rounded === 'function') {\n        cb = rounded\n        rounded = ''\n    }\n    \n    Materialize.toast(message, duration, rounded, cb)\n}\n"
  },
  {
    "path": "src/util/load.js",
    "content": "export default function (cb) {\n    if (document.readyState !== 'loading') {\n        this.$nextTick(() => cb())\n    } else {\n        document.addEventListener('DOMContentLoaded', () => cb())\n    }\n}\n"
  },
  {
    "path": "src/util/scroll-fire.js",
    "content": "export default function ScrollFire(options) {\n    Materialize.scrollFire(options)\n}\n"
  }
]