<html>
<head>
  <title>blame-sk demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="../../node_modules/native-promise-only/npo.js"></script>
  <script src="bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="../common/js/common.js"></script>
  <script src="testdata.js"></script>

  <link rel="import" href="bower_components/polymer/polymer.html">
  <link rel="import" href="blame-sk.html">

</head>
<body>
  <h1>blame-sk demo</h1>

  <dom-module id="main-document-element">
    <template>
      <blame-sk id="oldBlames" value="{{oldBlameDist}}" commits="{{commits}}"></blame-sk>
      <blame-sk value="{{newBlameDist}}" commits="{{commits}}"></blame-sk><br>

      Event: {{eventInfo}}
    </template>

    <script>
      HTMLImports.whenReady(function () {
        Polymer({
          is: 'main-document-element',

          properties: {
            oldBlameDist: {
              type: Object,
              value: testdata.oldBlameDist
            },

            newBlameDist: {
              type: Object,
              value: testdata.newBlameDist
            },

            commits: {
              type: Array,
              value: testdata.commits
            }
          },

          ready: function() {
            this.listen(this.$.oldBlames, 'hover-blame', '_handleEvent');
            this.listen(this.$.oldBlames, 'show-commits', '_handleEvent');
          },

          _handleEvent: function(e) {
            e.stopPropagation();
            this.eventInfo = e.type + " : " + JSON.stringify(e);
          }
        });
      });

    </script>
  </dom-module>

  <!-- Instantite the element defined above -->
  <main-document-element></main-document-element>

</body>
</html>
