(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.mixme = {})); }(this, function (exports) { 'use strict'; function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } // Generated by CoffeeScript 2.4.1 var _snake_case; exports.merge = function merge() { return exports.mutate.apply(void 0, [{}].concat(Array.prototype.slice.call(arguments))); }; exports.clone = function clone(target) { if (Array.isArray(target)) { return target.map(function (element) { return exports.clone(element); }); } else if (target && _typeof(target) === 'object') { return exports.mutate({}, target); } else { return target; } }; exports.mutate = function mutate() { var i, j, name, ref, source, target, v; target = arguments[0]; for (i = j = 1, ref = arguments.length; 1 <= ref ? j < ref : j > ref; i = 1 <= ref ? ++j : --j) { source = arguments[i]; if (exports.is_object_literal(source)) { if (!exports.is_object_literal(target)) { target = {}; } for (name in source) { target[name] = exports.mutate(target[name], source[name]); } } else if (Array.isArray(source)) { target = function () { var k, len, results; results = []; for (k = 0, len = source.length; k < len; k++) { v = source[k]; results.push(exports.mutate(void 0, v)); } return results; }(); } else if (source !== void 0) { target = source; } } return target; }; exports.snake_case = function snake_case(source) { var convert = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; var name, src, target, u; target = {}; if (exports.is_object_literal(source)) { u = typeof convert === 'number' && convert > 0 ? convert - 1 : convert; for (name in source) { src = source[name]; if (convert) { name = _snake_case(name); } target[name] = exports.snake_case(src, u); } } else { target = source; } return target; }; exports.compare = function compare(el1, el2) { var i, j, k, key, keys1, keys2, len, ref; if (exports.is_object_literal(el1)) { if (!exports.is_object_literal(el2)) { return false; } keys1 = Object.keys(el1).sort(); keys2 = Object.keys(el2).sort(); if (keys1.length !== keys2.length) { return false; } for (i = j = 0, len = keys1.length; j < len; i = ++j) { key = keys1[i]; if (key !== keys2[i]) { return false; } if (!exports.compare(el1[key], el2[key])) { return false; } } } else if (Array.isArray(el1)) { if (!Array.isArray(el2)) { return false; } if (el1.length !== el2.length) { return false; } for (i = k = 0, ref = el1.length; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) { if (!exports.compare(el1[i], el2[i])) { return false; } } } else { if (el1 !== el2) { return false; } } return true; }; _snake_case = function _snake_case(str) { return str.replace(/([A-Z])/g, function (_, match, index) { return '_' + match.toLowerCase(); }); }; exports.is_object = function is_object(obj) { return obj && _typeof(obj) === 'object' && !Array.isArray(obj); }; exports.is_object_literal = function is_object_literal(obj) { var test; test = obj; if (_typeof(obj) !== 'object' || obj === null) { return false; } else { while (!false) { if (Object.getPrototypeOf(test = Object.getPrototypeOf(test)) === null) { break; } } return Object.getPrototypeOf(obj) === test; } }; Object.defineProperty(exports, '__esModule', { value: true }); }));