build/rekord.js
function(delaySort)
  {
    var removed = this[ 0 ];

    this.map.removeAt( 0 );
    this.trigger( Collection.Events.Remove, [this, removed, 0] );

    if ( !delaySort )
    {
      this.sort();
    }

    return removed;
  }
function(delaySort)
  {
    var removed = this[ 0 ];

    this.map.removeAt( 0 );
    this.trigger( Collection.Events.Remove, [this, removed, 0] );

    if ( !delaySort )
    {
      this.sort();
    }

    return removed;
  }
function ( delaySort ) { var removed = this [ 0 ] ; this . map . removeAt ( 0 ) ; this . trigger ( Collection . Events . Remove , [ this , removed , 0 ] ) ; if ( ! delaySort ) { this . sort ( ) ; } return removed ; }
Removes the first model in this collection and returns it - sorting the
collection if a comparator is set on this collection and `delaySort` is
no specified or a true value.

```javascript
var c = Rekord.collect(1, 2, 3, 4);
c.shift(); // 1
```

@method
@memberof Rekord.ModelCollection#
@param {Boolean} [delaySort=false] -
Whether automatic sorting should be delayed until the user manually
calls {@link Rekord.ModelCollection#sort sort}.
@return {Rekord.Model} -
The model removed from the beginning of the collection.
@emits Rekord.ModelCollection#remove
@emits Rekord.ModelCollection#sort
Removes the first model in this collection and returns it - sorting the collection if a comparator is set on this collection and delaySort is no specified or a true value .