/**
 * Stateful mixin for graphic object
 */

import States from '../States';

var Stateful = function (opts) {

    if (opts.states) {
        this.initStates(opts.states);
    }
};

Stateful.prototype = {

    initStates: function (states) {
        this._states = new States({
            el: this,
            states: states
        });
    },

    setState: function (name) {
        this._states && this._states.setState(name);
    },

    getState: function () {
        return this._states && this._states.getState();
    },

    transitionState: function (name, done) {
        this._states && this._states.transitionState(name, done);
    }
};

export default Stateful;