function set( color ) {
	/* eslint-disable no-invalid-this */
	if ( !isString( color ) && !isFunction( color ) ) {
		throw new TypeError( format( 'invalid assignment. `%s` must be a string or a function. Value: `%s`.', 'color', color ) );
	}
	if ( color !== this._color ) {
		debug( 'Current value: %d.', this._color );

		this._color = color;
		debug( 'New Value: %d.', this._color );

		this.emit( 'change' );
	}
}
Sets the color.

@private
@param {(string|Function)} color - color
@throws {TypeError} must be a string or function