fluxxor-rails 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ef884df7d54fece25d83fdaff68aca6ce2b04cd
4
- data.tar.gz: 422f629a88869d171f0e047ae67df93eb019c43c
3
+ metadata.gz: 8df48dd8c7811b4337083a93fcc0377547aa5f28
4
+ data.tar.gz: afac8d2572b89f9ac3d26d286a287c5c4bcf4d1d
5
5
  SHA512:
6
- metadata.gz: fbbec4c8d1ee047dab95746906855c26249e1aa69428f9de7fc453157444e1b2525fe0ff7c5c4f5a1bd85b70ecf74e7c2cb8c4e15825ca6abb6fdd5cdb824038
7
- data.tar.gz: fc72ec36d0e6c78217aabacee92c1d3994aed1bf652925d0a92716055dbc55afb4f846ad3ffa363f0f0c434bc7f19b3b80437f490bb2fdbac0c2526972e289f4
6
+ metadata.gz: 2b03df4d808e2cda07c487ccd55c95e6e7a580d2a7592f2f726ff3a254bc2fe2b5bded27c162c7d567240d60393cc64b0853b89ac70bc4f505f07edbbc03f581
7
+ data.tar.gz: 28dfe2ff0491020dfaa0030d83c3e183dd1d0760e7aa226b1c0e7b19439fbc294a05f8a4e0650c1d8e71d93c4c473a7f7bbfd0e526534ca1904122d55f6ad755
@@ -1,5 +1,5 @@
1
1
  module Fluxxor
2
2
  module Rails
3
- VERSION = '1.5.0'
3
+ VERSION = '1.5.1'
4
4
  end
5
5
  end
