UNPKG

d2-ui

Version:
75 lines (55 loc) 2.14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = arraySort; var _isString = require('./isString'); var _isString2 = _interopRequireDefault(_isString); var _isNumber = require('./isNumber'); var _isNumber2 = _interopRequireDefault(_isNumber); var _isArray = require('./isArray'); var _isArray2 = _interopRequireDefault(_isArray); var _isObject = require('./isObject'); var _isObject2 = _interopRequireDefault(_isObject); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function arraySort(array, direction, key, emptyFirst) { // supports [number], [string], [{key: number}], [{key: string}], [[string]], [[number]] if (!(0, _isArray2.default)(array)) { return; } key = !!key || (0, _isNumber2.default)(key) ? key : 'name'; array.sort(function (a, b) { // if object, get the property values if ((0, _isObject2.default)(a) && (0, _isObject2.default)(b)) { a = a[key]; b = b[key]; } // if array, get from the right index if ((0, _isArray2.default)(a) && (0, _isArray2.default)(b)) { a = a[key]; b = b[key]; } // string if ((0, _isString2.default)(a) && (0, _isString2.default)(b)) { a = a.toLowerCase(); b = b.toLowerCase(); if (direction === 'DESC') { // TODO: Case sensitive really required? Why not allow `desc`, `Desc` or `dEsC`? return a < b ? 1 : a > b ? -1 : 0; } else { return a < b ? -1 : a > b ? 1 : 0; } } // number else if ((0, _isNumber2.default)(a) && (0, _isNumber2.default)(b)) { return direction === 'DESC' ? b - a : a - b; } else if (a === undefined || a === null) { return emptyFirst ? -1 : 1; } else if (b === undefined || b === null) { return emptyFirst ? 1 : -1; } return -1; }); return array; } //# sourceMappingURL=arraySort.js.map