import * as DOM from "react-dom-factories";

// tiny sampling of factories
DOM.a({}, "a");
DOM.div({},
    DOM.span({}, DOM.b()),
    DOM.ul({}, DOM.li({}, "test"))
);
    propTypes: {},
    shouldComponentUpdate(this: React.ClassicComponent<Props, State>, nextProps, nextState) {
        const newFoo: string = nextProps.foo;
        const newBar: number = nextState.bar;
        return newFoo !== this.props.foo && newBar !== this.state!.bar;
    },
    statics: {
        test: 1
    },
    reset() {
        this.replaceState(this.getInitialState!());
    },
    render() {
        return DOM.div(null,
            DOM.input({
                ref: input => this._input = input,
                value: this.state.bar
            }));
    }
});

const ClassicComponentNoProps: React.ClassicComponentClass = createReactClass({
    render() {
        return DOM.div();
    }
});

// React.createFactory
const classicFactory: React.ClassicFactory<Props> =
    React.createFactory(ClassicComponent);
const classicFactoryElement: React.ClassicElement<Props> =