@hackoregon/component-library
Version:
Official repo for Hack Oregon React component library
170 lines (146 loc) • 5.95 kB
JavaScript
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
import CivicVictoryTheme from "../VictoryTheme/VictoryThemeIndex";
var tooltipColor = CivicVictoryTheme.civic.tooltip.style.customHoverColor;
var chartEvents = [{
target: "data",
eventHandlers: {
onMouseOver: function onMouseOver() {
return [{
target: "data",
mutation: function mutation(props) {
return {
style: Object.assign(props.style, {
fill: tooltipColor
})
};
}
}, {
target: "labels",
mutation: function mutation() {
return {
active: true
};
}
}];
},
onMouseOut: function onMouseOut() {
return [{
target: "data",
mutation: function mutation() {}
}, {
target: "labels",
mutation: function mutation() {
return {
active: false
};
}
}];
}
}
}];
function getDefaultDomain(data, dataKey, dataLabel) {
var xValues = data.map(function (value) {
return value[dataKey];
});
var yValues = data.map(function (value) {
return value[dataLabel];
});
return {
x: [Math.min.apply(Math, _toConsumableArray(xValues)) < 0 ? Math.min.apply(Math, _toConsumableArray(xValues)) : Math.min.apply(Math, _toConsumableArray(xValues)), Math.max.apply(Math, _toConsumableArray(xValues))],
y: [Math.min.apply(Math, _toConsumableArray(yValues)) < 0 ? Math.min.apply(Math, _toConsumableArray(yValues)) : 0, Math.max.apply(Math, _toConsumableArray(yValues))]
};
}
function getDefaultStackedDomain(data, dataKey, dataLabel) {
function groupBy(objectArray, property) {
return objectArray.reduce(function (acc, obj) {
var key = obj[property];
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(obj);
return acc;
}, []);
}
var xValues = data.map(function (value) {
return value[dataKey];
});
var yValues = Object.values(groupBy(data, dataKey).map(function (value) {
return value.reduce(function (acc, obj) {
return acc + obj[dataLabel];
}, 0);
}));
return {
x: [Math.min.apply(Math, _toConsumableArray(xValues)) < 0 ? Math.min.apply(Math, _toConsumableArray(xValues)) : Math.min.apply(Math, _toConsumableArray(xValues)), Math.max.apply(Math, _toConsumableArray(xValues))],
y: [Math.min.apply(Math, _toConsumableArray(yValues)) < 0 ? Math.min.apply(Math, _toConsumableArray(yValues)) : 0, Math.max.apply(Math, _toConsumableArray(yValues))]
};
}
function getDefaultDataSeriesLabels(data, series) {
var categories = data.map(function (value) {
return value[series];
});
var uniqueCategories = _toConsumableArray(new Set(categories));
return uniqueCategories.map(function (cat) {
return {
category: cat,
label: cat
};
});
}
function getDefaultFillStyle(dataSeriesLabel) {
var dataSeriesCategories = dataSeriesLabel && dataSeriesLabel.length ? dataSeriesLabel.map(function (series) {
return series.category;
}) : null;
return {
data: {
fill: function fill(d) {
if (!dataSeriesCategories) return CivicVictoryTheme.civic.group.colorScale[0];
var idx = dataSeriesCategories.findIndex(function (series) {
return series === d.series;
});
return CivicVictoryTheme.civic.group.colorScale[idx];
}
}
};
}
function getDefaultLineStyle(idx) {
return {
data: {
stroke: CivicVictoryTheme.civic.group.colorScale[idx]
}
};
}
function getDefaultAreaStyle(idx) {
return {
data: {
fill: CivicVictoryTheme.civic.group.colorScale[idx]
}
};
}
var categoricalColors = function categoricalColors(dataLength) {
var colorScheme = [];
for (var i = 0; i < dataLength; i += 1) {
colorScheme.push(CivicVictoryTheme.civic.group.colorScale[i]);
}
return colorScheme;
};
var transformDatato100 = function transformDatato100(dataset, value, label) {
var totals = dataset[0].map(function (currentData, i) {
return dataset.reduce(function (memo, curr) {
return memo + curr[i][label];
}, 0);
});
var newData = dataset.map(function (indvData) {
return indvData.map(function (datum, i) {
var _objectSpread2;
var newObj = _objectSpread({}, datum, (_objectSpread2 = {}, _defineProperty(_objectSpread2, "".concat(value), datum[value]), _defineProperty(_objectSpread2, "".concat(label), datum[label] / totals[i]), _objectSpread2));
return newObj;
});
});
return newData;
};
export { chartEvents, getDefaultDomain, getDefaultDataSeriesLabels, getDefaultFillStyle, getDefaultLineStyle, getDefaultAreaStyle, getDefaultStackedDomain, categoricalColors, transformDatato100 };