// 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/YesNo.java
// public enum YesNo {
//     yes, no
// }


import elemental2.dom.HTMLLabelElement;
import gwt.react.client.api.ReactRef;
import gwt.react.client.events.*;
import gwt.react.client.proptypes.ReactRefCallback;
import gwt.react.client.proptypes.html.attributeTypes.YesNo;
import jsinterop.annotations.JsOverlay;
import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;
    @JsOverlay public final LabelProps accessKey(String s) { accessKey = s; return this;}
    @JsOverlay public final LabelProps className(String s) { className = s; return this; }
    @JsOverlay public final LabelProps contentEditable(boolean b) { contentEditable = b; return this; }
    @JsOverlay public final LabelProps contextMenu(String s) { contextMenu = s; return this; }
    @JsOverlay public final LabelProps dir(String s) { dir = s; return this; }
    @JsOverlay public final LabelProps draggable(boolean b) { draggable = b; return this; }
    @JsOverlay public final LabelProps hidden(boolean b) { hidden = b; return this; }
    @JsOverlay public final LabelProps id(String s) { id = s; return this; }
    @JsOverlay public final LabelProps lang(String s) { lang = s; return this; }
    @JsOverlay public final LabelProps spellcheck(boolean b) { spellCheck = b; return this; }
    @JsOverlay public final LabelProps style(CssProps s) { style = s; return this; }
    @JsOverlay public final LabelProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final LabelProps title(String s) { title = s; return this; }
    @JsOverlay public final LabelProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

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

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

    @JsOverlay public final LabelProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final LabelProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final LabelProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = 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/YesNo.java
// public enum YesNo {
//     yes, no
// }


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

    @JsOverlay public final LabelProps accessKey(String s) { accessKey = s; return this;}
    @JsOverlay public final LabelProps className(String s) { className = s; return this; }
    @JsOverlay public final LabelProps contentEditable(boolean b) { contentEditable = b; return this; }
    @JsOverlay public final LabelProps contextMenu(String s) { contextMenu = s; return this; }
    @JsOverlay public final LabelProps dir(String s) { dir = s; return this; }
    @JsOverlay public final LabelProps draggable(boolean b) { draggable = b; return this; }
    @JsOverlay public final LabelProps hidden(boolean b) { hidden = b; return this; }
    @JsOverlay public final LabelProps id(String s) { id = s; return this; }
    @JsOverlay public final LabelProps lang(String s) { lang = s; return this; }
    @JsOverlay public final LabelProps spellcheck(boolean b) { spellCheck = b; return this; }
    @JsOverlay public final LabelProps style(CssProps s) { style = s; return this; }
    @JsOverlay public final LabelProps tabIndex(int i) { tabIndex = i; return this; }
    @JsOverlay public final LabelProps title(String s) { title = s; return this; }
    @JsOverlay public final LabelProps translate(YesNo s) { translate = s.name(); return this; }

    //Applicable Event Handlers

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

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

    @JsOverlay public final LabelProps onClick(MouseEventHandler handler) { onClick = handler; return this; }
    @JsOverlay public final LabelProps onContextMenu(MouseEventHandler handler) { onContextMenu = handler; return this; }
    @JsOverlay public final LabelProps onDoubleClick(MouseEventHandler handler) { onDoubleClick = handler; return this; }
    @JsOverlay public final LabelProps onDrag(DragEventHandler handler) { onDrag = handler; return this; }