<!DOCTYPE html>
<!--
Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
for details. All rights reserved. Use of this source code is governed by a
BSD-style license that can be found in the LICENSE file.
-->

<html>
  <body>
    <template id="test" repeat="{{ keyPress | collect }}">
      <div>key: {{ }}</div>
    </template>
    <script type="application/dart">
      import 'dart:async';
      import 'dart:html';
      import 'package:polymer_expressions/polymer_expressions.dart';
      import 'package:polymer_expressions/async.dart';
      import 'package:template_binding/template_binding.dart';
      import 'package:observe/observe.dart';

      Iterable collect(StreamBinding s) {
        var list = new ObservableList();
        s.stream.listen((e) { list.add(e); });
        return list;
      }

      main() {
        var globals = {
          'keyPress': document.onKeyPress
              .map((e) => new String.fromCharCode(e.charCode)),
          'collect': collect,
        };

        templateBind(query('#test'))
            ..bindingDelegate = new PolymerExpressions(globals: globals)
            ..model = null;
      }
    </script>
    <script src="packages/browser/dart.js"></script>
  </body>
</html>
