<!DOCTYPE html>
<html>

<head>
  <link href="//cdn.jsdelivr.net/picnicss/4.1.1/picnic.min.css" rel="stylesheet">
  <style>
    li:empty {
      list-style-type: none;
    }
  </style>
</head>

<body>

  <h1>Hello Mag.JS - Redux remote!</h1>
  <a target="_tab" href="https://github.com/magnumjs/mag.js">GitHub</a>
  <hr/>

  <div id="test">
    <p>
      <button></button>
    </p>
  </div>

  <script src="//rawgit.com/magnumjs/mag.js/master/dist/mag.0.21.3.min.js"></script>
  <script src="//rawgit.com/magnumjs/mag.js/master/dist/mag.addons.0.21.min.js"></script>
  <script src="//rawgit.com/magnumjs/mag.js/master/src/addons/redux.js"></script>
  <script src="//rawgit.com/magnumjs/mag.js/master/src/addons/redux-middleware.js"></script>

  <script src="script.js"></script>
</body>

</html>

var storeCreator = Redux.applyMiddleware(Redux.middle.logger)(Redux.createStore);

var store = storeCreator(function(state, action) {
  if (!state) {
    return {
      text: "ZZZ"
    };
  }

  switch (action.type) {
    case "TEXT_CHANGE":
      return Object.assign({}, state, {
        text: action.text
      });

    default:
      return state;
  }
});

var mod = mag.module('test', {
  controller: function() {
    var clickText = function(e) {
      e.preventDefault();

      store.dispatch({
        type: "TEXT_CHANGE",
        text: "It's currently: " + (new Date()).toTimeString()
      });
    };

    this.button = {
      _onclick: clickText,
      _text: "What time is it?"
    }
  },

  view: function(state) {
    var stately = store.getState();
    state.p = stately.text
  }
});

store.subscribe(function() {
  mod.draw()
});