/**
 * @see https://facebook.github.io/react/docs/component-specs.html
 */
"use strict";

var ApComponent = require('apeman-react-component').ApComponent;


var MyExampleComponent = ApComponent.define({
    //--------------------
    // Specifications
    //--------------------
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#proptypes
     * @type object
     */
    propTypes: {},
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#mixins
     * @type Array
     */
    mixins: [],
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#statics
     * @type object
     */
    statics: {},
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#getinitialstate
     * @returns {object}
     */
    getInitialState: function () {
        return {};
    },
    /**
     * Invoked once and cached when the class is created. Values in the mapping will be set on this.props if that prop is not specified by the parent component (i.e. using an in check).
     * @see https://facebook.github.io/react/docs/component-specs.html#getdefaultprops
     * @returns {object}
     */
    getDefaultProps: function () {
        return {};
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#render
     * @returns {ReactElement|null}
     */
    render: function () {
        throw new Error('Not implemented!');
    },
    //--------------------
    // Lifecycle
    //--------------------

    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#mounting-componentwillmount
     */
    componentWillMount: function () {
        var s = this;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#mounting-componentdidmount
     */
    componentDidMount: function () {
        var s = this;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#updating-componentwillreceiveprops
     */
    componentWillReceiveProps: function (nextProps) {
        var s = this;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#updating-shouldcomponentupdate
     * @returns {boolean}
     */
    shouldComponentUpdate: function (nextProps, nextState) {
        var s = this;
        return true;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#updating-componentwillupdate
     */
    componentWillUpdate: function (nextProps, nextState) {
        var s = this;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#updating-componentdidupdate
     */
    componentDidUpdate: function (prevProps, prevState) {
        var s = this;
    },
    /**
     * @see https://facebook.github.io/react/docs/component-specs.html#unmounting-componentwillunmount
     */
    componentWillUnmount: function () {
        var s = this;
    }

    //------------------
    // Helper
    //------------------


    //------------------
    // Private
    //------------------
});


ReactDOM.render(<MyExampleComponent></MyExampleComponent>);