<!DOCTYPE html>

<import src="/sky/framework/dom-serializer.sky" as="DomSerializer" />
<import src="/sky/framework/elements/sky-element/sky-binder.sky" as="binder" />

<div id="host"></div>

<template id="template">
  <style>
  .blue { border: 1px solid blue; }
  .orange { border: 1px solid orange; }
  .repeat { margin: 8px; }
  </style>
  <span style="color: {{ red }}">{{ value }}</span>
  <template repeat="{{ list }}">
    <div class="{{ className }} repeat">{{ item }}</div>
  </template>
  <template if="{{ test }}">
    Hello World
  </template>
  <template if="{{ testFalse }}">
    Should not be visible.
  </template>
  <template repeat="{{ nullInstances }}">
    Should not be visible.
  </template>
  <div>{{ value }} test {{ red }}{{ className }} test</div>
  <a href="{{ url }}">{{ url }}</a>
  <span on-test-event="handleTestEvent">
    <span id="target">Test event handler: </span>
  </span>
  <div class="[[ className ]]">[[ url ]]</div>
</template>

<script>
window.addEventListener("load", function() {
  var template = document.getElementById('template');
  var host = document.getElementById('host');
  host.handleTestEvent = function(e) {
    e.target.appendChild(new Text("event dispatch success"));
  };
  window.model = {
    value: 10,
    test: true,
    testFalse: false,
    nullInstances: [null],
    url: "http://www.google.com/",
    red: "red",
    className: "blue",
    list: [{
      item: "first",
      className: "blue",
    }, {
      item: "second",
      className: "orange",
    }],
  };
  var instance = binder.createInstance(template, window.model);
  host.ensureShadowRoot().appendChild(instance.fragment);
  var target = host.shadowRoot.getElementById("target");
  target.dispatchEvent(new CustomEvent("test-event", {
    bubbles: true,
  }));
  internals.notifyTestComplete(DomSerializer.serializeNode(host.shadowRoot));
});
</script>
