#!mojo mojo:sky_viewer
<!--
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-->
<sky>

<import src="/gen/examples/browser/browser_host.mojom.sky" as="example" />

<import src="/sky/framework/embedder.sky" as="embedder" />
<import src="/sky/framework/sky-element/sky-element.sky" as="SkyElement" />
<import src="/sky/framework/sky-input.sky" />
<import src="/sky/framework/sky-box/sky-box.sky"/>

<sky-element name="browser-panel">
<template>
  <style>
  div {
    display: flex;
  }
  </style>

  <sky-input id="text" value="http://" on-keydown="handleKeyDown" />
</template>
<script>
module.exports = class extends SkyElement {
  created() {
    this.embedder = embedder.connectToEmbedderService(example.BrowserHost)
    this.myText = null;
  }

  attached() {
    this.myText = this.shadowRoot.getElementById('text');
  }

  handleKeyDown(event) {
    if (event.keyCode == 0xD)
      this.embedder.navigateTo(this.myText.value);
  }
}.register();
</script>
</sky-element>

<browser-panel />
</sky>
