// Copyright (c) 2019, 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.

import 'dart:html';

import 'package:stream_transform/stream_transform.dart';

void main() {
  var firstInput = document.querySelector('#first_input') as InputElement;
  var secondInput = document.querySelector('#second_input') as InputElement;
  var output = document.querySelector('#output');

  _inputValues(firstInput)
      .combineLatest(_inputValues(secondInput),
          (first, second) => 'First: $first, Second: $second')
      .tap((v) {
    print('Saw: $v');
  }).forEach((v) {
    output.text = v;
  });
}

Stream<String> _inputValues(InputElement element) => element.onKeyUp
    .debounce(const Duration(milliseconds: 100))
    .map((_) => element.value);