@@ -79,7 +79,7 @@ return /******/ (function(modules) { // webpackBootstrap
79
79
  /* 1 */
80
80
  /***/ function(module, exports, __webpack_require__) {
81
81
 
82
- module.exports = "1.5.0"
82
+ module.exports = "1.5.1"
83
83
 
84
84
  /***/ },
85
85
  /* 2 */
@@ -439,7 +439,7 @@ return /******/ (function(modules) { // webpackBootstrap
439
439
  var StoreWatchMixin = function() {
440
440
  var storeNames = Array.prototype.slice.call(arguments);
441
441
  return {
442
- componentWillMount: function() {
442
+ componentDidMount: function() {
443
443
  var flux = this.props.flux || this.context.flux;
444
444
  _each(storeNames, function(store) {
445
445
  flux.store(store).on("change", this._setStateFromFlux);
@@ -1093,8 +1093,8 @@ return /******/ (function(modules) { // webpackBootstrap
1093
1093
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1094
1094
  * Available under MIT license <http://lodash.com/license>
1095
1095
  */
1096
- var baseClone = __webpack_require__(29),
1097
- baseCreateCallback = __webpack_require__(30);
1096
+ var baseClone = __webpack_require__(28),
1097
+ baseCreateCallback = __webpack_require__(29);
1098
1098
 
1099
1099
  /**
1100
1100
  * Creates a clone of `value`. If `isDeep` is `true` nested objects will also
@@ -1162,7 +1162,7 @@ return /******/ (function(modules) { // webpackBootstrap
1162
1162
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1163
1163
  * Available under MIT license <http://lodash.com/license>
1164
1164
  */
1165
- var createCallback = __webpack_require__(28),
1165
+ var createCallback = __webpack_require__(41),
1166
1166
  forOwn = __webpack_require__(14);
1167
1167
 
1168
1168
  /**
@@ -1226,9 +1226,9 @@ return /******/ (function(modules) { // webpackBootstrap
1226
1226
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1227
1227
  * Available under MIT license <http://lodash.com/license>
1228
1228
  */
1229
- var baseCreateCallback = __webpack_require__(30),
1229
+ var baseCreateCallback = __webpack_require__(29),
1230
1230
  keys = __webpack_require__(15),
1231
- objectTypes = __webpack_require__(31);
1231
+ objectTypes = __webpack_require__(30);
1232
1232
 
1233
1233
  /**
1234
1234
  * Iterates over own enumerable properties of an object, executing the callback
@@ -1282,9 +1282,9 @@ return /******/ (function(modules) { // webpackBootstrap
1282
1282
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1283
1283
  * Available under MIT license <http://lodash.com/license>
1284
1284
  */
1285
- var isNative = __webpack_require__(32),
1285
+ var isNative = __webpack_require__(31),
1286
1286
  isObject = __webpack_require__(25),
1287
- shimKeys = __webpack_require__(33);
1287
+ shimKeys = __webpack_require__(32);
1288
1288
 
1289
1289
  /* Native method shortcuts for methods with the same name as other `lodash` methods */
1290
1290
  var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;
@@ -1324,7 +1324,7 @@ return /******/ (function(modules) { // webpackBootstrap
1324
1324
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1325
1325
  * Available under MIT license <http://lodash.com/license>
1326
1326
  */
1327
- var createCallback = __webpack_require__(28),
1327
+ var createCallback = __webpack_require__(41),
1328
1328
  forOwn = __webpack_require__(14);
1329
1329
 
1330
1330
  /**
@@ -1471,15 +1471,15 @@ return /******/ (function(modules) { // webpackBootstrap
1471
1471
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1472
1472
  * Available under MIT license <http://lodash.com/license>
1473
1473
  */
1474
- var baseIndexOf = __webpack_require__(34),
1475
- cacheIndexOf = __webpack_require__(35),
1476
- createCache = __webpack_require__(36),
1477
- getArray = __webpack_require__(37),
1474
+ var baseIndexOf = __webpack_require__(33),
1475
+ cacheIndexOf = __webpack_require__(34),
1476
+ createCache = __webpack_require__(35),
1477
+ getArray = __webpack_require__(36),
1478
1478
  isArguments = __webpack_require__(26),
1479
1479
  isArray = __webpack_require__(27),
1480
- largeArraySize = __webpack_require__(38),
1481
- releaseArray = __webpack_require__(39),
1482
- releaseObject = __webpack_require__(40);
1480
+ largeArraySize = __webpack_require__(37),
1481
+ releaseArray = __webpack_require__(38),
1482
+ releaseObject = __webpack_require__(39);
1483
1483
 
1484
1484
  /**
1485
1485
  * Creates an array of unique values present in all provided arrays using
@@ -1560,8 +1560,8 @@ return /******/ (function(modules) { // webpackBootstrap
1560
1560
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1561
1561
  * Available under MIT license <http://lodash.com/license>
1562
1562
  */
1563
- var baseUniq = __webpack_require__(41),
1564
- createCallback = __webpack_require__(28);
1563
+ var baseUniq = __webpack_require__(40),
1564
+ createCallback = __webpack_require__(41);
1565
1565
 
1566
1566
  /**
1567
1567
  * Creates a duplicate-value-free version of an array using strict equality
@@ -1635,7 +1635,7 @@ return /******/ (function(modules) { // webpackBootstrap
1635
1635
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1636
1636
  * Available under MIT license <http://lodash.com/license>
1637
1637
  */
1638
- var createCallback = __webpack_require__(28),
1638
+ var createCallback = __webpack_require__(41),
1639
1639
  forOwn = __webpack_require__(14);
1640
1640
 
1641
1641
  /**
@@ -1711,7 +1711,7 @@ return /******/ (function(modules) { // webpackBootstrap
1711
1711
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1712
1712
  * Available under MIT license <http://lodash.com/license>
1713
1713
  */
1714
- var baseCreateCallback = __webpack_require__(30),
1714
+ var baseCreateCallback = __webpack_require__(29),
1715
1715
  forOwn = __webpack_require__(14);
1716
1716
 
1717
1717
  /**
@@ -1814,7 +1814,7 @@ return /******/ (function(modules) { // webpackBootstrap
1814
1814
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1815
1815
  * Available under MIT license <http://lodash.com/license>
1816
1816
  */
1817
- var createCallback = __webpack_require__(28),
1817
+ var createCallback = __webpack_require__(41),
1818
1818
  forOwn = __webpack_require__(14);
1819
1819
 
1820
1820
  /**
@@ -1887,7 +1887,7 @@ return /******/ (function(modules) { // webpackBootstrap
1887
1887
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1888
1888
  * Available under MIT license <http://lodash.com/license>
1889
1889
  */
1890
- var objectTypes = __webpack_require__(31);
1890
+ var objectTypes = __webpack_require__(30);
1891
1891
 
1892
1892
  /**
1893
1893
  * Checks if `value` is the language type of Object.
@@ -1978,7 +1978,7 @@ return /******/ (function(modules) { // webpackBootstrap
1978
1978
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
1979
1979
  * Available under MIT license <http://lodash.com/license>
1980
1980
  */
1981
- var isNative = __webpack_require__(32);
1981
+ var isNative = __webpack_require__(31);
1982
1982
 
1983
1983
  /** `Object#toString` result shortcuts */
1984
1984
  var arrayClass = '[object Array]';
@@ -2029,101 +2029,14 @@ return /******/ (function(modules) { // webpackBootstrap
2029
2029
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2030
2030
  * Available under MIT license <http://lodash.com/license>
2031
2031
  */
2032
- var baseCreateCallback = __webpack_require__(30),
2033
- baseIsEqual = __webpack_require__(42),
2034
- isObject = __webpack_require__(25),
2035
- keys = __webpack_require__(15),
2036
- property = __webpack_require__(54);
2037
-
2038
- /**
2039
- * Produces a callback bound to an optional `thisArg`. If `func` is a property
2040
- * name the created callback will return the property value for a given element.
2041
- * If `func` is an object the created callback will return `true` for elements
2042
- * that contain the equivalent object properties, otherwise it will return `false`.
2043
- *
2044
- * @static
2045
- * @memberOf _
2046
- * @category Utilities
2047
- * @param {*} [func=identity] The value to convert to a callback.
2048
- * @param {*} [thisArg] The `this` binding of the created callback.
2049
- * @param {number} [argCount] The number of arguments the callback accepts.
2050
- * @returns {Function} Returns a callback function.
2051
- * @example
2052
- *
2053
- * var characters = [
2054
- * { 'name': 'barney', 'age': 36 },
2055
- * { 'name': 'fred', 'age': 40 }
2056
- * ];
2057
- *
2058
- * // wrap to create custom callback shorthands
2059
- * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {
2060
- * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);
2061
- * return !match ? func(callback, thisArg) : function(object) {
2062
- * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
2063
- * };
2064
- * });
2065
- *
2066
- * _.filter(characters, 'age__gt38');
2067
- * // => [{ 'name': 'fred', 'age': 40 }]
2068
- */
2069
- function createCallback(func, thisArg, argCount) {
2070
- var type = typeof func;
2071
- if (func == null || type == 'function') {
2072
- return baseCreateCallback(func, thisArg, argCount);
2073
- }
2074
- // handle "_.pluck" style callback shorthands
2075
- if (type != 'object') {
2076
- return property(func);
2077
- }
2078
- var props = keys(func),
2079
- key = props[0],
2080
- a = func[key];
2081
-
2082
- // handle "_.where" style callback shorthands
2083
- if (props.length == 1 && a === a && !isObject(a)) {
2084
- // fast path the common case of providing an object with a single
2085
- // property containing a primitive value
2086
- return function(object) {
2087
- var b = object[key];
2088
- return a === b && (a !== 0 || (1 / a == 1 / b));
2089
- };
2090
- }
2091
- return function(object) {
2092
- var length = props.length,
2093
- result = false;
2094
-
2095
- while (length--) {
2096
- if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {
2097
- break;
2098
- }
2099
- }
2100
- return result;
2101
- };
2102
- }
2103
-
2104
- module.exports = createCallback;
2105
-
2106
-
2107
- /***/ },
2108
- /* 29 */
2109
- /***/ function(module, exports, __webpack_require__) {
2110
-
2111
- /**
2112
- * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
2113
- * Build: `lodash modularize modern exports="node" -o ./modern/`
2114
- * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
2115
- * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
2116
- * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2117
- * Available under MIT license <http://lodash.com/license>
2118
- */
2119
- var assign = __webpack_require__(43),
2032
+ var assign = __webpack_require__(42),
2120
2033
  forEach = __webpack_require__(22),
2121
2034
  forOwn = __webpack_require__(14),
2122
- getArray = __webpack_require__(37),
2035
+ getArray = __webpack_require__(36),
2123
2036
  isArray = __webpack_require__(27),
2124
2037
  isObject = __webpack_require__(25),
2125
- releaseArray = __webpack_require__(39),
2126
- slice = __webpack_require__(44);
2038
+ releaseArray = __webpack_require__(38),
2039
+ slice = __webpack_require__(43);
2127
2040
 
2128
2041
  /** Used to match regexp flags from their coerced string values */
2129
2042
  var reFlags = /\w*$/;
@@ -2263,7 +2176,7 @@ return /******/ (function(modules) { // webpackBootstrap
2263
2176
 
2264
2177
 
2265
2178
  /***/ },
2266
- /* 30 */
2179
+ /* 29 */
2267
2180
  /***/ function(module, exports, __webpack_require__) {
2268
2181
 
2269
2182
  /**
@@ -2274,10 +2187,10 @@ return /******/ (function(modules) { // webpackBootstrap
2274
2187
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2275
2188
  * Available under MIT license <http://lodash.com/license>
2276
2189
  */
2277
- var bind = __webpack_require__(45),
2278
- identity = __webpack_require__(55),
2279
- setBindData = __webpack_require__(46),
2280
- support = __webpack_require__(47);
2190
+ var bind = __webpack_require__(44),
2191
+ identity = __webpack_require__(54),
2192
+ setBindData = __webpack_require__(45),
2193
+ support = __webpack_require__(46);
2281
2194
 
2282
2195
  /** Used to detected named functions */
2283
2196
  var reFuncName = /^\s*function[ \n\r\t]+\w/;
@@ -2349,7 +2262,7 @@ return /******/ (function(modules) { // webpackBootstrap
2349
2262
 
2350
2263
 
2351
2264
  /***/ },
2352
- /* 31 */
2265
+ /* 30 */
2353
2266
  /***/ function(module, exports, __webpack_require__) {
2354
2267
 
2355
2268
  /**
@@ -2375,7 +2288,7 @@ return /******/ (function(modules) { // webpackBootstrap
2375
2288
 
2376
2289
 
2377
2290
  /***/ },
2378
- /* 32 */
2291
+ /* 31 */
2379
2292
  /***/ function(module, exports, __webpack_require__) {
2380
2293
 
2381
2294
  /**
@@ -2415,7 +2328,7 @@ return /******/ (function(modules) { // webpackBootstrap
2415
2328
 
2416
2329
 
2417
2330
  /***/ },
2418
- /* 33 */
2331
+ /* 32 */
2419
2332
  /***/ function(module, exports, __webpack_require__) {
2420
2333
 
2421
2334
  /**
@@ -2426,7 +2339,7 @@ return /******/ (function(modules) { // webpackBootstrap
2426
2339
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2427
2340
  * Available under MIT license <http://lodash.com/license>
2428
2341
  */
2429
- var objectTypes = __webpack_require__(31);
2342
+ var objectTypes = __webpack_require__(30);
2430
2343
 
2431
2344
  /** Used for native method references */
2432
2345
  var objectProto = Object.prototype;
@@ -2459,7 +2372,7 @@ return /******/ (function(modules) { // webpackBootstrap
2459
2372
 
2460
2373
 
2461
2374
  /***/ },
2462
- /* 34 */
2375
+ /* 33 */
2463
2376
  /***/ function(module, exports, __webpack_require__) {
2464
2377
 
2465
2378
  /**
@@ -2497,7 +2410,7 @@ return /******/ (function(modules) { // webpackBootstrap
2497
2410
 
2498
2411
 
2499
2412
  /***/ },
2500
- /* 35 */
2413
+ /* 34 */
2501
2414
  /***/ function(module, exports, __webpack_require__) {
2502
2415
 
2503
2416
  /**
@@ -2508,8 +2421,8 @@ return /******/ (function(modules) { // webpackBootstrap
2508
2421
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2509
2422
  * Available under MIT license <http://lodash.com/license>
2510
2423
  */
2511
- var baseIndexOf = __webpack_require__(34),
2512
- keyPrefix = __webpack_require__(48);
2424
+ var baseIndexOf = __webpack_require__(33),
2425
+ keyPrefix = __webpack_require__(47);
2513
2426
 
2514
2427
  /**
2515
2428
  * An implementation of `_.contains` for cache objects that mimics the return
@@ -2542,7 +2455,7 @@ return /******/ (function(modules) { // webpackBootstrap
2542
2455
 
2543
2456
 
2544
2457
  /***/ },
2545
- /* 36 */
2458
+ /* 35 */
2546
2459
  /***/ function(module, exports, __webpack_require__) {
2547
2460
 
2548
2461
  /**
@@ -2553,9 +2466,9 @@ return /******/ (function(modules) { // webpackBootstrap
2553
2466
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2554
2467
  * Available under MIT license <http://lodash.com/license>
2555
2468
  */
2556
- var cachePush = __webpack_require__(49),
2557
- getObject = __webpack_require__(50),
2558
- releaseObject = __webpack_require__(40);
2469
+ var cachePush = __webpack_require__(48),
2470
+ getObject = __webpack_require__(49),
2471
+ releaseObject = __webpack_require__(39);
2559
2472
 
2560
2473
  /**
2561
2474
  * Creates a cache object to optimize linear searches of large arrays.
@@ -2593,7 +2506,7 @@ return /******/ (function(modules) { // webpackBootstrap
2593
2506
 
2594
2507
 
2595
2508
  /***/ },
2596
- /* 37 */
2509
+ /* 36 */
2597
2510
  /***/ function(module, exports, __webpack_require__) {
2598
2511
 
2599
2512
  /**
@@ -2604,7 +2517,7 @@ return /******/ (function(modules) { // webpackBootstrap
2604
2517
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2605
2518
  * Available under MIT license <http://lodash.com/license>
2606
2519
  */
2607
- var arrayPool = __webpack_require__(51);
2520
+ var arrayPool = __webpack_require__(50);
2608
2521
 
2609
2522
  /**
2610
2523
  * Gets an array from the array pool or creates a new one if the pool is empty.
@@ -2620,7 +2533,7 @@ return /******/ (function(modules) { // webpackBootstrap
2620
2533
 
2621
2534
 
2622
2535
  /***/ },
2623
- /* 38 */
2536
+ /* 37 */
2624
2537
  /***/ function(module, exports, __webpack_require__) {
2625
2538
 
2626
2539
  /**
@@ -2639,7 +2552,7 @@ return /******/ (function(modules) { // webpackBootstrap
2639
2552
 
2640
2553
 
2641
2554
  /***/ },
2642
- /* 39 */
2555
+ /* 38 */
2643
2556
  /***/ function(module, exports, __webpack_require__) {
2644
2557
 
2645
2558
  /**
@@ -2650,8 +2563,8 @@ return /******/ (function(modules) { // webpackBootstrap
2650
2563
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2651
2564
  * Available under MIT license <http://lodash.com/license>
2652
2565
  */
2653
- var arrayPool = __webpack_require__(51),
2654
- maxPoolSize = __webpack_require__(52);
2566
+ var arrayPool = __webpack_require__(50),
2567
+ maxPoolSize = __webpack_require__(51);
2655
2568
 
2656
2569
  /**
2657
2570
  * Releases the given array back to the array pool.
@@ -2670,7 +2583,7 @@ return /******/ (function(modules) { // webpackBootstrap
2670
2583
 
2671
2584
 
2672
2585
  /***/ },
2673
- /* 40 */
2586
+ /* 39 */
2674
2587
  /***/ function(module, exports, __webpack_require__) {
2675
2588
 
2676
2589
  /**
@@ -2681,8 +2594,8 @@ return /******/ (function(modules) { // webpackBootstrap
2681
2594
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2682
2595
  * Available under MIT license <http://lodash.com/license>
2683
2596
  */
2684
- var maxPoolSize = __webpack_require__(52),
2685
- objectPool = __webpack_require__(53);
2597
+ var maxPoolSize = __webpack_require__(51),
2598
+ objectPool = __webpack_require__(52);
2686
2599
 
2687
2600
  /**
2688
2601
  * Releases the given object back to the object pool.
@@ -2705,7 +2618,7 @@ return /******/ (function(modules) { // webpackBootstrap
2705
2618
 
2706
2619
 
2707
2620
  /***/ },
2708
- /* 41 */
2621
+ /* 40 */
2709
2622
  /***/ function(module, exports, __webpack_require__) {
2710
2623
 
2711
2624
  /**
@@ -2716,13 +2629,13 @@ return /******/ (function(modules) { // webpackBootstrap
2716
2629
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2717
2630
  * Available under MIT license <http://lodash.com/license>
2718
2631
  */
2719
- var baseIndexOf = __webpack_require__(34),
2720
- cacheIndexOf = __webpack_require__(35),
2721
- createCache = __webpack_require__(36),
2722
- getArray = __webpack_require__(37),
2723
- largeArraySize = __webpack_require__(38),
2724
- releaseArray = __webpack_require__(39),
2725
- releaseObject = __webpack_require__(40);
2632
+ var baseIndexOf = __webpack_require__(33),
2633
+ cacheIndexOf = __webpack_require__(34),
2634
+ createCache = __webpack_require__(35),
2635
+ getArray = __webpack_require__(36),
2636
+ largeArraySize = __webpack_require__(37),
2637
+ releaseArray = __webpack_require__(38),
2638
+ releaseObject = __webpack_require__(39);
2726
2639
 
2727
2640
  /**
2728
2641
  * The base implementation of `_.uniq` without support for callback shorthands
@@ -2775,7 +2688,7 @@ return /******/ (function(modules) { // webpackBootstrap
2775
2688
 
2776
2689
 
2777
2690
  /***/ },
2778
- /* 42 */
2691
+ /* 41 */
2779
2692
  /***/ function(module, exports, __webpack_require__) {
2780
2693
 
2781
2694
  /**
@@ -2786,211 +2699,83 @@ return /******/ (function(modules) { // webpackBootstrap
2786
2699
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
2787
2700
  * Available under MIT license <http://lodash.com/license>
2788
2701
  */
2789
- var forIn = __webpack_require__(56),
2790
- getArray = __webpack_require__(37),
2791
- isFunction = __webpack_require__(17),
2792
- objectTypes = __webpack_require__(31),
2793
- releaseArray = __webpack_require__(39);
2794
-
2795
- /** `Object#toString` result shortcuts */
2796
- var argsClass = '[object Arguments]',
2797
- arrayClass = '[object Array]',
2798
- boolClass = '[object Boolean]',
2799
- dateClass = '[object Date]',
2800
- numberClass = '[object Number]',
2801
- objectClass = '[object Object]',
2802
- regexpClass = '[object RegExp]',
2803
- stringClass = '[object String]';
2804
-
2805
- /** Used for native method references */
2806
- var objectProto = Object.prototype;
2807
-
2808
- /** Used to resolve the internal [[Class]] of values */
2809
- var toString = objectProto.toString;
2810
-
2811
- /** Native method shortcuts */
2812
- var hasOwnProperty = objectProto.hasOwnProperty;
2702
+ var baseCreateCallback = __webpack_require__(29),
2703
+ baseIsEqual = __webpack_require__(53),
2704
+ isObject = __webpack_require__(25),
2705
+ keys = __webpack_require__(15),
2706
+ property = __webpack_require__(55);
2813
2707
 
2814
2708
  /**
2815
- * The base implementation of `_.isEqual`, without support for `thisArg` binding,
2816
- * that allows partial "_.where" style comparisons.
2709
+ * Produces a callback bound to an optional `thisArg`. If `func` is a property
2710
+ * name the created callback will return the property value for a given element.
2711
+ * If `func` is an object the created callback will return `true` for elements
2712
+ * that contain the equivalent object properties, otherwise it will return `false`.
2817
2713
  *
2818
- * @private
2819
- * @param {*} a The value to compare.
2820
- * @param {*} b The other value to compare.
2821
- * @param {Function} [callback] The function to customize comparing values.
2822
- * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.
2823
- * @param {Array} [stackA=[]] Tracks traversed `a` objects.
2824
- * @param {Array} [stackB=[]] Tracks traversed `b` objects.
2825
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2714
+ * @static
2715
+ * @memberOf _
2716
+ * @category Utilities
2717
+ * @param {*} [func=identity] The value to convert to a callback.
2718
+ * @param {*} [thisArg] The `this` binding of the created callback.
2719
+ * @param {number} [argCount] The number of arguments the callback accepts.
2720
+ * @returns {Function} Returns a callback function.
2721
+ * @example
2722
+ *
2723
+ * var characters = [
2724
+ * { 'name': 'barney', 'age': 36 },
2725
+ * { 'name': 'fred', 'age': 40 }
2726
+ * ];
2727
+ *
2728
+ * // wrap to create custom callback shorthands
2729
+ * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {
2730
+ * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);
2731
+ * return !match ? func(callback, thisArg) : function(object) {
2732
+ * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];
2733
+ * };
2734
+ * });
2735
+ *
2736
+ * _.filter(characters, 'age__gt38');
2737
+ * // => [{ 'name': 'fred', 'age': 40 }]
2826
2738
  */
2827
- function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {
2828
- // used to indicate that when comparing objects, `a` has at least the properties of `b`
2829
- if (callback) {
2830
- var result = callback(a, b);
2831
- if (typeof result != 'undefined') {
2832
- return !!result;
2833
- }
2834
- }
2835
- // exit early for identical values
2836
- if (a === b) {
2837
- // treat `+0` vs. `-0` as not equal
2838
- return a !== 0 || (1 / a == 1 / b);
2839
- }
2840
- var type = typeof a,
2841
- otherType = typeof b;
2842
-
2843
- // exit early for unlike primitive values
2844
- if (a === a &&
2845
- !(a && objectTypes[type]) &&
2846
- !(b && objectTypes[otherType])) {
2847
- return false;
2739
+ function createCallback(func, thisArg, argCount) {
2740
+ var type = typeof func;
2741
+ if (func == null || type == 'function') {
2742
+ return baseCreateCallback(func, thisArg, argCount);
2848
2743
  }
2849
- // exit early for `null` and `undefined` avoiding ES3's Function#call behavior
2850
- // http://es5.github.io/#x15.3.4.4
2851
- if (a == null || b == null) {
2852
- return a === b;
2744
+ // handle "_.pluck" style callback shorthands
2745
+ if (type != 'object') {
2746
+ return property(func);
2853
2747
  }
2854
- // compare [[Class]] names
2855
- var className = toString.call(a),
2856
- otherClass = toString.call(b);
2748
+ var props = keys(func),
2749
+ key = props[0],
2750
+ a = func[key];
2857
2751
 
2858
- if (className == argsClass) {
2859
- className = objectClass;
2860
- }
2861
- if (otherClass == argsClass) {
2862
- otherClass = objectClass;
2863
- }
2864
- if (className != otherClass) {
2865
- return false;
2752
+ // handle "_.where" style callback shorthands
2753
+ if (props.length == 1 && a === a && !isObject(a)) {
2754
+ // fast path the common case of providing an object with a single
2755
+ // property containing a primitive value
2756
+ return function(object) {
2757
+ var b = object[key];
2758
+ return a === b && (a !== 0 || (1 / a == 1 / b));
2759
+ };
2866
2760
  }
2867
- switch (className) {
2868
- case boolClass:
2869
- case dateClass:
2870
- // coerce dates and booleans to numbers, dates to milliseconds and booleans
2871
- // to `1` or `0` treating invalid dates coerced to `NaN` as not equal
2872
- return +a == +b;
2761
+ return function(object) {
2762
+ var length = props.length,
2763
+ result = false;
2873
2764
 
2874
- case numberClass:
2875
- // treat `NaN` vs. `NaN` as equal
2876
- return (a != +a)
2877
- ? b != +b
2878
- // but treat `+0` vs. `-0` as not equal
2879
- : (a == 0 ? (1 / a == 1 / b) : a == +b);
2765
+ while (length--) {
2766
+ if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {
2767
+ break;
2768
+ }
2769
+ }
2770
+ return result;
2771
+ };
2772
+ }
2880
2773
 
2881
- case regexpClass:
2882
- case stringClass:
2883
- // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)
2884
- // treat string primitives and their corresponding object instances as equal
2885
- return a == String(b);
2886
- }
2887
- var isArr = className == arrayClass;
2888
- if (!isArr) {
2889
- // unwrap any `lodash` wrapped values
2890
- var aWrapped = hasOwnProperty.call(a, '__wrapped__'),
2891
- bWrapped = hasOwnProperty.call(b, '__wrapped__');
2892
-
2893
- if (aWrapped || bWrapped) {
2894
- return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);
2895
- }
2896
- // exit for functions and DOM nodes
2897
- if (className != objectClass) {
2898
- return false;
2899
- }
2900
- // in older versions of Opera, `arguments` objects have `Array` constructors
2901
- var ctorA = a.constructor,
2902
- ctorB = b.constructor;
2903
-
2904
- // non `Object` object instances with different constructors are not equal
2905
- if (ctorA != ctorB &&
2906
- !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
2907
- ('constructor' in a && 'constructor' in b)
2908
- ) {
2909
- return false;
2910
- }
2911
- }
2912
- // assume cyclic structures are equal
2913
- // the algorithm for detecting cyclic structures is adapted from ES 5.1
2914
- // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)
2915
- var initedStack = !stackA;
2916
- stackA || (stackA = getArray());
2917
- stackB || (stackB = getArray());
2918
-
2919
- var length = stackA.length;
2920
- while (length--) {
2921
- if (stackA[length] == a) {
2922
- return stackB[length] == b;
2923
- }
2924
- }
2925
- var size = 0;
2926
- result = true;
2927
-
2928
- // add `a` and `b` to the stack of traversed objects
2929
- stackA.push(a);
2930
- stackB.push(b);
2931
-
2932
- // recursively compare objects and arrays (susceptible to call stack limits)
2933
- if (isArr) {
2934
- // compare lengths to determine if a deep comparison is necessary
2935
- length = a.length;
2936
- size = b.length;
2937
- result = size == length;
2938
-
2939
- if (result || isWhere) {
2940
- // deep compare the contents, ignoring non-numeric properties
2941
- while (size--) {
2942
- var index = length,
2943
- value = b[size];
2944
-
2945
- if (isWhere) {
2946
- while (index--) {
2947
- if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {
2948
- break;
2949
- }
2950
- }
2951
- } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {
2952
- break;
2953
- }
2954
- }
2955
- }
2956
- }
2957
- else {
2958
- // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`
2959
- // which, in this case, is more costly
2960
- forIn(b, function(value, key, b) {
2961
- if (hasOwnProperty.call(b, key)) {
2962
- // count the number of properties.
2963
- size++;
2964
- // deep compare each property value.
2965
- return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));
2966
- }
2967
- });
2968
-
2969
- if (result && !isWhere) {
2970
- // ensure both objects have the same number of properties
2971
- forIn(a, function(value, key, a) {
2972
- if (hasOwnProperty.call(a, key)) {
2973
- // `size` will be `-1` if `a` has more properties than `b`
2974
- return (result = --size > -1);
2975
- }
2976
- });
2977
- }
2978
- }
2979
- stackA.pop();
2980
- stackB.pop();
2981
-
2982
- if (initedStack) {
2983
- releaseArray(stackA);
2984
- releaseArray(stackB);
2985
- }
2986
- return result;
2987
- }
2988
-
2989
- module.exports = baseIsEqual;
2774
+ module.exports = createCallback;
2990
2775
 
2991
2776
 
2992
2777
  /***/ },
2993
- /* 43 */
2778
+ /* 42 */
2994
2779
  /***/ function(module, exports, __webpack_require__) {
2995
2780
 
2996
2781
  /**
@@ -3001,9 +2786,9 @@ return /******/ (function(modules) { // webpackBootstrap
3001
2786
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3002
2787
  * Available under MIT license <http://lodash.com/license>
3003
2788
  */
3004
- var baseCreateCallback = __webpack_require__(30),
2789
+ var baseCreateCallback = __webpack_require__(29),
3005
2790
  keys = __webpack_require__(15),
3006
- objectTypes = __webpack_require__(31);
2791
+ objectTypes = __webpack_require__(30);
3007
2792
 
3008
2793
  /**
3009
2794
  * Assigns own enumerable properties of source object(s) to the destination
@@ -3066,7 +2851,7 @@ return /******/ (function(modules) { // webpackBootstrap
3066
2851
 
3067
2852
 
3068
2853
  /***/ },
3069
- /* 44 */
2854
+ /* 43 */
3070
2855
  /***/ function(module, exports, __webpack_require__) {
3071
2856
 
3072
2857
  /**
@@ -3110,7 +2895,7 @@ return /******/ (function(modules) { // webpackBootstrap
3110
2895
 
3111
2896
 
3112
2897
  /***/ },
3113
- /* 45 */
2898
+ /* 44 */
3114
2899
  /***/ function(module, exports, __webpack_require__) {
3115
2900
 
3116
2901
  /**
@@ -3121,8 +2906,8 @@ return /******/ (function(modules) { // webpackBootstrap
3121
2906
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3122
2907
  * Available under MIT license <http://lodash.com/license>
3123
2908
  */
3124
- var createWrapper = __webpack_require__(57),
3125
- slice = __webpack_require__(44);
2909
+ var createWrapper = __webpack_require__(56),
2910
+ slice = __webpack_require__(43);
3126
2911
 
3127
2912
  /**
3128
2913
  * Creates a function that, when called, invokes `func` with the `this`
@@ -3156,7 +2941,7 @@ return /******/ (function(modules) { // webpackBootstrap
3156
2941
 
3157
2942
 
3158
2943
  /***/ },
3159
- /* 46 */
2944
+ /* 45 */
3160
2945
  /***/ function(module, exports, __webpack_require__) {
3161
2946
 
3162
2947
  /**
@@ -3167,8 +2952,8 @@ return /******/ (function(modules) { // webpackBootstrap
3167
2952
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3168
2953
  * Available under MIT license <http://lodash.com/license>
3169
2954
  */
3170
- var isNative = __webpack_require__(32),
3171
- noop = __webpack_require__(58);
2955
+ var isNative = __webpack_require__(31),
2956
+ noop = __webpack_require__(57);
3172
2957
 
3173
2958
  /** Used as the property descriptor for `__bindData__` */
3174
2959
  var descriptor = {
@@ -3205,7 +2990,7 @@ return /******/ (function(modules) { // webpackBootstrap
3205
2990
 
3206
2991
 
3207
2992
  /***/ },
3208
- /* 47 */
2993
+ /* 46 */
3209
2994
  /***/ function(module, exports, __webpack_require__) {
3210
2995
 
3211
2996
  /* WEBPACK VAR INJECTION */(function(global) {/**
@@ -3216,7 +3001,7 @@ return /******/ (function(modules) { // webpackBootstrap
3216
3001
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3217
3002
  * Available under MIT license <http://lodash.com/license>
3218
3003
  */
3219
- var isNative = __webpack_require__(32);
3004
+ var isNative = __webpack_require__(31);
3220
3005
 
3221
3006
  /** Used to detect functions containing a `this` reference */
3222
3007
  var reThis = /\bthis\b/;
@@ -3252,7 +3037,7 @@ return /******/ (function(modules) { // webpackBootstrap
3252
3037
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
3253
3038
 
3254
3039
  /***/ },
3255
- /* 48 */
3040
+ /* 47 */
3256
3041
  /***/ function(module, exports, __webpack_require__) {
3257
3042
 
3258
3043
  /**
@@ -3271,7 +3056,7 @@ return /******/ (function(modules) { // webpackBootstrap
3271
3056
 
3272
3057
 
3273
3058
  /***/ },
3274
- /* 49 */
3059
+ /* 48 */
3275
3060
  /***/ function(module, exports, __webpack_require__) {
3276
3061
 
3277
3062
  /**
@@ -3282,7 +3067,7 @@ return /******/ (function(modules) { // webpackBootstrap
3282
3067
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3283
3068
  * Available under MIT license <http://lodash.com/license>
3284
3069
  */
3285
- var keyPrefix = __webpack_require__(48);
3070
+ var keyPrefix = __webpack_require__(47);
3286
3071
 
3287
3072
  /**
3288
3073
  * Adds a given value to the corresponding cache object.
@@ -3315,7 +3100,7 @@ return /******/ (function(modules) { // webpackBootstrap
3315
3100
 
3316
3101
 
3317
3102
  /***/ },
3318
- /* 50 */
3103
+ /* 49 */
3319
3104
  /***/ function(module, exports, __webpack_require__) {
3320
3105
 
3321
3106
  /**
@@ -3326,7 +3111,7 @@ return /******/ (function(modules) { // webpackBootstrap
3326
3111
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3327
3112
  * Available under MIT license <http://lodash.com/license>
3328
3113
  */
3329
- var objectPool = __webpack_require__(53);
3114
+ var objectPool = __webpack_require__(52);
3330
3115
 
3331
3116
  /**
3332
3117
  * Gets an object from the object pool or creates a new one if the pool is empty.
@@ -3356,7 +3141,7 @@ return /******/ (function(modules) { // webpackBootstrap
3356
3141
 
3357
3142
 
3358
3143
  /***/ },
3359
- /* 51 */
3144
+ /* 50 */
3360
3145
  /***/ function(module, exports, __webpack_require__) {
3361
3146
 
3362
3147
  /**
@@ -3375,7 +3160,7 @@ return /******/ (function(modules) { // webpackBootstrap
3375
3160
 
3376
3161
 
3377
3162
  /***/ },
3378
- /* 52 */
3163
+ /* 51 */
3379
3164
  /***/ function(module, exports, __webpack_require__) {
3380
3165
 
3381
3166
  /**
@@ -3394,7 +3179,7 @@ return /******/ (function(modules) { // webpackBootstrap
3394
3179
 
3395
3180
 
3396
3181
  /***/ },
3397
- /* 53 */
3182
+ /* 52 */
3398
3183
  /***/ function(module, exports, __webpack_require__) {
3399
3184
 
3400
3185
  /**
@@ -3413,7 +3198,7 @@ return /******/ (function(modules) { // webpackBootstrap
3413
3198
 
3414
3199
 
3415
3200
  /***/ },
3416
- /* 54 */
3201
+ /* 53 */
3417
3202
  /***/ function(module, exports, __webpack_require__) {
3418
3203
 
3419
3204
  /**
@@ -3424,42 +3209,211 @@ return /******/ (function(modules) { // webpackBootstrap
3424
3209
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3425
3210
  * Available under MIT license <http://lodash.com/license>
3426
3211
  */
3212
+ var forIn = __webpack_require__(58),
3213
+ getArray = __webpack_require__(36),
3214
+ isFunction = __webpack_require__(17),
3215
+ objectTypes = __webpack_require__(30),
3216
+ releaseArray = __webpack_require__(38);
3217
+
3218
+ /** `Object#toString` result shortcuts */
3219
+ var argsClass = '[object Arguments]',
3220
+ arrayClass = '[object Array]',
3221
+ boolClass = '[object Boolean]',
3222
+ dateClass = '[object Date]',
3223
+ numberClass = '[object Number]',
3224
+ objectClass = '[object Object]',
3225
+ regexpClass = '[object RegExp]',
3226
+ stringClass = '[object String]';
3227
+
3228
+ /** Used for native method references */
3229
+ var objectProto = Object.prototype;
3230
+
3231
+ /** Used to resolve the internal [[Class]] of values */
3232
+ var toString = objectProto.toString;
3233
+
3234
+ /** Native method shortcuts */
3235
+ var hasOwnProperty = objectProto.hasOwnProperty;
3427
3236
 
3428
3237
  /**
3429
- * Creates a "_.pluck" style function, which returns the `key` value of a
3430
- * given object.
3431
- *
3432
- * @static
3433
- * @memberOf _
3434
- * @category Utilities
3435
- * @param {string} key The name of the property to retrieve.
3436
- * @returns {Function} Returns the new function.
3437
- * @example
3438
- *
3439
- * var characters = [
3440
- * { 'name': 'fred', 'age': 40 },
3441
- * { 'name': 'barney', 'age': 36 }
3442
- * ];
3443
- *
3444
- * var getName = _.property('name');
3445
- *
3446
- * _.map(characters, getName);
3447
- * // => ['barney', 'fred']
3238
+ * The base implementation of `_.isEqual`, without support for `thisArg` binding,
3239
+ * that allows partial "_.where" style comparisons.
3448
3240
  *
3449
- * _.sortBy(characters, getName);
3450
- * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]
3241
+ * @private
3242
+ * @param {*} a The value to compare.
3243
+ * @param {*} b The other value to compare.
3244
+ * @param {Function} [callback] The function to customize comparing values.
3245
+ * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.
3246
+ * @param {Array} [stackA=[]] Tracks traversed `a` objects.
3247
+ * @param {Array} [stackB=[]] Tracks traversed `b` objects.
3248
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
3451
3249
  */
3452
- function property(key) {
3453
- return function(object) {
3454
- return object[key];
3455
- };
3250
+ function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {
3251
+ // used to indicate that when comparing objects, `a` has at least the properties of `b`
3252
+ if (callback) {
3253
+ var result = callback(a, b);
3254
+ if (typeof result != 'undefined') {
3255
+ return !!result;
3256
+ }
3257
+ }
3258
+ // exit early for identical values
3259
+ if (a === b) {
3260
+ // treat `+0` vs. `-0` as not equal
3261
+ return a !== 0 || (1 / a == 1 / b);
3262
+ }
3263
+ var type = typeof a,
3264
+ otherType = typeof b;
3265
+
3266
+ // exit early for unlike primitive values
3267
+ if (a === a &&
3268
+ !(a && objectTypes[type]) &&
3269
+ !(b && objectTypes[otherType])) {
3270
+ return false;
3271
+ }
3272
+ // exit early for `null` and `undefined` avoiding ES3's Function#call behavior
3273
+ // http://es5.github.io/#x15.3.4.4
3274
+ if (a == null || b == null) {
3275
+ return a === b;
3276
+ }
3277
+ // compare [[Class]] names
3278
+ var className = toString.call(a),
3279
+ otherClass = toString.call(b);
3280
+
3281
+ if (className == argsClass) {
3282
+ className = objectClass;
3283
+ }
3284
+ if (otherClass == argsClass) {
3285
+ otherClass = objectClass;
3286
+ }
3287
+ if (className != otherClass) {
3288
+ return false;
3289
+ }
3290
+ switch (className) {
3291
+ case boolClass:
3292
+ case dateClass:
3293
+ // coerce dates and booleans to numbers, dates to milliseconds and booleans
3294
+ // to `1` or `0` treating invalid dates coerced to `NaN` as not equal
3295
+ return +a == +b;
3296
+
3297
+ case numberClass:
3298
+ // treat `NaN` vs. `NaN` as equal
3299
+ return (a != +a)
3300
+ ? b != +b
3301
+ // but treat `+0` vs. `-0` as not equal
3302
+ : (a == 0 ? (1 / a == 1 / b) : a == +b);
3303
+
3304
+ case regexpClass:
3305
+ case stringClass:
3306
+ // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)
3307
+ // treat string primitives and their corresponding object instances as equal
3308
+ return a == String(b);
3309
+ }
3310
+ var isArr = className == arrayClass;
3311
+ if (!isArr) {
3312
+ // unwrap any `lodash` wrapped values
3313
+ var aWrapped = hasOwnProperty.call(a, '__wrapped__'),
3314
+ bWrapped = hasOwnProperty.call(b, '__wrapped__');
3315
+
3316
+ if (aWrapped || bWrapped) {
3317
+ return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);
3318
+ }
3319
+ // exit for functions and DOM nodes
3320
+ if (className != objectClass) {
3321
+ return false;
3322
+ }
3323
+ // in older versions of Opera, `arguments` objects have `Array` constructors
3324
+ var ctorA = a.constructor,
3325
+ ctorB = b.constructor;
3326
+
3327
+ // non `Object` object instances with different constructors are not equal
3328
+ if (ctorA != ctorB &&
3329
+ !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&
3330
+ ('constructor' in a && 'constructor' in b)
3331
+ ) {
3332
+ return false;
3333
+ }
3334
+ }
3335
+ // assume cyclic structures are equal
3336
+ // the algorithm for detecting cyclic structures is adapted from ES 5.1
3337
+ // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)
3338
+ var initedStack = !stackA;
3339
+ stackA || (stackA = getArray());
3340
+ stackB || (stackB = getArray());
3341
+
3342
+ var length = stackA.length;
3343
+ while (length--) {
3344
+ if (stackA[length] == a) {
3345
+ return stackB[length] == b;
3346
+ }
3347
+ }
3348
+ var size = 0;
3349
+ result = true;
3350
+
3351
+ // add `a` and `b` to the stack of traversed objects
3352
+ stackA.push(a);
3353
+ stackB.push(b);
3354
+
3355
+ // recursively compare objects and arrays (susceptible to call stack limits)
3356
+ if (isArr) {
3357
+ // compare lengths to determine if a deep comparison is necessary
3358
+ length = a.length;
3359
+ size = b.length;
3360
+ result = size == length;
3361
+
3362
+ if (result || isWhere) {
3363
+ // deep compare the contents, ignoring non-numeric properties
3364
+ while (size--) {
3365
+ var index = length,
3366
+ value = b[size];
3367
+
3368
+ if (isWhere) {
3369
+ while (index--) {
3370
+ if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {
3371
+ break;
3372
+ }
3373
+ }
3374
+ } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {
3375
+ break;
3376
+ }
3377
+ }
3378
+ }
3379
+ }
3380
+ else {
3381
+ // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`
3382
+ // which, in this case, is more costly
3383
+ forIn(b, function(value, key, b) {
3384
+ if (hasOwnProperty.call(b, key)) {
3385
+ // count the number of properties.
3386
+ size++;
3387
+ // deep compare each property value.
3388
+ return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));
3389
+ }
3390
+ });
3391
+
3392
+ if (result && !isWhere) {
3393
+ // ensure both objects have the same number of properties
3394
+ forIn(a, function(value, key, a) {
3395
+ if (hasOwnProperty.call(a, key)) {
3396
+ // `size` will be `-1` if `a` has more properties than `b`
3397
+ return (result = --size > -1);
3398
+ }
3399
+ });
3400
+ }
3401
+ }
3402
+ stackA.pop();
3403
+ stackB.pop();
3404
+
3405
+ if (initedStack) {
3406
+ releaseArray(stackA);
3407
+ releaseArray(stackB);
3408
+ }
3409
+ return result;
3456
3410
  }
3457
3411
 
3458
- module.exports = property;
3412
+ module.exports = baseIsEqual;
3459
3413
 
3460
3414
 
3461
3415
  /***/ },
3462
- /* 55 */
3416
+ /* 54 */
3463
3417
  /***/ function(module, exports, __webpack_require__) {
3464
3418
 
3465
3419
  /**
@@ -3493,7 +3447,7 @@ return /******/ (function(modules) { // webpackBootstrap
3493
3447
 
3494
3448
 
3495
3449
  /***/ },
3496
- /* 56 */
3450
+ /* 55 */
3497
3451
  /***/ function(module, exports, __webpack_require__) {
3498
3452
 
3499
3453
  /**
@@ -3504,56 +3458,42 @@ return /******/ (function(modules) { // webpackBootstrap
3504
3458
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3505
3459
  * Available under MIT license <http://lodash.com/license>
3506
3460
  */
3507
- var baseCreateCallback = __webpack_require__(30),
3508
- objectTypes = __webpack_require__(31);
3509
3461
 
3510
3462
  /**
3511
- * Iterates over own and inherited enumerable properties of an object,
3512
- * executing the callback for each property. The callback is bound to `thisArg`
3513
- * and invoked with three arguments; (value, key, object). Callbacks may exit
3514
- * iteration early by explicitly returning `false`.
3463
+ * Creates a "_.pluck" style function, which returns the `key` value of a
3464
+ * given object.
3515
3465
  *
3516
3466
  * @static
3517
3467
  * @memberOf _
3518
- * @type Function
3519
- * @category Objects
3520
- * @param {Object} object The object to iterate over.
3521
- * @param {Function} [callback=identity] The function called per iteration.
3522
- * @param {*} [thisArg] The `this` binding of `callback`.
3523
- * @returns {Object} Returns `object`.
3468
+ * @category Utilities
3469
+ * @param {string} key The name of the property to retrieve.
3470
+ * @returns {Function} Returns the new function.
3524
3471
  * @example
3525
3472
  *
3526
- * function Shape() {
3527
- * this.x = 0;
3528
- * this.y = 0;
3529
- * }
3473
+ * var characters = [
3474
+ * { 'name': 'fred', 'age': 40 },
3475
+ * { 'name': 'barney', 'age': 36 }
3476
+ * ];
3530
3477
  *
3531
- * Shape.prototype.move = function(x, y) {
3532
- * this.x += x;
3533
- * this.y += y;
3534
- * };
3478
+ * var getName = _.property('name');
3535
3479
  *
3536
- * _.forIn(new Shape, function(value, key) {
3537
- * console.log(key);
3538
- * });
3539
- * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)
3480
+ * _.map(characters, getName);
3481
+ * // => ['barney', 'fred']
3482
+ *
3483
+ * _.sortBy(characters, getName);
3484
+ * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]
3540
3485
  */
3541
- var forIn = function(collection, callback, thisArg) {
3542
- var index, iterable = collection, result = iterable;
3543
- if (!iterable) return result;
3544
- if (!objectTypes[typeof iterable]) return result;
3545
- callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
3546
- for (index in iterable) {
3547
- if (callback(iterable[index], index, collection) === false) return result;
3548
- }
3549
- return result
3550
- };
3486
+ function property(key) {
3487
+ return function(object) {
3488
+ return object[key];
3489
+ };
3490
+ }
3551
3491
 
3552
- module.exports = forIn;
3492
+ module.exports = property;
3553
3493
 
3554
3494
 
3555
3495
  /***/ },
3556
- /* 57 */
3496
+ /* 56 */
3557
3497
  /***/ function(module, exports, __webpack_require__) {
3558
3498
 
3559
3499
  /**
@@ -3567,7 +3507,7 @@ return /******/ (function(modules) { // webpackBootstrap
3567
3507
  var baseBind = __webpack_require__(59),
3568
3508
  baseCreateWrapper = __webpack_require__(60),
3569
3509
  isFunction = __webpack_require__(17),
3570
- slice = __webpack_require__(44);
3510
+ slice = __webpack_require__(43);
3571
3511
 
3572
3512
  /**
3573
3513
  * Used for `Array` method references.
@@ -3665,7 +3605,7 @@ return /******/ (function(modules) { // webpackBootstrap
3665
3605
 
3666
3606
 
3667
3607
  /***/ },
3668
- /* 58 */
3608
+ /* 57 */
3669
3609
  /***/ function(module, exports, __webpack_require__) {
3670
3610
 
3671
3611
  /**
@@ -3696,6 +3636,66 @@ return /******/ (function(modules) { // webpackBootstrap
3696
3636
  module.exports = noop;
3697
3637
 
3698
3638
 
3639
+ /***/ },
3640
+ /* 58 */
3641
+ /***/ function(module, exports, __webpack_require__) {
3642
+
3643
+ /**
3644
+ * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>
3645
+ * Build: `lodash modularize modern exports="node" -o ./modern/`
3646
+ * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
3647
+ * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>
3648
+ * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3649
+ * Available under MIT license <http://lodash.com/license>
3650
+ */
3651
+ var baseCreateCallback = __webpack_require__(29),
3652
+ objectTypes = __webpack_require__(30);
3653
+
3654
+ /**
3655
+ * Iterates over own and inherited enumerable properties of an object,
3656
+ * executing the callback for each property. The callback is bound to `thisArg`
3657
+ * and invoked with three arguments; (value, key, object). Callbacks may exit
3658
+ * iteration early by explicitly returning `false`.
3659
+ *
3660
+ * @static
3661
+ * @memberOf _
3662
+ * @type Function
3663
+ * @category Objects
3664
+ * @param {Object} object The object to iterate over.
3665
+ * @param {Function} [callback=identity] The function called per iteration.
3666
+ * @param {*} [thisArg] The `this` binding of `callback`.
3667
+ * @returns {Object} Returns `object`.
3668
+ * @example
3669
+ *
3670
+ * function Shape() {
3671
+ * this.x = 0;
3672
+ * this.y = 0;
3673
+ * }
3674
+ *
3675
+ * Shape.prototype.move = function(x, y) {
3676
+ * this.x += x;
3677
+ * this.y += y;
3678
+ * };
3679
+ *
3680
+ * _.forIn(new Shape, function(value, key) {
3681
+ * console.log(key);
3682
+ * });
3683
+ * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)
3684
+ */
3685
+ var forIn = function(collection, callback, thisArg) {
3686
+ var index, iterable = collection, result = iterable;
3687
+ if (!iterable) return result;
3688
+ if (!objectTypes[typeof iterable]) return result;
3689
+ callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);
3690
+ for (index in iterable) {
3691
+ if (callback(iterable[index], index, collection) === false) return result;
3692
+ }
3693
+ return result
3694
+ };
3695
+
3696
+ module.exports = forIn;
3697
+
3698
+
3699
3699
  /***/ },
3700
3700
  /* 59 */
3701
3701
  /***/ function(module, exports, __webpack_require__) {
@@ -3710,8 +3710,8 @@ return /******/ (function(modules) { // webpackBootstrap
3710
3710
  */
3711
3711
  var baseCreate = __webpack_require__(61),
3712
3712
  isObject = __webpack_require__(25),
3713
- setBindData = __webpack_require__(46),
3714
- slice = __webpack_require__(44);
3713
+ setBindData = __webpack_require__(45),
3714
+ slice = __webpack_require__(43);
3715
3715
 
3716
3716
  /**
3717
3717
  * Used for `Array` method references.
@@ -3778,8 +3778,8 @@ return /******/ (function(modules) { // webpackBootstrap
3778
3778
  */
3779
3779
  var baseCreate = __webpack_require__(61),
3780
3780
  isObject = __webpack_require__(25),
3781
- setBindData = __webpack_require__(46),
3782
- slice = __webpack_require__(44);
3781
+ setBindData = __webpack_require__(45),
3782
+ slice = __webpack_require__(43);
3783
3783
 
3784
3784
  /**
3785
3785
  * Used for `Array` method references.
@@ -3860,9 +3860,9 @@ return /******/ (function(modules) { // webpackBootstrap
3860
3860
  * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
3861
3861
  * Available under MIT license <http://lodash.com/license>
3862
3862
  */
3863
- var isNative = __webpack_require__(32),
3863
+ var isNative = __webpack_require__(31),
3864
3864
  isObject = __webpack_require__(25),
3865
- noop = __webpack_require__(58);
3865
+ noop = __webpack_require__(57);
3866
3866
 
3867
3867
  /* Native method shortcuts for methods with the same name as other `lodash` methods */
3868
3868
  var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;