@visactor/vtable
Version:
canvas table width high performance
483 lines (465 loc) • 29.2 kB
JavaScript
import { isValid, precisionAdd, precisionSub } from "@visactor/vutils";
import { AggregationType, SortType } from "..";
export const registeredAggregators = {};
export class Aggregator {
constructor(config) {
var _a;
this.isAggregator = !0, this.isRecord = !0, this.records = [], this.children = [],
this.key = config.key, this.field = config.field, this.formatFun = config.formatFun,
this.isRecord = null !== (_a = config.isRecord) && void 0 !== _a ? _a : this.isRecord;
}
clearCacheValue() {
this._formatedValue = void 0;
}
formatValue(col, row, table) {
return this._formatedValue || (this.formatFun ? this._formatedValue = this.formatFun(this.value(), col, row, table) : this._formatedValue = this.value()),
this._formatedValue;
}
reset() {
this.records = [], this.changedValue = void 0, this.children = [], this.clearCacheValue();
}
}
export class RecordAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.RECORD, this.isRecord = !0;
}
push(record) {
record && this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator && this.children && this.children.push(record), this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record)))),
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.clearCacheValue());
}
value() {
var _a;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.records;
}
reset() {
this.children = [], this.changedValue = void 0, this.records = [];
}
recalculate() {}
}
export class NoneAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.NONE, this.isRecord = !0;
}
push(record) {
record && (this.isRecord && (this.records = [ record ]), record.isAggregator && this.children && (this.children = [ record ]),
this.field && (this.fieldValue = record[this.field])), this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
this.field && this.records.length && (this.fieldValue = this.records[this.records.length - 1][this.field])),
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.field && this.records.length && (this.fieldValue = this.records[this.records.length - 1][this.field]),
this.clearCacheValue());
}
value() {
var _a;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.fieldValue;
}
reset() {
this.children = [], this.changedValue = void 0, this.records = [], this.fieldValue = void 0;
}
recalculate() {}
}
export class CustomAggregator extends Aggregator {
constructor(config) {
super(config), this.type = AggregationType.CUSTOM, this.isRecord = !0, this.values = [],
this.aggregationFun = config.aggregationFun;
}
push(record) {
record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator && this.children && this.children.push(record), this.field && this.values.push(record[this.field])),
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.field && this.records.length && (this.values = this.records.map((item => item[this.field]))),
this.clearCacheValue());
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
this.field && this.records.length && (this.values = this.records.map((item => item[this.field])))),
this.clearCacheValue();
}
value() {
var _a, _b;
return this.fieldValue || (this.fieldValue = null === (_a = this.aggregationFun) || void 0 === _a ? void 0 : _a.call(this, this.values, this.records, this.field)),
null !== (_b = this.changedValue) && void 0 !== _b ? _b : this.fieldValue;
}
reset() {
this.records = [], this.children = [], this.changedValue = void 0, this.fieldValue = void 0;
}
recalculate() {
this.fieldValue = void 0, this._formatedValue = void 0;
}
}
export class RecalculateAggregator extends Aggregator {
constructor(config) {
super(config), this.type = AggregationType.RECALCULATE, this.isRecord = !0, this.calculateFun = config.calculateFun,
this.dependAggregators = config.dependAggregators, this.dependIndicatorKeys = config.dependIndicatorKeys;
}
push(record) {
record && this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
this.children && record.isAggregator && this.children.push(record), this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record)))),
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.clearCacheValue());
}
value() {
var _a, _b;
if (!this.fieldValue) {
const aggregatorValue = _getDependAggregatorValues(this.dependAggregators, this.dependIndicatorKeys);
this.fieldValue = null === (_a = this.calculateFun) || void 0 === _a ? void 0 : _a.call(this, aggregatorValue, this.records, this.field);
}
return null !== (_b = this.changedValue) && void 0 !== _b ? _b : this.fieldValue;
}
reset() {
this.records = [], this.children = [], this.changedValue = void 0, this.fieldValue = void 0;
}
recalculate() {}
}
export class SumAggregator extends Aggregator {
constructor(config) {
var _a;
super(config), this.type = AggregationType.SUM, this.sum = 0, this.positiveSum = 0,
this.nagetiveSum = 0, this.needSplitPositiveAndNegativeForSum = !1, this.needSplitPositiveAndNegativeForSum = null !== (_a = config.needSplitPositiveAndNegative) && void 0 !== _a && _a;
}
push(record) {
if (record) if (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator && this.children) {
this.children.push(record);
const value = record.value();
this.sum = precisionAdd(this.sum, null != value ? value : 0), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionAdd(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, value)));
} else if (this.field && !isNaN(parseFloat(record[this.field]))) {
const value = parseFloat(record[this.field]);
this.sum = precisionAdd(this.sum, value), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionAdd(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, value)));
}
this.clearCacheValue();
}
deleteRecord(record) {
if (record) {
if (this.isRecord && this.records) {
const index = this.records.indexOf(record);
-1 !== index && this.records.splice(index, 1);
}
if (record.isAggregator && this.children) {
const index = this.children.indexOf(record);
-1 !== index && this.children.splice(index, 1);
const value = record.value();
this.sum = precisionSub(this.sum, null != value ? value : 0), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionSub(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionSub(this.nagetiveSum, value)));
} else if (this.field && !isNaN(parseFloat(record[this.field]))) {
const value = parseFloat(record[this.field]);
this.sum = precisionSub(this.sum, value), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionSub(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionSub(this.nagetiveSum, value)));
}
}
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
if (oldRecord && newRecord) {
if (this.isRecord && this.records) {
const index = this.records.indexOf(oldRecord);
-1 !== index && (this.records[index] = newRecord);
}
if (oldRecord.isAggregator && this.children) {
const oldValue = oldRecord.value(), index = this.children.indexOf(oldRecord);
-1 !== index && (this.children[index] = newRecord);
const newValue = newRecord.value();
this.sum = precisionAdd(this.sum, precisionSub(newValue, oldValue)), this.needSplitPositiveAndNegativeForSum && (oldValue > 0 ? this.positiveSum = precisionSub(this.positiveSum, oldValue) : oldValue < 0 && (this.nagetiveSum = precisionSub(this.nagetiveSum, oldValue)),
newValue > 0 ? this.positiveSum = precisionAdd(this.positiveSum, newValue) : newValue < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, newValue)));
} else if (this.field && !isNaN(parseFloat(oldRecord[this.field]))) {
const oldValue = parseFloat(oldRecord[this.field]), newValue = parseFloat(newRecord[this.field]);
this.sum = precisionAdd(this.sum, precisionSub(newValue, oldValue)), this.needSplitPositiveAndNegativeForSum && (oldValue > 0 ? this.positiveSum = precisionSub(this.positiveSum, oldValue) : oldValue < 0 && (this.nagetiveSum = precisionSub(this.nagetiveSum, oldValue)),
newValue > 0 ? this.positiveSum = precisionAdd(this.positiveSum, newValue) : newValue < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, newValue)));
}
this.clearCacheValue();
}
}
value() {
var _a;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.records && this.records.length >= 1 || !1 === this.isRecord ? this.sum : void 0;
}
positiveValue() {
return this.positiveSum;
}
negativeValue() {
return this.nagetiveSum;
}
reset() {
super.reset(), this.records = [], this.sum = 0;
}
recalculate() {
if (this.sum = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
const child = this.children[i];
if (child.isAggregator) {
const value = child.value();
this.sum = precisionAdd(this.sum, null != value ? value : 0), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionAdd(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, value)));
}
} else if (this.records) for (let i = 0; i < this.records.length; i++) {
const record = this.records[i];
if (record.isAggregator) {
const value = record.value();
this.sum = precisionAdd(this.sum, null != value ? value : 0), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionAdd(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, value)));
} else if (this.field && !isNaN(parseFloat(record[this.field]))) {
const value = parseFloat(record[this.field]);
this.sum = precisionAdd(this.sum, value), this.needSplitPositiveAndNegativeForSum && (value > 0 ? this.positiveSum = precisionAdd(this.positiveSum, value) : value < 0 && (this.nagetiveSum = precisionAdd(this.nagetiveSum, value)));
}
}
}
}
export class CountAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.COUNT, this.count = 0;
}
push(record) {
record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator ? (this.children && this.children.push(record), this.count += record.value()) : this.count++),
this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator ? (this.children && (this.children = this.children.filter((item => item !== record))),
this.count -= record.value()) : this.count--), this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && (this.count += newRecord.value() - oldRecord.value()),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))));
}
value() {
var _a;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.count;
}
reset() {
this.changedValue = void 0, this.children = [], this.records = [], this.count = 0;
}
recalculate() {
if (this.count = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
const child = this.children[i];
if (child.isAggregator) {
const value = child.value();
this.count += null != value ? value : 0;
} else this.count++;
} else if (this.records) for (let i = 0; i < this.records.length; i++) {
const record = this.records[i];
record.isAggregator ? this.count += record.value() : this.count++;
}
}
}
export class AvgAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.AVG, this.sum = 0, this.count = 0;
}
push(record) {
record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator && record.type === AggregationType.AVG ? (this.children && this.children.push(record),
this.sum = precisionAdd(this.sum, record.sum), this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum = precisionAdd(this.sum, parseFloat(record[this.field])),
this.count++)), this.clearCacheValue();
}
deleteRecord(record) {
if (record) {
if (this.isRecord && this.records) {
const index = this.records.indexOf(record);
-1 !== index && this.records.splice(index, 1);
}
if (record.isAggregator && record.type === AggregationType.AVG) {
if (this.children) {
const index = this.children.indexOf(record);
-1 !== index && this.children.splice(index, 1);
}
this.sum = precisionSub(this.sum, record.sum), this.count -= record.count;
} else this.field && !isNaN(parseFloat(record[this.field])) && (this.sum = precisionSub(this.sum, parseFloat(record[this.field])),
this.count--);
}
this.clearCacheValue();
}
updateRecord(oldRecord, newRecord) {
if (oldRecord && newRecord) {
if (this.isRecord && this.records) {
const index = this.records.indexOf(oldRecord);
-1 !== index && (this.records[index] = newRecord);
}
if (oldRecord.isAggregator && oldRecord.type === AggregationType.AVG) {
if (this.children && newRecord.isAggregator) {
const index = this.children.indexOf(oldRecord);
-1 !== index && (this.children[index] = newRecord);
}
this.sum = precisionAdd(this.sum, precisionSub(newRecord.sum, oldRecord.sum)), this.count += newRecord.count - oldRecord.count;
} else this.field && !isNaN(parseFloat(oldRecord[this.field])) && (this.sum = precisionAdd(this.sum, precisionSub(parseFloat(newRecord[this.field]), parseFloat(oldRecord[this.field]))));
this.clearCacheValue();
}
}
value() {
var _a;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : this.records && this.records.length >= 1 || !1 === this.isRecord && this.count > 0 ? this.sum / this.count : void 0;
}
reset() {
this.changedValue = void 0, this.children = [], this.records = [], this.sum = 0,
this.count = 0;
}
recalculate() {
if (this.sum = 0, this.count = 0, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
const child = this.children[i];
if (child.isAggregator && child.type === AggregationType.AVG) {
const childValue = child.value();
this.sum = precisionAdd(this.sum, childValue * child.count), this.count += child.count;
}
} else if (this.records) for (let i = 0; i < this.records.length; i++) {
const record = this.records[i];
record.isAggregator && record.type === AggregationType.AVG ? (this.sum = precisionAdd(this.sum, record.sum),
this.count += record.count) : this.field && !isNaN(parseFloat(record[this.field])) && (this.sum = precisionAdd(this.sum, parseFloat(record[this.field])),
this.count++);
}
}
}
export class MaxAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.MAX, this.max = Number.MIN_SAFE_INTEGER;
}
push(record) {
record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator ? (this.children && this.children.push(record), this.max = record.max > this.max ? record.max : this.max) : "number" == typeof record ? this.max = record > this.max ? record : this.max : this.field && "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : this.field && !isNaN(record[this.field]) && (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max)),
this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
this.recalculate());
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.recalculate());
}
value() {
var _a, _b;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.max : void 0;
}
reset() {
this.records = [], this.changedValue = void 0, this.children = [], this.max = Number.MIN_SAFE_INTEGER;
}
recalculate() {
if (this.max = Number.MIN_SAFE_INTEGER, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
const child = this.children[i];
if (child.isAggregator) {
const childValue = child.value();
this.max = Math.max(this.max, childValue);
}
} else if (this.records) for (let i = 0; i < this.records.length; i++) {
const record = this.records[i];
record.isAggregator ? this.max = record.max > this.max ? record.max : this.max : "number" == typeof record ? this.max = record > this.max ? record : this.max : this.field && "number" == typeof record[this.field] ? this.max = record[this.field] > this.max ? record[this.field] : this.max : this.field && !isNaN(record[this.field]) && (this.max = parseFloat(record[this.field]) > this.max ? parseFloat(record[this.field]) : this.max);
}
}
}
export class MinAggregator extends Aggregator {
constructor() {
super(...arguments), this.type = AggregationType.MIN, this.min = Number.MAX_SAFE_INTEGER;
}
push(record) {
record && (this.isRecord && this.records && (record.isAggregator ? this.records.push(...record.records) : this.records.push(record)),
record.isAggregator ? (this.children && this.children.push(record), this.min = record.min < this.min ? record.min : this.min) : "number" == typeof record ? this.min = record < this.min ? record : this.min : this.field && "number" == typeof record[this.field] ? this.min = record[this.field] < this.min ? record[this.field] : this.min : this.field && !isNaN(record[this.field]) && (this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min)),
this.clearCacheValue();
}
deleteRecord(record) {
record && (this.isRecord && this.records && (this.records = this.records.filter((item => item !== record))),
record.isAggregator && this.children && (this.children = this.children.filter((item => item !== record))),
this.recalculate());
}
updateRecord(oldRecord, newRecord) {
oldRecord && newRecord && (this.isRecord && this.records && (this.records = this.records.map((item => item === oldRecord ? newRecord : item))),
oldRecord.isAggregator && newRecord.isAggregator && this.children && (this.children = this.children.map((item => item === oldRecord ? newRecord : item))),
this.recalculate());
}
value() {
var _a, _b;
return null !== (_a = this.changedValue) && void 0 !== _a ? _a : (null === (_b = this.records) || void 0 === _b ? void 0 : _b.length) >= 1 ? this.min : void 0;
}
reset() {
this.records = [], this.changedValue = void 0, this.children = [], this.min = Number.MAX_SAFE_INTEGER;
}
recalculate() {
if (this.min = Number.MAX_SAFE_INTEGER, this._formatedValue = void 0, this.children && this.children.length > 0) for (let i = 0; i < this.children.length; i++) {
const child = this.children[i];
if (child.isAggregator) {
const childValue = child.value();
this.min = Math.min(this.min, childValue);
}
} else if (this.records) for (let i = 0; i < this.records.length; i++) {
const record = this.records[i];
record.isAggregator ? this.min = record.min < this.min ? record.min : this.min : "number" == typeof record ? this.min = record < this.min ? record : this.min : this.field && "number" == typeof record[this.field] ? this.min = record[this.field] < this.min ? record[this.field] : this.min : this.field && !isNaN(record[this.field]) && (this.min = parseFloat(record[this.field]) < this.min ? parseFloat(record[this.field]) : this.min);
}
}
}
export function indicatorSort(a, b) {
return a && b ? a.toString().localeCompare(b.toString(), "zh") : a ? 1 : -1;
}
export function typeSort(a, b, sortType) {
if (sortType === SortType.NORMAL || sortType === SortType.normal) return 0;
const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;
return a && b ? a.toString().localeCompare(b.toString(), "zh") * factor : a ? 1 * factor : -1 * factor;
}
export function naturalSort(as, bs, sortType) {
if (sortType === SortType.NORMAL || sortType === SortType.normal) return 0;
const rx = /(\d+)|(\D+)/g, rd = /\d/, rz = /^0/;
let a, a1, b, b1, nas = 0, nbs = 0;
const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;
if (null !== bs && null === as) return -1 * factor;
if (null !== as && null === bs) return 1 * factor;
if ("number" == typeof as && isNaN(as)) return -1 * factor;
if ("number" == typeof bs && isNaN(bs)) return 1 * factor;
if (nas = +as, nbs = +bs, nas < nbs) return -1 * factor;
if (nas > nbs) return 1 * factor;
if ("number" == typeof as && "number" != typeof bs) return -1 * factor;
if ("number" == typeof bs && "number" != typeof as) return 1 * factor;
if ("number" == typeof as && "number" == typeof bs) return 0;
if (isNaN(nbs) && !isNaN(nas)) return -1 * factor;
if (isNaN(nas) && !isNaN(nbs)) return 1 * factor;
if (a = String(as), b = String(bs), a === b) return 0;
if (!rd.test(a) || !rd.test(b)) return (a > b ? 1 : -1) * factor;
for (a = a.match(rx), b = b.match(rx); a.length && b.length; ) if (a1 = a.shift(),
b1 = b.shift(), a1 !== b1) return rd.test(a1) && rd.test(b1) ? (a1.replace(rz, ".0") - b1.replace(rz, ".0")) * factor : (a1 > b1 ? 1 : -1) * factor;
return (a.length - b.length) * factor;
}
export function sortBy(order) {
let x;
const mapping = {}, lowercase_mapping = {};
for (let i = 0; i < order.length; i++) x = order[i], mapping[x] = i, "string" == typeof x && (lowercase_mapping[x.toLowerCase()] = i);
return function(a, b, sortType) {
if (sortType === SortType.NORMAL || sortType === SortType.normal) return 0;
const factor = sortType === SortType.DESC || sortType === SortType.desc ? -1 : 1;
let comparison;
return null !== mapping[a] && void 0 !== mapping[a] && null !== mapping[b] && void 0 !== mapping[b] ? comparison = mapping[a] - mapping[b] : null !== mapping[a] && void 0 !== mapping[a] ? comparison = -1 : null !== mapping[b] && void 0 !== mapping[b] ? comparison = 1 : null !== lowercase_mapping[a] && void 0 !== mapping[a] && null !== lowercase_mapping[b] && void 0 !== mapping[b] ? comparison = lowercase_mapping[a] - lowercase_mapping[b] : null === lowercase_mapping[a] || void 0 === mapping[a] || null === lowercase_mapping[b] || void 0 === mapping[b] ? comparison = 0 : null !== lowercase_mapping[a] && void 0 !== mapping[a] ? comparison = -1 : null !== lowercase_mapping[b] && void 0 !== mapping[b] && (comparison = 1),
isValid(comparison) ? comparison * factor : naturalSort(a, b, sortType);
};
}
function _getDependAggregatorValues(aggregators, dependIndicatorKeys) {
const dependAggregatorValues = {};
for (let m = 0; m < (null == dependIndicatorKeys ? void 0 : dependIndicatorKeys.length); m++) {
const aggrator = aggregators.find((aggrator => (null == aggrator ? void 0 : aggrator.key) === dependIndicatorKeys[m]));
aggrator && (dependAggregatorValues[aggrator.key] = null == aggrator ? void 0 : aggrator.value());
}
return dependAggregatorValues;
}
//# sourceMappingURL=aggregation.js.map