// Path: gwt-rxjs-jsinterop/src/main/java/com/github/timofeevda/gwt/rxjs/interop/event/KeyboardEvent.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class KeyboardEvent extends Event {
//     public boolean altKey;
//     public int key;
//     public int code;    
//     public boolean ctrlKey;
//     public boolean isComposing;
//     public int location;
//     public boolean metaKey;
//     public boolean repeat;
//     public boolean shiftKey;
//     public native boolean getModifierState(String modifier);
// }
// 
// Path: gwt-rxjs-jsinterop/src/main/java/com/github/timofeevda/gwt/rxjs/interop/event/MouseEvent.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class MouseEvent extends Event {    
//     public boolean altKey;
//     public int button;
//     public int buttons;
//     public int clientX;
//     public int clientY;
//     public boolean ctrlKey;
//     public boolean metaKey;
//     public int movementX;
//     public int movementY;
//     public Element relatedTarget;
//     public int screenX;
//     public int screenY;
//     public boolean shiftKey;
//     public int x;
//     public int y;
//     public native boolean getModifierState(String modifier);
// }


import com.github.timofeevda.gwt.rxjs.interop.event.MouseEvent;
import com.google.gwt.dom.client.Element;
import com.github.timofeevda.gwt.rxjs.interop.event.KeyboardEvent;

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2018 Denis Timofeev <timofeevda@gmail.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 */
package com.github.timofeevda.gwt.rxjs.interop.observable;


/**
 * {@link Observable} extensions for type friendly signatures
 *
 * @author timofeevda since 12/01/2017
 */
public class ObservableEx {

    public static Observable<MouseEvent> fromMouseEvent(Element element, String mouseEvent, boolean useCapture) {
        return Observable.fromEvent(element, mouseEvent, useCapture);
    }

    public static Observable<MouseEvent> fromMouseEvent(Element element, String mouseEvent) {

// Path: gwt-rxjs-jsinterop/src/main/java/com/github/timofeevda/gwt/rxjs/interop/event/KeyboardEvent.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class KeyboardEvent extends Event {
//     public boolean altKey;
//     public int key;
//     public int code;    
//     public boolean ctrlKey;
//     public boolean isComposing;
//     public int location;
//     public boolean metaKey;
//     public boolean repeat;
//     public boolean shiftKey;
//     public native boolean getModifierState(String modifier);
// }
// 
// Path: gwt-rxjs-jsinterop/src/main/java/com/github/timofeevda/gwt/rxjs/interop/event/MouseEvent.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class MouseEvent extends Event {    
//     public boolean altKey;
//     public int button;
//     public int buttons;
//     public int clientX;
//     public int clientY;
//     public boolean ctrlKey;
//     public boolean metaKey;
//     public int movementX;
//     public int movementY;
//     public Element relatedTarget;
//     public int screenX;
//     public int screenY;
//     public boolean shiftKey;
//     public int x;
//     public int y;
//     public native boolean getModifierState(String modifier);
// }


// Path: gwt-rxjs-jsinterop/src/main/java/com/github/timofeevda/gwt/rxjs/interop/observable/ObservableEx.java
import com.github.timofeevda.gwt.rxjs.interop.event.MouseEvent;
import com.google.gwt.dom.client.Element;
import com.github.timofeevda.gwt.rxjs.interop.event.KeyboardEvent;

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2018 Denis Timofeev <timofeevda@gmail.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 */
package com.github.timofeevda.gwt.rxjs.interop.observable;


/**
 * {@link Observable} extensions for type friendly signatures
 *
 * @author timofeevda since 12/01/2017
 */
public class ObservableEx {

    public static Observable<MouseEvent> fromMouseEvent(Element element, String mouseEvent, boolean useCapture) {
        return Observable.fromEvent(element, mouseEvent, useCapture);
    }

    public static Observable<MouseEvent> fromMouseEvent(Element element, String mouseEvent) {

        return Observable.fromEvent(element, mouseEvent);
