
export default function sort(key) {
  if (typeof key !== 'function') {
    key = el => el[key]
  }

  return this.each(function() {
    let $container = $(this),
        $items = $container.children(),
        items = $items.get()

    items.sort((a, b) => {
      let av = key(a), bv = key(b)

      return typeof av === 'number' ? av - bv : av.localeCompare(bv)
    })

    $container
      .empty()
      .append(items)
  })
}


/*
  'use strict';

  key = typeof key === 'function' ? key : el => el[key]

  let $elem = $(this),
      items = $elem.children().get()

  items.sort((a, b) => {
    let av = key(a),
        bv = key(b)
    return typeof av === 'number' ? av - bv : av.localeCompare(bv)
  })

  $elem
    .empty()
    .append(items)

  return this
}

jQuery.fn.sort = function(key) {
  'use strict';

  key = typeof key === 'function' ? key : function(el) { return el[key] }

  var $elem = $(this),
      items = $elem.children().get()

  items.sort(function(a, b) {
    var av = key(a),
        bv = key(b)
    return typeof av === 'number' ? av - bv : av.localeCompare(bv)
  })

  $elem
    .empty()
    .append(items)

  return this
}
*/
