+++ /dev/null
-{
- "presets": ["@babel/preset-env"]
-}
--- /dev/null
+{
+ "presets": ["@babel/preset-env"],
+ "plugins": ["@babel/plugin-transform-object-assign"]
+}
* `helpers.findIndex`
* `helpers.findNextWhere`
* `helpers.findPreviousWhere`
+* `helpers.extend`. Use `Object.assign` instead
* `helpers.indexOf`
* `helpers.lineTo`
* `helpers.longestText` was moved to the `helpers.canvas` namespace and made private
"@babel/helper-plugin-utils": "^7.8.3"
}
},
+ "@babel/plugin-transform-object-assign": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz",
+ "integrity": "sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
"@babel/plugin-transform-object-super": {
"version": "7.8.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
],
"devDependencies": {
"@babel/core": "^7.8.4",
+ "@babel/plugin-transform-object-assign": "^7.8.3",
"@babel/preset-env": "^7.8.4",
"babel-preset-es2015-rollup": "^3.0.0",
"clean-css": "^4.2.3",
+/* eslint-disable import/no-commonjs */
/* eslint-env es6 */
const commonjs = require('rollup-plugin-commonjs');
const pkg = require('./package.json');
const input = 'src/index.js';
+
const banner = `/*!
* Chart.js v${pkg.version}
* ${pkg.homepage}
*/`;
module.exports = [
- // ES6 builds
- // dist/Chart.esm.min.js
- // dist/Chart.esm.js
+ // UMD builds
+ // dist/Chart.min.js
+ // dist/Chart.js
{
- input: input,
+ input,
plugins: [
resolve(),
commonjs(),
- babel({
- exclude: 'node_modules/**'
- }),
+ babel(),
stylesheet({
extract: true
}),
+ optional({
+ include: ['moment']
+ })
],
output: {
name: 'Chart',
- file: 'dist/Chart.esm.js',
- banner: banner,
- format: 'esm',
+ file: 'dist/Chart.js',
+ banner,
+ format: 'umd',
indent: false,
globals: {
moment: 'moment'
]
},
{
- input: input,
+ input,
plugins: [
resolve(),
commonjs(),
- babel({
- exclude: 'node_modules/**'
+ babel(),
+ optional({
+ include: ['moment']
}),
stylesheet({
extract: true,
],
output: {
name: 'Chart',
- file: 'dist/Chart.esm.min.js',
- format: 'esm',
+ file: 'dist/Chart.min.js',
+ format: 'umd',
indent: false,
globals: {
moment: 'moment'
'moment'
]
},
- // UMD builds
- // dist/Chart.min.js
- // dist/Chart.js
+
+ // ES6 builds
+ // dist/Chart.esm.min.js
+ // dist/Chart.esm.js
{
- input: input,
+ input,
plugins: [
resolve(),
commonjs(),
- babel({
- exclude: 'node_modules/**'
- }),
+ babel(),
stylesheet({
extract: true
}),
- optional({
- include: ['moment']
- })
],
output: {
name: 'Chart',
- file: 'dist/Chart.js',
- banner: banner,
- format: 'umd',
+ file: 'dist/Chart.esm.js',
+ banner,
+ format: 'esm',
indent: false,
globals: {
moment: 'moment'
]
},
{
- input: input,
+ input,
plugins: [
resolve(),
commonjs(),
- babel({
- exclude: 'node_modules/**'
- }),
- optional({
- include: ['moment']
- }),
+ babel(),
stylesheet({
extract: true,
minify: true
],
output: {
name: 'Chart',
- file: 'dist/Chart.min.js',
- format: 'umd',
+ file: 'dist/Chart.esm.min.js',
+ format: 'esm',
indent: false,
globals: {
moment: 'moment'
external: [
'moment'
]
- }
+ },
];
import DatasetController from '../core/core.datasetController';
import defaults from '../core/core.defaults';
import Point from '../elements/element.point';
-import {extend} from '../helpers/helpers.core';
import {resolve} from '../helpers/helpers.options';
defaults.set('bubble', {
// In case values were cached (and thus frozen), we need to clone the values
if (values.$shared) {
- values = extend({}, values, {$shared: false});
+ values = Object.assign({}, values, {$shared: false});
}
* @private
*/
-import {extend} from '../helpers/helpers.core';
-
/**
* @return {*}
*/
}
DateAdapter.override = function(members) {
- extend(DateAdapter.prototype, members);
+ Object.assign(DateAdapter.prototype, members);
};
export default {
import Animator from './core.animator';
import Animation from './core.animation';
import defaults from '../core/core.defaults';
-import {noop, extend, isObject} from '../helpers/helpers.core';
+import {noop, isObject} from '../helpers/helpers.core';
const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];
const colors = ['borderColor', 'backgroundColor'];
return;
}
if (oldOpts.$shared) {
- target.options = extend({}, oldOpts, newOpts, {$shared: false});
+ target.options = Object.assign({}, oldOpts, newOpts, {$shared: false});
} else {
- extend(oldOpts, newOpts);
+ Object.assign(oldOpts, newOpts);
}
delete values.options;
}
(cfg.properties || [key]).forEach((prop) => {
// Can have only one config per animation.
if (!animatedProps.has(prop)) {
- animatedProps.set(prop, extend({}, animDefaults, cfg));
+ animatedProps.set(prop, Object.assign({}, animDefaults, cfg));
} else if (prop === key) {
// Single property targetting config wins over multi-targetting.
- animatedProps.set(prop, extend({}, animatedProps.get(prop), cfg));
+ animatedProps.set(prop, Object.assign({}, animatedProps.get(prop), cfg));
}
});
});
if (options.$shared) {
// If the current / old options are $shared, meaning other elements are
// using the same options, we need to clone to become unique.
- target.options = options = extend({}, options, {$shared: false, $animations: {}});
+ target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});
}
animations = this._createAnimations(options, newOptions);
} else {
copyOptions(target, values);
// copyOptions removes the `options` from `values`,
// unless it can be directly assigned.
- extend(target, values);
+ Object.assign(target, values);
return;
}
let config = helpers.mergeIf({}, [datasetAnim, chartAnim]);
if (config[mode]) {
- config = helpers.extend({}, config, config[mode]);
+ config = Object.assign({}, config, config[mode]);
}
const animations = new Animations(chart, config);
*/
_updateElement(element, index, properties, mode) {
if (mode === 'reset' || mode === 'none') {
- helpers.extend(element, properties);
+ Object.assign(element, properties);
} else {
this._resolveAnimations(index, mode).update(element, properties);
}
-import {extend, inherits} from '../helpers/helpers.core';
+import {inherits} from '../helpers/helpers.core';
import {isNumber} from '../helpers/helpers.math';
class Element {
this.hidden = undefined;
if (cfg) {
- extend(this, cfg);
+ Object.assign(this, cfg);
}
}
import defaults from './core.defaults';
-import {each, extend} from '../helpers/helpers.core';
+import {each} from '../helpers/helpers.core';
import {toPadding} from '../helpers/helpers.options';
/**
vBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,
hBoxMaxHeight: availableHeight / 2
});
- const chartArea = extend({
- maxPadding: extend({}, padding),
+ const chartArea = Object.assign({
+ maxPadding: Object.assign({}, padding),
w: availableWidth,
h: availableHeight,
x: padding.left,
// Finally update boxes in chartArea (radial scale for example)
each(boxes.chartArea, (layout) => {
const box = layout.box;
- extend(box, chart.chartArea);
+ Object.assign(box, chart.chartArea);
box.update(chartArea.w, chartArea.h);
});
}
import defaults from './core.defaults';
import Element from './core.element';
import {_alignPixel, _measureText} from '../helpers/helpers.canvas';
-import {callback as call, each, extend, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core';
+import {callback as call, each, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core';
import {_factorize, toDegrees, toRadians} from '../helpers/helpers.math';
import {_parseFont, resolve, toPadding} from '../helpers/helpers.options';
import Ticks from './core.ticks';
// Absorb the master measurements
me.maxWidth = maxWidth;
me.maxHeight = maxHeight;
- me.margins = extend({
+ me.margins = Object.assign({
left: 0,
right: 0,
top: 0,
tick: me.ticks[index],
index
};
- return extend(_parseFont({
+ return Object.assign(_parseFont({
fontFamily: resolve([options.fontFamily], context),
fontSize: resolve([options.fontSize], context),
fontStyle: resolve([options.fontStyle], context),
import defaults from './core.defaults';
-import {clone, each, extend, merge} from '../helpers/helpers.core';
+import {clone, each, merge} from '../helpers/helpers.core';
import layouts from './core.layouts';
export default {
updateScaleDefaults(type, additions) {
const me = this;
if (Object.prototype.hasOwnProperty.call(me.defaults, type)) {
- me.defaults[type] = extend(me.defaults[type], additions);
+ me.defaults[type] = Object.assign(me.defaults[type], additions);
}
},
addScalesToLayout(chart) {
import defaults from '../core/core.defaults';
import Element from '../core/core.element';
-import {extend} from '../helpers/helpers.core';
import {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math';
const TAU = Math.PI * 2;
this.outerRadius = undefined;
if (cfg) {
- extend(this, cfg);
+ Object.assign(this, cfg);
}
}
import defaults from '../core/core.defaults';
import Element from '../core/core.element';
-import {extend} from '../helpers/helpers.core';
import {_bezierInterpolation, _pointInLine, _steppedInterpolation} from '../helpers/helpers.interpolation';
import {_computeSegments, _boundSegments} from '../helpers/helpers.segment';
import {_steppedLineTo, _bezierCurveTo} from '../helpers/helpers.canvas';
this._segments = undefined;
if (cfg) {
- extend(this, cfg);
+ Object.assign(this, cfg);
}
}
import defaults from '../core/core.defaults';
import Element from '../core/core.element';
import {_isPointInArea, drawPoint} from '../helpers/helpers.canvas';
-import {extend} from '../helpers/helpers.core';
const defaultColor = defaults.color;
this.stop = undefined;
if (cfg) {
- extend(this, cfg);
+ Object.assign(this, cfg);
}
}
import defaults from '../core/core.defaults';
import Element from '../core/core.element';
-import {extend, isObject} from '../helpers/helpers.core';
+import {isObject} from '../helpers/helpers.core';
const defaultColor = defaults.color;
this.height = undefined;
if (cfg) {
- extend(this, cfg);
+ Object.assign(this, cfg);
}
}
}
}
-/**
- * Applies the contents of two or more objects together into the first object.
- * @param {object} target - The target object in which all objects are merged into.
- * @param {object} arg1 - Object containing additional properties to merge in target.
- * @param {object} argN - Additional objects containing properties to merge in target.
- * @returns {object} The `target` object.
- */
-export const extend = Object.assign || function(target, ...args) {
- return merge(target, args, {
- merger(key, dst, src) {
- dst[key] = src[key];
- }
- });
-};
-
/**
* Basic javascript inheritance based on the model created in Backbone.js
*/
ChartElement.extend = inherits;
if (extensions) {
- extend(ChartElement.prototype, extensions);
+ Object.assign(ChartElement.prototype, extensions);
}
ChartElement.__super__ = me.prototype;
import Element from '../core/core.element';
import layouts from '../core/core.layouts';
import {drawPoint} from '../helpers/helpers.canvas';
-import {callback as call, extend, mergeIf, valueOrDefault} from '../helpers/helpers.core';
+import {callback as call, mergeIf, valueOrDefault} from '../helpers/helpers.core';
import {_parseFont, toPadding} from '../helpers/helpers.options';
import {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl';
constructor(config) {
super();
- extend(this, config);
+ Object.assign(this, config);
// Contains hit boxes for each dataset (in dataset order)
this.legendHitBoxes = [];
constructor(config) {
super();
- helpers.extend(this, config);
+ Object.assign(this, config);
this.chart = config.chart;
this.options = config.options;
*/
function resolveOptions(options) {
- options = helpers.extend({}, defaults.tooltips, options);
+ options = Object.assign({}, defaults.tooltips, options);
options.bodyFontFamily = valueOrDefault(options.bodyFontFamily, defaults.fontFamily);
options.bodyFontStyle = valueOrDefault(options.bodyFontStyle, defaults.fontStyle);
me.footer = me.getFooter(tooltipItems, data);
const size = me._size = getTooltipSize(me);
- const positionAndSize = helpers.extend({}, position, size);
+ const positionAndSize = Object.assign({}, position, size);
const alignment = determineAlignment(me._chart, options, positionAndSize);
const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, me._chart);
if (!position) {
return;
}
- const positionAndSize = helpers.extend({}, position, me._size);
+ const positionAndSize = Object.assign({}, position, me._size);
const alignment = determineAlignment(chart, options, positionAndSize);
const point = getBackgroundPoint(options, positionAndSize, alignment, chart);
if (animX._to !== point.x || animY._to !== point.y) {
it('should merge object properties in target and return target', function() {
var target = {a: 'abc', b: 56};
var object = {b: 0, c: [2, 5, 6]};
- var result = helpers.extend(target, object);
+ var result = Object.assign(target, object);
expect(result).toBe(target);
expect(target).toEqual({a: 'abc', b: 0, c: [2, 5, 6]});
var o1 = {a: 5, c: 6};
var o2 = {a: 7, e: 8};
- helpers.extend(target, o0, o1, o2);
+ Object.assign(target, o0, o1, o2);
expect(target).toEqual({a: 7, b: 1, c: 6, d: 4, e: 8});
});
var target = {a: {b: 0, c: 1}};
var object = {a: {b: 2, d: 3}};
- helpers.extend(target, object);
+ Object.assign(target, object);
expect(target).toEqual({a: {b: 2, d: 3}});
expect(target.a).toBe(object.a);
const fontStyle = Chart.defaults.fontStyle;
const lineHeight = Chart.defaults.lineHeight;
- Chart.helpers.extend(Chart.defaults, {
+ Object.assign(Chart.defaults, {
fontFamily: 'foobar',
fontSize: 42,
fontStyle: 'xxxyyy',
weight: null
});
- Chart.helpers.extend(Chart.defaults, {
+ Object.assign(Chart.defaults, {
fontFamily,
fontSize,
fontStyle,
scaleConfig[setup.axis] = {
type: 'logarithmic'
};
- Chart.helpers.extend(scaleConfig, setup.scale);
+ Object.assign(scaleConfig, setup.scale);
scaleConfig[setup.axis].type = 'logarithmic';
var description = 'dataset has stack option and ' + setup.describe
data: setup.dataset
}],
};
- Chart.helpers.extend(xConfig, setup.scale);
- Chart.helpers.extend(yConfig, setup.scale);
- Chart.helpers.extend(data, setup.data || {});
+ Object.assign(xConfig, setup.scale);
+ Object.assign(yConfig, setup.scale);
+ Object.assign(data, setup.data || {});
this.chart = window.acquireChart({
type: 'line',
data: data,
data: setup.dataset
}],
};
- Chart.helpers.extend(xConfig, setup.scale);
- Chart.helpers.extend(yConfig, setup.scale);
- Chart.helpers.extend(data, setup.data || {});
+ Object.assign(xConfig, setup.scale);
+ Object.assign(yConfig, setup.scale);
+ Object.assign(data, setup.data || {});
this.chart = window.acquireChart({
type: 'line',
data: data,