// Path: src/gwt/react/client/api/ReactRef.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class ReactRef<T> {
// 	@JsProperty
// 	public T current;
// }
// 
// Path: src/gwt/react/client/proptypes/ReactRefCallback.java
// @JsFunction
// public interface ReactRefCallback {
//     void passRef(Object refElement);
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/InputType.java
// public enum InputType {
//     button,
//     checkbox,
//     color,
//     date,
//     datetime,
//     //datetime-local
//     email,
//     file,
//     hidden,
//     image,
//     month,
//     number,
//     password,
//     radio,
//     range,
//     reset,
//     search,
//     submit,
//     tel,
//     text,
//     time,
//     url,
//     week
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/OnOff.java
// public enum OnOff {
//     on, off
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/YesNo.java
// public enum YesNo {
//     yes, no
// }


import elemental2.dom.HTMLInputElement;
import gwt.react.client.api.ReactRef;
import gwt.react.client.events.*;
import gwt.react.client.proptypes.ReactRefCallback;
import gwt.react.client.proptypes.html.attributeTypes.InputType;
import gwt.react.client.proptypes.html.attributeTypes.OnOff;
import gwt.react.client.proptypes.html.attributeTypes.YesNo;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;
    @JsOverlay public final InputProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final InputProps title(String s) { title = s; return this; }
    @JsOverlay public final InputProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

    // Focus Events
    @JsOverlay public final InputProps onBlur(FocusEventHandler handler) { onBlur = handler; return this; }
    @JsOverlay public final InputProps onFocus(FocusEventHandler handler) { onFocus = handler; return this; }

    // Form Events
    @JsOverlay public final InputProps onChange(FormEventHandler handler) { onChange = handler; return this; }

    // Keyboard Events
    @JsOverlay public final InputProps onKeyDown(KeyboardEventHandler handler) { onKeyDown = handler; return this; }
    @JsOverlay public final InputProps onKeyPress(KeyboardEventHandler handler) { onKeyPress = handler; return this; }
    @JsOverlay public final InputProps onKeyUp(KeyboardEventHandler handler) { onKeyUp = handler; return this; }

    @JsOverlay public final InputProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final InputProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final InputProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = handler; return this; }
    @JsOverlay public final InputProps onDrag(DragEventHandler handler) { onDrag = handler; return this; }
    @JsOverlay public final InputProps onDragEnd(DragEventHandler handler) { onDragEnd = handler; return this; }
    @JsOverlay public final InputProps onDragEnter(DragEventHandler handler) { onDragEnter = handler; return this; }
    @JsOverlay public final InputProps onDragExit(DragEventHandler handler) { onDragExit = handler; return this; }
    @JsOverlay public final InputProps onDragLeave(DragEventHandler handler) { onDragLeave = handler; return this; }
    @JsOverlay public final InputProps onDragOver(DragEventHandler handler) { onDragOver = handler; return this; }
    @JsOverlay public final InputProps onDragStart(DragEventHandler handler) { onDragStart = handler; return this; }
    @JsOverlay public final InputProps onDrop(DragEventHandler handler) { onDrop = handler; return this; }
    @JsOverlay public final InputProps onMouseDown(MouseEventHandler handler) { onMouseDown = handler; return this; }
// Path: src/gwt/react/client/api/ReactRef.java
// @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
// public class ReactRef<T> {
// 	@JsProperty
// 	public T current;
// }
// 
// Path: src/gwt/react/client/proptypes/ReactRefCallback.java
// @JsFunction
// public interface ReactRefCallback {
//     void passRef(Object refElement);
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/InputType.java
// public enum InputType {
//     button,
//     checkbox,
//     color,
//     date,
//     datetime,
//     //datetime-local
//     email,
//     file,
//     hidden,
//     image,
//     month,
//     number,
//     password,
//     radio,
//     range,
//     reset,
//     search,
//     submit,
//     tel,
//     text,
//     time,
//     url,
//     week
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/OnOff.java
// public enum OnOff {
//     on, off
// }
// 
// Path: src/gwt/react/client/proptypes/html/attributeTypes/YesNo.java
// public enum YesNo {
//     yes, no
// }


// Path: src/gwt/react/client/proptypes/html/InputProps.java
import elemental2.dom.HTMLInputElement;
import gwt.react.client.api.ReactRef;
import gwt.react.client.events.*;
import gwt.react.client.proptypes.ReactRefCallback;
import gwt.react.client.proptypes.html.attributeTypes.InputType;
import gwt.react.client.proptypes.html.attributeTypes.OnOff;
import gwt.react.client.proptypes.html.attributeTypes.YesNo;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

    @JsOverlay public final InputProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final InputProps title(String s) { title = s; return this; }
    @JsOverlay public final InputProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

    // Focus Events
    @JsOverlay public final InputProps onBlur(FocusEventHandler handler) { onBlur = handler; return this; }
    @JsOverlay public final InputProps onFocus(FocusEventHandler handler) { onFocus = handler; return this; }

    // Form Events
    @JsOverlay public final InputProps onChange(FormEventHandler handler) { onChange = handler; return this; }

    // Keyboard Events
    @JsOverlay public final InputProps onKeyDown(KeyboardEventHandler handler) { onKeyDown = handler; return this; }
    @JsOverlay public final InputProps onKeyPress(KeyboardEventHandler handler) { onKeyPress = handler; return this; }
    @JsOverlay public final InputProps onKeyUp(KeyboardEventHandler handler) { onKeyUp = handler; return this; }

    @JsOverlay public final InputProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final InputProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final InputProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = handler; return this; }
    @JsOverlay public final InputProps onDrag(DragEventHandler handler) { onDrag = handler; return this; }
    @JsOverlay public final InputProps onDragEnd(DragEventHandler handler) { onDragEnd = handler; return this; }
    @JsOverlay public final InputProps onDragEnter(DragEventHandler handler) { onDragEnter = handler; return this; }
    @JsOverlay public final InputProps onDragExit(DragEventHandler handler) { onDragExit = handler; return this; }
    @JsOverlay public final InputProps onDragLeave(DragEventHandler handler) { onDragLeave = handler; return this; }
    @JsOverlay public final InputProps onDragOver(DragEventHandler handler) { onDragOver = handler; return this; }
    @JsOverlay public final InputProps onDragStart(DragEventHandler handler) { onDragStart = handler; return this; }
    @JsOverlay public final InputProps onDrop(DragEventHandler handler) { onDrop = handler; return this; }
    @JsOverlay public final InputProps onMouseDown(MouseEventHandler handler) { onMouseDown = handler; return this; }
    @JsOverlay public final InputProps onMouseEnter(MouseEventHandler handler) { onMouseEnter = handler; return this; }