<!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vuex/3.0.1/vuex.min.js"></script>
</head>

<body>
    <div id="main">
        <h1>{{title}}</h1>
        <hr/>
        <h2>Counter: {{counter}}</h2>
        <button type="button" @click="increment"> + </button>
        <button type="button" @click="decrement"> - </button>
    </div>
    <script>
        const store = new Vuex.Store({
            state: {
                counter: 0
            },
            getters: {
                counter: state => state.counter
            },
            mutations: {
                increment: state => state.counter++,
                decrement: state => state.counter--
            }
        })
        new Vue({
            el: '#main',
            store,
            data() {
                return {
                    title: 'Hello World!',
                }
            },
            computed: {
                counter() {return this.$store.getters.counter; }
            },
            methods: {
                ...Vuex.mapMutations(['increment', 'decrement'])
            }
        })
    </script>
</body>

</html>
// Code goes here

/* Styles go here */