Funky bench: arguments to array

  • for
  • for + cached length
  • for + cached length & new Array(length)
  • slice
  • cached slice
  • Array.form
  • Array.apply

Very soon, the release Sortable v1.0:

  - animation
  - group settings
  - support AngularJS (ng-sortable)



RC: https://github.com/RubaXa/Sortable/tree/dev/

wormhole.js — is EventEmitter for communication between tabs


Features

  • Cross-domain communication
  • SharedWorkers or fallback to localStorage
  • IE 8+, Chrome 10+, FireFox 10+, Opera 10+, Safari 6+
  • Test coverage (run)

How to inherit native Promise?

/**
 * @class   MyPromise
 * @extends Promise
 */
var MyPromise = function (executor) {
  var promise = new Promise(executor);
  promise.__proto__ = this.__proto__;
  return promise;
};
 
MyPromise.prototype = Object.create(Promise.prototype, { constructor: { value: MyPromise } });
 
MyPromise.prototype.done = function (callback) {
  this.then(callback);
  return this;
};
 
MyPromise.prototype.fail = function (callback) {
  this['catch'](callback);
  return this;
};
 
MyPromise.prototype.always = function (callback) {
  this.then(callback, callback);
  return this;
};
 
MyPromise.all = Promise.all;
MyPromise.cast = Promise.cast;
MyPromise.reject = Promise.reject;
MyPromise.resolve = Promise.resolve;

http://code.re/5TC

Sortable v0.4.0: Saving and restoring of the sort.

https://github.com/RubaXa/Sortable/tree/dev#store

new Sortable(el, {
    group: "localStorage",
    store: {
        /**
         * Get the order of elements. Called once during initialization.
         * @param   {Sortable}  sortable
         * @retruns {Array}
         */
        get: function (sortable) {
            var order = localStorage.getItem(sortable.options.group);
            return order ? order.split('|') : [];
        },

        /**
         * Save the order of elements. Called every time at the drag end.
         * @param {Sortable}  sortable
         */
        set: function (sortable) {
            var order = sortable.toArray();
            localStorage.setItem(sortable.options.group, order.join('|'));
        }
    }
})