@hrforte/react-pivottable 1.0.0 → 1.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Utilities.js"],"names":["addSeparators","nStr","thousandsSep","decimalSep","x","String","split","x1","x2","length","rgx","test","replace","numberFormat","opts_in","defaults","digitsAfterDecimal","scaler","prefix","suffix","showOriginal","opts","Object","assign","isNaN","isFinite","scaledValue","fixedValue","toFixed","result","rx","rd","rz","naturalSort","as","bs","nas","Number","nbs","a","b","match","a1","shift","b1","sortAs","order","mapping","l_mapping","i","toLowerCase","builtInSorters","number","undefined","numA","parseFloat","numB","date","dateA","Date","dateB","getTime","string","strA","strB","stringCaseInsensitive","natural","detectDataType","values","sampleSize","Math","min","samples","slice","numberCount","dateCount","stringCount","val","parse","createSorterByType","dataType","Array","isArray","detectedType","getSort","sorters","attr","attrValues","sort","sorter","keys","usFmt","usFmtInt","usFmtPct","aggregatorTemplates","count","formatter","push","value","format","uniques","fn","uniq","record","from","includes","numInputs","sum","extremes","mode","data","quantile","q","vals","floor","ceil","runningStat","ddof","n","m","s","m_new","sqrt","Error","sumOverSum","num","denom","sumNum","sumDenom","fractionOf","wrapped","type","rowKey","colKey","selector","total","row","col","inner","aggregator","getAggregator","countUnique","f","listUnique","join","max","first","last","median","average","var","stdev","AggregatorCell","instances","primaryKey","forEach","key","targetKey","aggregators","Count","tpl","Sum","Average","Median","Minimum","Maximum","First","Last","locales","en","localeStrings","renderError","computeError","uiRenderError","selectAll","selectNone","tooMany","filterResults","apply","cancel","totals","vs","by","mthNamesEn","dayNamesEn","zeroPad","substr","derivers","bin","binWidth","dateFormat","formatString","utcOutput","mthNames","dayNames","utc","p","PivotData","inputProps","props","defaultProps","PropTypes","checkPropTypes","propTypes","aggregations","normalizeAggregations","aggregationKeyLookup","agg","aggregatorName","primaryAggregation","primaryAggregatorName","aggregatorFactories","buildAggregatorFactories","tree","rowKeys","colKeys","rowTotals","colTotals","allTotal","createAggregatorCell","sorted","forEachRecord","derivedAttributes","filter","processRecord","k","valueFilter","criteria","callback","v","attrs","sortersArr","comparison","r","c","rowSorts","rows","sortDir","arrSort","rowOrder","colSorts","cols","colOrder","sortKeys","flatRowKey","fromCharCode","flatColKey","aggregationKey","resolvedKey","cell","getAggregatorCell","emptyAggregator","getInstance","map","grouped","aggName","defaultAggregatorName","aggregationsProvided","legacyAggregatorName","fallbackAggregatorName","fallbackVals","idx","normalizedVals","label","factories","input","addRecord","getOwnPropertyNames","derived","compactRecord","j","result1","oneOfType","array","object","func","isRequired","arrayOf","shape","objectOf","bool","oneOf"],"mappings":"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","file":"Utilities.js","sourcesContent":["/* eslint-disable no-undefined */\nimport PropTypes from 'prop-types';\n\n/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * DS104: Avoid inline assignments\n * DS201: Simplify complex destructure assignments\n * DS203: Remove `|| {}` from converted for-own loops\n * DS205: Consider reworking code to avoid use of IIFEs\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n\nconst addSeparators = function(nStr, thousandsSep, decimalSep) {\n const x = String(nStr).split('.');\n let x1 = x[0];\n const x2 = x.length > 1 ? decimalSep + x[1] : '';\n const rgx = /(\\d+)(\\d{3})/;\n while (rgx.test(x1)) {\n x1 = x1.replace(rgx, `$1${thousandsSep}$2`);\n }\n return x1 + x2;\n};\n\nconst numberFormat = function(opts_in) {\n const defaults = {\n digitsAfterDecimal: 2,\n scaler: 1,\n thousandsSep: ',',\n decimalSep: '.',\n prefix: '',\n suffix: '',\n showOriginal: false,\n };\n const opts = Object.assign({}, defaults, opts_in);\n return function(x) {\n if (isNaN(x) || !isFinite(x)) {\n return '';\n }\n // Show completely original value if showOriginal is true\n if (opts.showOriginal) {\n return String(opts.scaler * x);\n }\n // When thousandsSep is empty, apply decimal formatting but skip thousand separator\n if (opts.thousandsSep === '') {\n const scaledValue = opts.scaler * x;\n const fixedValue = scaledValue.toFixed(opts.digitsAfterDecimal);\n // Apply decimal separator if needed\n const result = fixedValue.replace('.', opts.decimalSep);\n return `${opts.prefix}${result}${opts.suffix}`;\n }\n // Normal formatting with thousand separator\n const result = addSeparators(\n (opts.scaler * x).toFixed(opts.digitsAfterDecimal),\n opts.thousandsSep,\n opts.decimalSep\n );\n return `${opts.prefix}${result}${opts.suffix}`;\n };\n};\n\nconst rx = /(\\d+)|(\\D+)/g;\nconst rd = /\\d/;\nconst rz = /^0/;\nconst naturalSort = (as, bs) => {\n // nulls first\n if (bs !== null && as === null) {\n return -1;\n }\n if (as !== null && bs === null) {\n return 1;\n }\n\n // then raw NaNs\n if (typeof as === 'number' && isNaN(as)) {\n return -1;\n }\n if (typeof bs === 'number' && isNaN(bs)) {\n return 1;\n }\n\n // numbers and numbery strings group together\n const nas = Number(as);\n const nbs = Number(bs);\n if (nas < nbs) {\n return -1;\n }\n if (nas > nbs) {\n return 1;\n }\n\n // within that, true numbers before numbery strings\n if (typeof as === 'number' && typeof bs !== 'number') {\n return -1;\n }\n if (typeof bs === 'number' && typeof as !== 'number') {\n return 1;\n }\n if (typeof as === 'number' && typeof bs === 'number') {\n return 0;\n }\n\n // 'Infinity' is a textual number, so less than 'A'\n if (isNaN(nbs) && !isNaN(nas)) {\n return -1;\n }\n if (isNaN(nas) && !isNaN(nbs)) {\n return 1;\n }\n\n // finally, \"smart\" string sorting per http://stackoverflow.com/a/4373421/112871\n let a = String(as);\n let b = String(bs);\n if (a === b) {\n return 0;\n }\n if (!rd.test(a) || !rd.test(b)) {\n return a > b ? 1 : -1;\n }\n\n // special treatment for strings containing digits\n a = a.match(rx);\n b = b.match(rx);\n while (a.length && b.length) {\n const a1 = a.shift();\n const b1 = b.shift();\n if (a1 !== b1) {\n if (rd.test(a1) && rd.test(b1)) {\n return a1.replace(rz, '.0') - b1.replace(rz, '.0');\n }\n return a1 > b1 ? 1 : -1;\n }\n }\n return a.length - b.length;\n};\n\nconst sortAs = function(order) {\n const mapping = {};\n\n // sort lowercased keys similarly\n const l_mapping = {};\n for (const i in order) {\n const x = order[i];\n mapping[x] = i;\n if (typeof x === 'string') {\n l_mapping[x.toLowerCase()] = i;\n }\n }\n return function(a, b) {\n if (a in mapping && b in mapping) {\n return mapping[a] - mapping[b];\n } else if (a in mapping) {\n return -1;\n } else if (b in mapping) {\n return 1;\n } else if (a in l_mapping && b in l_mapping) {\n return l_mapping[a] - l_mapping[b];\n } else if (a in l_mapping) {\n return -1;\n } else if (b in l_mapping) {\n return 1;\n }\n return naturalSort(a, b);\n };\n};\n\n// Built-in sort functions for different data types\nconst builtInSorters = {\n // Number sorter - handles numeric values\n number: (a, b) => {\n if (a === null || a === undefined || a === '') {\n return b === null || b === undefined || b === '' ? 0 : -1;\n }\n if (b === null || b === undefined || b === '') {\n return 1;\n }\n const numA = typeof a === 'number' ? a : parseFloat(a);\n const numB = typeof b === 'number' ? b : parseFloat(b);\n if (isNaN(numA) && isNaN(numB)) {\n return 0;\n }\n if (isNaN(numA)) {\n return -1;\n }\n if (isNaN(numB)) {\n return 1;\n }\n return numA - numB;\n },\n\n // Date sorter - handles date values\n date: (a, b) => {\n if (a === null || a === undefined || a === '') {\n return b === null || b === undefined || b === '' ? 0 : -1;\n }\n if (b === null || b === undefined || b === '') {\n return 1;\n }\n const dateA = a instanceof Date ? a : new Date(a);\n const dateB = b instanceof Date ? b : new Date(b);\n if (isNaN(dateA.getTime()) && isNaN(dateB.getTime())) {\n return 0;\n }\n if (isNaN(dateA.getTime())) {\n return -1;\n }\n if (isNaN(dateB.getTime())) {\n return 1;\n }\n return dateA.getTime() - dateB.getTime();\n },\n\n // String sorter - case-sensitive\n string: (a, b) => {\n if (a === null || a === undefined || a === '') {\n return b === null || b === undefined || b === '' ? 0 : -1;\n }\n if (b === null || b === undefined || b === '') {\n return 1;\n }\n const strA = String(a);\n const strB = String(b);\n return strA > strB ? 1 : strA < strB ? -1 : 0;\n },\n\n // String sorter - case-insensitive\n stringCaseInsensitive: (a, b) => {\n if (a === null || a === undefined || a === '') {\n return b === null || b === undefined || b === '' ? 0 : -1;\n }\n if (b === null || b === undefined || b === '') {\n return 1;\n }\n const strA = String(a).toLowerCase();\n const strB = String(b).toLowerCase();\n return strA > strB ? 1 : strA < strB ? -1 : 0;\n },\n\n // Natural sort (default)\n natural: naturalSort,\n};\n\n// Alias for backward compatibility\n// const sorters = builtInSorters;\n\n// Auto-detect data type from sample values\nconst detectDataType = function(values) {\n if (!values || values.length === 0) {\n return 'natural';\n }\n\n const sampleSize = Math.min(10, values.length);\n const samples = values.slice(0, sampleSize);\n\n let numberCount = 0;\n let dateCount = 0;\n let stringCount = 0;\n\n for (const val of samples) {\n if (val === null || val === undefined || val === '') {\n continue;\n }\n\n // Check if it's a number\n if (typeof val === 'number' || (!isNaN(parseFloat(val)) && isFinite(val))) {\n numberCount++;\n }\n // Check if it's a date\n else if (\n val instanceof Date ||\n (!isNaN(Date.parse(val)) && String(val).match(/^\\d{4}-\\d{2}-\\d{2}/))\n ) {\n dateCount++;\n }\n // Otherwise it's a string\n else {\n stringCount++;\n }\n }\n\n // Determine the most common type\n if (numberCount > dateCount && numberCount > stringCount) {\n return 'number';\n } else if (dateCount > stringCount) {\n return 'date';\n } else if (stringCount > 0) {\n return 'string';\n }\n\n return 'natural';\n};\n\n// Create a sorter based on data type\nconst createSorterByType = function(dataType) {\n if (typeof dataType === 'function') {\n return dataType;\n }\n\n if (typeof dataType === 'string' && dataType in builtInSorters) {\n return builtInSorters[dataType];\n }\n\n // Auto-detect if dataType is an array of values\n if (Array.isArray(dataType)) {\n const detectedType = detectDataType(dataType);\n return builtInSorters[detectedType] || naturalSort;\n }\n\n return naturalSort;\n};\n\n// Get sorter for an attribute, with auto-detection support\nconst getSort = function(sorters, attr, attrValues = null) {\n if (sorters) {\n if (typeof sorters === 'function') {\n const sort = sorters(attr);\n if (typeof sort === 'function') {\n return sort;\n }\n } else if (attr in sorters) {\n const sorter = sorters[attr];\n // If it's a string (data type name) or array (sample values), create appropriate sorter\n if (typeof sorter === 'string' || Array.isArray(sorter)) {\n return createSorterByType(sorter);\n }\n // If it's already a function, use it\n if (typeof sorter === 'function') {\n return sorter;\n }\n }\n }\n\n // Auto-detect if attrValues are provided\n if (attrValues && typeof attrValues === 'object') {\n const values = Object.keys(attrValues);\n if (values.length > 0) {\n const detectedType = detectDataType(values);\n return builtInSorters[detectedType] || naturalSort;\n }\n }\n\n return naturalSort;\n};\n\n// aggregator templates default to US number formatting but this is overrideable\nconst usFmt = numberFormat();\nconst usFmtInt = numberFormat({digitsAfterDecimal: 0});\nconst usFmtPct = numberFormat({\n digitsAfterDecimal: 1,\n scaler: 100,\n suffix: '%',\n});\n\nconst aggregatorTemplates = {\n count(formatter = usFmtInt) {\n return () =>\n function() {\n return {\n count: 0,\n push() {\n this.count++;\n },\n value() {\n return this.count;\n },\n format: formatter,\n };\n };\n },\n\n uniques(fn, formatter = usFmtInt) {\n return function([attr]) {\n return function() {\n return {\n uniq: [],\n push(record) {\n if (!Array.from(this.uniq).includes(record[attr])) {\n this.uniq.push(record[attr]);\n }\n },\n value() {\n return fn(this.uniq);\n },\n format: formatter,\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\n };\n };\n };\n },\n\n sum(formatter = usFmt) {\n return function([attr]) {\n return function() {\n return {\n sum: 0,\n push(record) {\n if (!isNaN(parseFloat(record[attr]))) {\n this.sum += parseFloat(record[attr]);\n }\n },\n value() {\n return this.sum;\n },\n format: formatter,\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\n };\n };\n };\n },\n\n extremes(mode, formatter = usFmt) {\n return function([attr]) {\n return function(data) {\n return {\n val: null,\n sorter: getSort(\n typeof data !== 'undefined' ? data.sorters : null,\n attr\n ),\n push(record) {\n let x = record[attr];\n if (['min', 'max'].includes(mode)) {\n x = parseFloat(x);\n if (!isNaN(x)) {\n this.val = Math[mode](x, this.val !== null ? this.val : x);\n }\n }\n if (\n mode === 'first' &&\n this.sorter(x, this.val !== null ? this.val : x) <= 0\n ) {\n this.val = x;\n }\n if (\n mode === 'last' &&\n this.sorter(x, this.val !== null ? this.val : x) >= 0\n ) {\n this.val = x;\n }\n },\n value() {\n return this.val;\n },\n format(x) {\n if (isNaN(x)) {\n return x;\n }\n return formatter(x);\n },\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\n };\n };\n };\n },\n\n quantile(q, formatter = usFmt) {\n return function([attr]) {\n return function() {\n return {\n vals: [],\n push(record) {\n const x = parseFloat(record[attr]);\n if (!isNaN(x)) {\n this.vals.push(x);\n }\n },\n value() {\n if (this.vals.length === 0) {\n return null;\n }\n this.vals.sort((a, b) => a - b);\n const i = (this.vals.length - 1) * q;\n return (this.vals[Math.floor(i)] + this.vals[Math.ceil(i)]) / 2.0;\n },\n format: formatter,\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\n };\n };\n };\n },\n\n runningStat(mode = 'mean', ddof = 1, formatter = usFmt) {\n return function([attr]) {\n return function() {\n return {\n n: 0.0,\n m: 0.0,\n s: 0.0,\n push(record) {\n const x = parseFloat(record[attr]);\n if (isNaN(x)) {\n return;\n }\n this.n += 1.0;\n if (this.n === 1.0) {\n this.m = x;\n }\n const m_new = this.m + (x - this.m) / this.n;\n this.s = this.s + (x - this.m) * (x - m_new);\n this.m = m_new;\n },\n value() {\n if (mode === 'mean') {\n if (this.n === 0) {\n return 0 / 0;\n }\n return this.m;\n }\n if (this.n <= ddof) {\n return 0;\n }\n switch (mode) {\n case 'var':\n return this.s / (this.n - ddof);\n case 'stdev':\n return Math.sqrt(this.s / (this.n - ddof));\n default:\n throw new Error('unknown mode for runningStat');\n }\n },\n format: formatter,\n numInputs: typeof attr !== 'undefined' ? 0 : 1,\n };\n };\n };\n },\n\n sumOverSum(formatter = usFmt) {\n return function([num, denom]) {\n return function() {\n return {\n sumNum: 0,\n sumDenom: 0,\n push(record) {\n if (!isNaN(parseFloat(record[num]))) {\n this.sumNum += parseFloat(record[num]);\n }\n if (!isNaN(parseFloat(record[denom]))) {\n this.sumDenom += parseFloat(record[denom]);\n }\n },\n value() {\n return this.sumNum / this.sumDenom;\n },\n format: formatter,\n numInputs:\n typeof num !== 'undefined' && typeof denom !== 'undefined' ? 0 : 2,\n };\n };\n };\n },\n\n fractionOf(wrapped, type = 'total', formatter = usFmtPct) {\n return (...x) =>\n function(data, rowKey, colKey) {\n return {\n selector: {total: [[], []], row: [rowKey, []], col: [[], colKey]}[\n type\n ],\n inner: wrapped(...Array.from(x || []))(data, rowKey, colKey),\n push(record) {\n this.inner.push(record);\n },\n format: formatter,\n value() {\n const aggregator = data\n .getAggregator(...Array.from(this.selector || []))\n \n return (\n this.inner.value() /\n ((aggregator.inner && aggregator.inner.value()) || 0)\n );\n },\n numInputs: wrapped(...Array.from(x || []))().numInputs,\n };\n };\n },\n};\n\naggregatorTemplates.countUnique = f =>\n aggregatorTemplates.uniques(x => x.length, f);\naggregatorTemplates.listUnique = s =>\n aggregatorTemplates.uniques(\n x => x.join(s),\n x => x\n );\naggregatorTemplates.max = f => aggregatorTemplates.extremes('max', f);\naggregatorTemplates.min = f => aggregatorTemplates.extremes('min', f);\naggregatorTemplates.first = f => aggregatorTemplates.extremes('first', f);\naggregatorTemplates.last = f => aggregatorTemplates.extremes('last', f);\naggregatorTemplates.median = f => aggregatorTemplates.quantile(0.5, f);\naggregatorTemplates.average = f =>\n aggregatorTemplates.runningStat('mean', 1, f);\naggregatorTemplates.var = (ddof, f) =>\n aggregatorTemplates.runningStat('var', ddof, f);\naggregatorTemplates.stdev = (ddof, f) =>\n aggregatorTemplates.runningStat('stdev', ddof, f);\n\nclass AggregatorCell {\n constructor(instances, primaryKey) {\n this.instances = instances;\n this.primaryKey = primaryKey;\n }\n\n push(record) {\n Object.keys(this.instances).forEach(key => {\n this.instances[key].push(record);\n });\n }\n\n getInstance(key) {\n const targetKey = key || this.primaryKey;\n if (targetKey && this.instances[targetKey]) {\n return this.instances[targetKey];\n }\n const first =\n this.instances[this.primaryKey] ||\n this.instances[Object.keys(this.instances)[0]];\n return first || null;\n }\n}\n\n// default aggregators & renderers use US naming and number formatting\nconst aggregators = (tpl => ({\n Count: tpl.count(usFmtInt),\n 'Count Unique Values': tpl.countUnique(usFmtInt),\n 'List Unique Values': tpl.listUnique(', '),\n Sum: tpl.sum(usFmt),\n 'Integer Sum': tpl.sum(usFmtInt),\n Average: tpl.average(usFmt),\n Median: tpl.median(usFmt),\n 'Sample Variance': tpl.var(1, usFmt),\n 'Sample Standard Deviation': tpl.stdev(1, usFmt),\n Minimum: tpl.min(usFmt),\n Maximum: tpl.max(usFmt),\n First: tpl.first(usFmt),\n Last: tpl.last(usFmt),\n 'Sum over Sum': tpl.sumOverSum(usFmt),\n 'Sum as Fraction of Total': tpl.fractionOf(tpl.sum(), 'total', usFmtPct),\n 'Sum as Fraction of Rows': tpl.fractionOf(tpl.sum(), 'row', usFmtPct),\n 'Sum as Fraction of Columns': tpl.fractionOf(tpl.sum(), 'col', usFmtPct),\n 'Count as Fraction of Total': tpl.fractionOf(tpl.count(), 'total', usFmtPct),\n 'Count as Fraction of Rows': tpl.fractionOf(tpl.count(), 'row', usFmtPct),\n 'Count as Fraction of Columns': tpl.fractionOf(tpl.count(), 'col', usFmtPct),\n}))(aggregatorTemplates);\n\nconst locales = {\n en: {\n aggregators,\n localeStrings: {\n renderError: 'An error occurred rendering the PivotTable results.',\n computeError: 'An error occurred computing the PivotTable results.',\n uiRenderError: 'An error occurred rendering the PivotTable UI.',\n selectAll: 'Select All',\n selectNone: 'Select None',\n tooMany: '(too many to list)',\n filterResults: 'Filter values',\n apply: 'Apply',\n cancel: 'Cancel',\n totals: 'Totals',\n vs: 'vs',\n by: 'by',\n },\n },\n};\n\n// dateFormat deriver l10n requires month and day names to be passed in directly\nconst mthNamesEn = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n];\nconst dayNamesEn = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst zeroPad = number => `0${number}`.substr(-2, 2); // eslint-disable-line no-magic-numbers\n\nconst derivers = {\n bin(col, binWidth) {\n return record => record[col] - (record[col] % binWidth);\n },\n dateFormat(\n col,\n formatString,\n utcOutput = false,\n mthNames = mthNamesEn,\n dayNames = dayNamesEn\n ) {\n const utc = utcOutput ? 'UTC' : '';\n return function(record) {\n const date = new Date(Date.parse(record[col]));\n if (isNaN(date)) {\n return '';\n }\n return formatString.replace(/%(.)/g, function(m, p) {\n switch (p) {\n case 'y':\n return date[`get${utc}FullYear`]();\n case 'm':\n return zeroPad(date[`get${utc}Month`]() + 1);\n case 'n':\n return mthNames[date[`get${utc}Month`]()];\n case 'd':\n return zeroPad(date[`get${utc}Date`]());\n case 'w':\n return dayNames[date[`get${utc}Day`]()];\n case 'x':\n return date[`get${utc}Day`]();\n case 'H':\n return zeroPad(date[`get${utc}Hours`]());\n case 'M':\n return zeroPad(date[`get${utc}Minutes`]());\n case 'S':\n return zeroPad(date[`get${utc}Seconds`]());\n default:\n return `%${p}`;\n }\n });\n };\n },\n};\n\n/*\nData Model class\n*/\n\nclass PivotData {\n constructor(inputProps = {}) {\n this.props = Object.assign({}, PivotData.defaultProps, inputProps);\n PropTypes.checkPropTypes(\n PivotData.propTypes,\n this.props,\n 'prop',\n 'PivotData'\n );\n\n this.aggregations = this.normalizeAggregations();\n this.aggregationKeyLookup = {};\n this.aggregations.forEach(agg => {\n if (!(agg.aggregatorName in this.aggregationKeyLookup)) {\n this.aggregationKeyLookup[agg.aggregatorName] = agg.key;\n }\n });\n if (this.aggregations.length === 0) {\n throw new Error('PivotData requires at least one aggregation');\n }\n this.primaryAggregation = this.aggregations[0];\n this.primaryAggregatorName = this.primaryAggregation.aggregatorName;\n\n this.aggregatorFactories = this.buildAggregatorFactories();\n this.tree = {};\n this.rowKeys = [];\n this.colKeys = [];\n this.rowTotals = {};\n this.colTotals = {};\n this.allTotal = this.createAggregatorCell([], []);\n this.sorted = false;\n\n // iterate through input, accumulating data for cells\n PivotData.forEachRecord(\n this.props.data,\n this.props.derivedAttributes,\n record => {\n if (this.filter(record)) {\n this.processRecord(record);\n }\n }\n );\n }\n\n filter(record) {\n for (const k in this.props.valueFilter) {\n if (record[k] in this.props.valueFilter[k]) {\n return false;\n }\n }\n return true;\n }\n\n forEachMatchingRecord(criteria, callback) {\n return PivotData.forEachRecord(\n this.props.data,\n this.props.derivedAttributes,\n record => {\n if (!this.filter(record)) {\n return;\n }\n for (const k in criteria) {\n const v = criteria[k];\n if (v !== (k in record ? record[k] : 'null')) {\n return;\n }\n }\n callback(record);\n }\n );\n }\n\n arrSort(attrs) {\n let a;\n const sortersArr = (() => {\n const result = [];\n for (a of Array.from(attrs)) {\n result.push(getSort(this.props.sorters, a));\n }\n return result;\n })();\n return function(a, b) {\n for (const i of Object.keys(sortersArr || {})) {\n const sorter = sortersArr[i];\n const comparison = sorter(a[i], b[i]);\n if (comparison !== 0) {\n return comparison;\n }\n }\n return 0;\n };\n }\n\n sortKeys() {\n if (!this.sorted) {\n this.sorted = true;\n const v = (r, c) => this.getAggregator(r, c).value();\n\n // Handle per-row sorting\n if (this.props.rowSorts && Object.keys(this.props.rowSorts).length > 0) {\n const rowSorts = this.props.rowSorts;\n this.rowKeys.sort((a, b) => {\n // First, check if any sorted attribute has a difference\n for (let i = 0; i < this.props.rows.length; i++) {\n const attr = this.props.rows[i];\n if (attr && rowSorts[attr]) {\n const sortDir = rowSorts[attr] === 'ASC' ? 1 : -1;\n const sorter = getSort(this.props.sorters, attr);\n const comparison = sorter(a[i] || '', b[i] || '');\n if (comparison !== 0) {\n return sortDir * comparison;\n }\n }\n }\n // If sorted attributes are equal, use default sorting for remaining attributes\n return this.arrSort(this.props.rows)(a, b);\n });\n } else {\n // Use global row order\n switch (this.props.rowOrder) {\n case 'value_a_to_z':\n this.rowKeys.sort((a, b) => naturalSort(v(a, []), v(b, [])));\n break;\n case 'value_z_to_a':\n this.rowKeys.sort((a, b) => -naturalSort(v(a, []), v(b, [])));\n break;\n default:\n this.rowKeys.sort(this.arrSort(this.props.rows));\n }\n }\n\n // Handle per-column sorting\n if (this.props.colSorts && Object.keys(this.props.colSorts).length > 0) {\n const colSorts = this.props.colSorts;\n this.colKeys.sort((a, b) => {\n // First, check if any sorted attribute has a difference\n for (let i = 0; i < this.props.cols.length; i++) {\n const attr = this.props.cols[i];\n if (attr && colSorts[attr]) {\n const sortDir = colSorts[attr] === 'ASC' ? 1 : -1;\n const sorter = getSort(this.props.sorters, attr);\n const comparison = sorter(a[i] || '', b[i] || '');\n if (comparison !== 0) {\n return sortDir * comparison;\n }\n }\n }\n // If sorted attributes are equal, use default sorting for remaining attributes\n return this.arrSort(this.props.cols)(a, b);\n });\n } else {\n // Use global col order\n switch (this.props.colOrder) {\n case 'value_a_to_z':\n this.colKeys.sort((a, b) => naturalSort(v([], a), v([], b)));\n break;\n case 'value_z_to_a':\n this.colKeys.sort((a, b) => -naturalSort(v([], a), v([], b)));\n break;\n default:\n this.colKeys.sort(this.arrSort(this.props.cols));\n }\n }\n }\n }\n\n getColKeys() {\n this.sortKeys();\n return this.colKeys;\n }\n\n getRowKeys() {\n this.sortKeys();\n return this.rowKeys;\n }\n\n processRecord(record) {\n // this code is called in a tight loop\n const colKey = [];\n const rowKey = [];\n for (const x of Array.from(this.props.cols)) {\n colKey.push(x in record ? record[x] : 'null');\n }\n for (const x of Array.from(this.props.rows)) {\n rowKey.push(x in record ? record[x] : 'null');\n }\n const flatRowKey = rowKey.join(String.fromCharCode(0));\n const flatColKey = colKey.join(String.fromCharCode(0));\n\n this.allTotal.push(record);\n\n if (rowKey.length !== 0) {\n if (!this.rowTotals[flatRowKey]) {\n this.rowKeys.push(rowKey);\n this.rowTotals[flatRowKey] = this.createAggregatorCell(rowKey, []);\n }\n this.rowTotals[flatRowKey].push(record);\n }\n\n if (colKey.length !== 0) {\n if (!this.colTotals[flatColKey]) {\n this.colKeys.push(colKey);\n this.colTotals[flatColKey] = this.createAggregatorCell([], colKey);\n }\n this.colTotals[flatColKey].push(record);\n }\n\n if (colKey.length !== 0 && rowKey.length !== 0) {\n if (!this.tree[flatRowKey]) {\n this.tree[flatRowKey] = {};\n }\n if (!this.tree[flatRowKey][flatColKey]) {\n this.tree[flatRowKey][flatColKey] = this.createAggregatorCell(\n rowKey,\n colKey\n );\n }\n this.tree[flatRowKey][flatColKey].push(record);\n }\n }\n\n getAggregator(rowKey, colKey, aggregationKey = this.primaryAggregation.key) {\n let resolvedKey = aggregationKey;\n if (\n resolvedKey &&\n !(resolvedKey in this.aggregatorFactories) &&\n this.aggregationKeyLookup[resolvedKey]\n ) {\n resolvedKey = this.aggregationKeyLookup[resolvedKey];\n }\n const cell = this.getAggregatorCell(rowKey, colKey);\n if (!cell) {\n return PivotData.emptyAggregator;\n }\n return cell.getInstance(resolvedKey) || PivotData.emptyAggregator;\n }\n\n getAggregatorCell(rowKey, colKey) {\n let cell;\n const flatRowKey = rowKey.join(String.fromCharCode(0));\n const flatColKey = colKey.join(String.fromCharCode(0));\n if (rowKey.length === 0 && colKey.length === 0) {\n cell = this.allTotal;\n } else if (rowKey.length === 0) {\n cell = this.colTotals[flatColKey];\n } else if (colKey.length === 0) {\n cell = this.rowTotals[flatRowKey];\n } else {\n cell =\n this.tree[flatRowKey] && this.tree[flatRowKey][flatColKey]\n ? this.tree[flatRowKey][flatColKey]\n : null;\n }\n return cell || null;\n }\n\n getAggregatorNames() {\n return this.aggregations.map(agg => agg.aggregatorName);\n }\n\n getAggregations() {\n return this.aggregations.map(agg => Object.assign({}, agg));\n }\n\n getPrimaryAggregatorName() {\n return this.primaryAggregatorName;\n }\n\n getPrimaryAggregation() {\n return Object.assign({}, this.primaryAggregation);\n }\n\n /**\n * Groups aggregations by their aggregatorName\n * @returns {Object} Object mapping aggregator names to arrays of aggregations\n * Example: { 'Count': [agg1, agg2], 'Sum': [agg3] }\n */\n groupAggregationsByType() {\n const grouped = {};\n this.aggregations.forEach(agg => {\n const aggName = agg.aggregatorName;\n if (!grouped[aggName]) {\n grouped[aggName] = [];\n }\n grouped[aggName].push(agg);\n });\n return grouped;\n }\n\n /**\n * Gets aggregations for a specific aggregator type\n * @param {string} aggregatorName - The aggregator name (e.g., 'Count', 'Sum')\n * @returns {Array} Array of aggregation configurations\n */\n getAggregationsByType(aggregatorName) {\n return this.aggregations.filter(agg => agg.aggregatorName === aggregatorName);\n }\n\n normalizeAggregations() {\n const defaultAggregatorName = Object.keys(this.props.aggregators)[0];\n const aggregationsProvided =\n Array.isArray(this.props.aggregations) &&\n this.props.aggregations.length > 0;\n const legacyAggregatorName =\n typeof this.props.aggregatorName === 'string'\n ? this.props.aggregatorName\n : null;\n const fallbackAggregatorName =\n legacyAggregatorName || defaultAggregatorName;\n const fallbackVals = Array.isArray(this.props.vals) ? this.props.vals : [];\n let aggregations = [];\n if (aggregationsProvided) {\n aggregations = this.props.aggregations;\n } else {\n aggregations = [\n {\n aggregatorName: fallbackAggregatorName,\n vals: fallbackVals,\n },\n ];\n }\n return aggregations.map((agg, idx) => {\n const aggregatorName =\n agg.aggregatorName ||\n (aggregationsProvided ? defaultAggregatorName : fallbackAggregatorName);\n const vals =\n typeof agg.vals !== 'undefined'\n ? agg.vals\n : aggregationsProvided\n ? []\n : fallbackVals.slice();\n const normalizedVals = Array.isArray(vals) ? vals : [];\n const key =\n agg.key ||\n `${aggregatorName || 'agg'}-${\n normalizedVals.length ? normalizedVals.join('|') : ''\n }-${idx}`;\n const label =\n agg.label ||\n (normalizedVals.length\n ? `${aggregatorName} of ${normalizedVals.join(', ')}`\n : aggregatorName);\n return {\n key,\n aggregatorName,\n vals: normalizedVals,\n label,\n };\n });\n }\n\n buildAggregatorFactories() {\n const factories = {};\n this.aggregations.forEach(agg => {\n if (!(agg.aggregatorName in this.props.aggregators)) {\n throw new Error(`unknown aggregator ${agg.aggregatorName}`);\n }\n factories[agg.key] = this.props.aggregators[agg.aggregatorName](agg.vals);\n });\n return factories;\n }\n\n createAggregatorCell(rowKey, colKey) {\n const instances = {};\n this.aggregations.forEach(agg => {\n instances[agg.key] = this.aggregatorFactories[agg.key](\n this,\n rowKey,\n colKey\n );\n });\n return new AggregatorCell(instances, this.primaryAggregation.key);\n }\n}\n\nPivotData.emptyAggregator = {\n push() {},\n value() {\n return null;\n },\n format() {\n return '';\n },\n};\n\n// can handle arrays or jQuery selections of tables\nPivotData.forEachRecord = function(input, derivedAttributes, f) {\n let addRecord, record;\n if (Object.getOwnPropertyNames(derivedAttributes).length === 0) {\n addRecord = f;\n } else {\n addRecord = function(record) {\n for (const k in derivedAttributes) {\n const derived = derivedAttributes[k](record);\n if (derived !== null) {\n record[k] = derived;\n }\n }\n return f(record);\n };\n }\n\n // if it's a function, have it call us back\n if (typeof input === 'function') {\n return input(addRecord);\n } else if (Array.isArray(input)) {\n if (Array.isArray(input[0])) {\n // array of arrays\n return (() => {\n const result = [];\n for (const i of Object.keys(input || {})) {\n const compactRecord = input[i];\n if (i > 0) {\n record = {};\n for (const j of Object.keys(input[0] || {})) {\n const k = input[0][j];\n record[k] = compactRecord[j];\n }\n result.push(addRecord(record));\n }\n }\n return result;\n })();\n }\n\n // array of objects\n return (() => {\n const result1 = [];\n for (record of Array.from(input)) {\n result1.push(addRecord(record));\n }\n return result1;\n })();\n }\n throw new Error('unknown input format');\n};\n\nPivotData.defaultProps = {\n aggregators: aggregators,\n cols: [],\n rows: [],\n vals: [],\n aggregatorName: Object.keys(aggregators)[0],\n aggregations: [],\n sorters: {},\n valueFilter: {},\n rowOrder: 'key_a_to_z',\n colOrder: 'key_a_to_z',\n rowSorts: {},\n colSorts: {},\n derivedAttributes: {},\n};\n\nPivotData.propTypes = {\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object, PropTypes.func])\n .isRequired,\n aggregatorName: PropTypes.string,\n aggregations: PropTypes.arrayOf(\n PropTypes.shape({\n key: PropTypes.string,\n aggregatorName: PropTypes.string,\n vals: PropTypes.arrayOf(PropTypes.string),\n label: PropTypes.string,\n })\n ),\n cols: PropTypes.arrayOf(PropTypes.string),\n rows: PropTypes.arrayOf(PropTypes.string),\n vals: PropTypes.arrayOf(PropTypes.string),\n valueFilter: PropTypes.objectOf(PropTypes.objectOf(PropTypes.bool)),\n sorters: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.objectOf(PropTypes.func),\n ]),\n derivedAttributes: PropTypes.objectOf(PropTypes.func),\n rowOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\n colOrder: PropTypes.oneOf(['key_a_to_z', 'value_a_to_z', 'value_z_to_a']),\n rowSorts: PropTypes.objectOf(PropTypes.oneOf(['ASC', 'DESC'])),\n colSorts: PropTypes.objectOf(PropTypes.oneOf(['ASC', 'DESC'])),\n};\n\nexport {\n aggregatorTemplates,\n aggregators,\n derivers,\n locales,\n naturalSort,\n numberFormat,\n getSort,\n sortAs,\n builtInSorters,\n detectDataType,\n createSorterByType,\n PivotData,\n};\n"]}