delete values.options;
}
+function extensibleConfig(animations) {
+ const result = {};
+ Object.keys(animations).forEach(key => {
+ const value = animations[key];
+ if (!isObject(value)) {
+ result[key] = value;
+ }
+ });
+ return result;
+}
+
export default class Animations {
constructor(chart, animations) {
this._chart = chart;
}
configure(animations) {
+ if (!isObject(animations)) {
+ return;
+ }
+
const animatedProps = this._properties;
- const animDefaults = Object.fromEntries(Object.entries(animations).filter(({1: value}) => !isObject(value)));
+ const animDefaults = extensibleConfig(animations);
- for (let [key, cfg] of Object.entries(animations)) {
+ Object.keys(animations).forEach(key => {
+ const cfg = animations[key];
if (!isObject(cfg)) {
- continue;
+ return;
}
for (let prop of cfg.properties || [key]) {
// Can have only one config per animation.
animatedProps.set(prop, extend({}, animatedProps.get(prop), cfg));
}
}
- }
+ });
}
/**
});
// apply scale defaults, if not overridden by dataset defaults
- Object.values(scales).forEach(scale => {
+ Object.keys(scales).forEach(key => {
+ const scale = scales[key];
helpers.mergeIf(scale, scaleService.getScaleDefaults(scale.type));
});
chart.tooltip.initialize();
}
-const KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];
+const KNOWN_POSITIONS = new Set(['top', 'bottom', 'left', 'right', 'chartArea']);
function positionIsHorizontal(position, axis) {
- return position === 'top' || position === 'bottom' || (!KNOWN_POSITIONS.includes(position) && axis === 'x');
+ return position === 'top' || position === 'bottom' || (!KNOWN_POSITIONS.has(position) && axis === 'x');
}
function compare2Level(l1, l2) {