@fileverse-dev/formulajs 4.4.17 → 4.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /* @fileverse-dev/formulajs v4.4.17 */
1
+ /* @fileverse-dev/formulajs v4.4.19 */
2
2
  var _excluded = [ "confirmations", "dataDecoded" ];
3
3
 
4
4
  function _objectWithoutProperties(e, t) {
@@ -4854,38 +4854,65 @@ function _typeof(o) {
4854
4854
  }
4855
4855
  return jStat.rows(array);
4856
4856
  }
4857
- function SORT(array) {
4858
- var sort_index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
4859
- var sort_order = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
4860
- var by_col = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4861
- if (!array || !Array.isArray(array)) {
4862
- return na;
4863
- }
4864
- if (array.length === 0) {
4865
- return 0;
4866
- }
4867
- sort_index = parseNumber(sort_index);
4868
- if (!sort_index || sort_index < 1) {
4857
+ function SORT(inputArray) {
4858
+ var sortIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
4859
+ var isAscending = arguments.length > 2 ? arguments[2] : undefined;
4860
+ var sortByColumn = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4861
+ if (!inputArray || !Array.isArray(inputArray)) return na;
4862
+ if (inputArray.length === 0) return 0;
4863
+ var sortColumnIndex = parseNumber(sortIndex);
4864
+ if (!sortColumnIndex || sortColumnIndex < 1) return value;
4865
+ sortColumnIndex = sortColumnIndex - 1;
4866
+ var sortDirection = isAscending.toLowerCase() === "false" ? -1 : 1;
4867
+ var parsedSortDirection = parseNumber(sortDirection);
4868
+ if (parsedSortDirection !== 1 && parsedSortDirection !== -1) return value;
4869
+ var isSortByColumn = parseBool(sortByColumn);
4870
+ if (typeof isSortByColumn !== "boolean") return name;
4871
+ var normalizedMatrix = fillMatrix(inputArray);
4872
+ var orientedMatrix = isSortByColumn ? transpose(normalizedMatrix) : normalizedMatrix;
4873
+ if (!orientedMatrix.length || !orientedMatrix[0] || sortColumnIndex >= orientedMatrix[0].length) {
4869
4874
  return value;
4870
4875
  }
4871
- sort_order = parseNumber(sort_order);
4872
- if (sort_order !== 1 && sort_order !== -1) {
4873
- return value;
4874
- }
4875
- by_col = parseBool(by_col);
4876
- if (typeof by_col !== "boolean") {
4877
- return name;
4878
- }
4879
- var sortArray = function sortArray(arr) {
4880
- return arr.sort((function(a, b) {
4881
- a = parseString(a[sort_index - 1]);
4882
- b = parseString(b[sort_index - 1]);
4883
- return sort_order === 1 ? a < b ? sort_order * -1 : sort_order : a > b ? sort_order : sort_order * -1;
4884
- }));
4876
+ var isBlank = function isBlank(value) {
4877
+ return value === "" || value === null || value === undefined;
4885
4878
  };
4886
- var matrix = fillMatrix(array);
4887
- var result = by_col ? transpose(matrix) : matrix;
4888
- return sort_index >= 1 && sort_index <= result[0].length ? by_col ? transpose(sortArray(result)) : sortArray(result) : value;
4879
+ var compareValues = function compareValues(a, b) {
4880
+ var _parseString, _parseString2;
4881
+ var aBlank = isBlank(a);
4882
+ var bBlank = isBlank(b);
4883
+ if (aBlank && bBlank) return 0;
4884
+ if (aBlank) return 1;
4885
+ if (bBlank) return -1;
4886
+ var parsedA = parseNumber(a);
4887
+ var parsedB = parseNumber(b);
4888
+ var isANumber = Number.isFinite(parsedA);
4889
+ var isBNumber = Number.isFinite(parsedB);
4890
+ if (isANumber && isBNumber) {
4891
+ if (parsedA < parsedB) return -1;
4892
+ if (parsedA > parsedB) return 1;
4893
+ return 0;
4894
+ }
4895
+ var stringA = ((_parseString = parseString(a)) !== null && _parseString !== void 0 ? _parseString : "").toString().toLowerCase();
4896
+ var stringB = ((_parseString2 = parseString(b)) !== null && _parseString2 !== void 0 ? _parseString2 : "").toString().toLowerCase();
4897
+ if (stringA < stringB) return -1;
4898
+ if (stringA > stringB) return 1;
4899
+ return 0;
4900
+ };
4901
+ var rowsWithOriginalIndex = orientedMatrix.map((function(row, rowIndex) {
4902
+ return {
4903
+ row: row,
4904
+ rowIndex: rowIndex
4905
+ };
4906
+ }));
4907
+ rowsWithOriginalIndex.sort((function(rowA, rowB) {
4908
+ var baseComparison = compareValues(rowA.row[sortColumnIndex], rowB.row[sortColumnIndex]);
4909
+ if (baseComparison !== 0) return baseComparison * parsedSortDirection;
4910
+ return rowA.rowIndex - rowB.rowIndex;
4911
+ }));
4912
+ var sortedMatrix = rowsWithOriginalIndex.map((function(item) {
4913
+ return item.row;
4914
+ }));
4915
+ return isSortByColumn ? transpose(sortedMatrix) : sortedMatrix;
4889
4916
  }
4890
4917
  function TRANSPOSE(array) {
4891
4918
  if (!array) {