import DatasetController from '../core/core.datasetController';
import defaults from '../core/core.defaults';
import Rectangle from '../elements/element.rectangle';
-import helpers from '../helpers';
-
-const valueOrDefault = helpers.valueOrDefault;
+import {clipArea, unclipArea} from '../helpers/helpers.canvas';
+import {isArray, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core';
+import {_limitValue, sign} from '../helpers/helpers.math';
defaults._set('bar', {
hover: {
var thickness = options.barThickness;
var count = ruler.stackCount;
var curr = ruler.pixels[index];
- var min = helpers.isNullOrUndef(thickness)
+ var min = isNullOrUndef(thickness)
? computeMinSampleSize(ruler.scale, ruler.pixels)
: -1;
var size, ratio;
- if (helpers.isNullOrUndef(thickness)) {
+ if (isNullOrUndef(thickness)) {
size = min * options.categoryPercentage;
ratio = options.barPercentage;
} else {
item = {};
item[iScale.axis] = singleScale || iScale._parse(labels[i], i);
- if (helpers.isArray(entry)) {
+ if (isArray(entry)) {
parseFloatBar(entry, item, vScale, i);
} else {
item[vScale.axis] = vScale._parse(entry, i);
item = {};
item[iScale.axis] = iScale._parseObject(obj, iScale.axis, i);
value = obj[vProp];
- if (helpers.isArray(value)) {
+ if (isArray(value)) {
parseFloatBar(value, item, vScale, i);
} else {
item[vScale.axis] = vScale._parseObject(obj, vProp, i);
value = custom.barStart;
length = custom.barEnd - custom.barStart;
// bars crossing origin are not stacked
- if (value !== 0 && helpers.math.sign(value) !== helpers.math.sign(custom.barEnd)) {
+ if (value !== 0 && sign(value) !== sign(custom.barEnd)) {
start = 0;
}
start += value;
// So we don't try to draw so huge rectangles.
// https://github.com/chartjs/Chart.js/issues/5247
// TODO: use borderWidth instead (need to move the parsing from rectangle)
- base = helpers.math._limitValue(vScale.getPixelForValue(start),
+ base = _limitValue(vScale.getPixelForValue(start),
vScale._startPixel - 10,
vScale._endPixel + 10);
const ilen = rects.length;
let i = 0;
- helpers.canvas.clipArea(chart.ctx, chart.chartArea);
+ clipArea(chart.ctx, chart.chartArea);
for (; i < ilen; ++i) {
if (!isNaN(me._getParsed(i)[vScale.axis])) {
}
}
- helpers.canvas.unclipArea(chart.ctx);
+ unclipArea(chart.ctx);
}
});
import DatasetController from '../core/core.datasetController';
import defaults from '../core/core.defaults';
import Point from '../elements/element.point';
-import helpers from '../helpers';
-
-const resolve = helpers.options.resolve;
+import {extend} from '../helpers/helpers.core';
+import {resolve} from '../helpers/helpers.options';
defaults._set('bubble', {
animation: {
// In case values were cached (and thus frozen), we need to clone the values
if (values.$shared) {
- values = helpers.extend({}, values, {$shared: false});
+ values = extend({}, values, {$shared: false});
}
import DatasetController from '../core/core.datasetController';
import defaults from '../core/core.defaults';
import Arc from '../elements/element.arc';
-import helpers from '../helpers';
-
-const valueOrDefault = helpers.valueOrDefault;
+import {isArray, noop, valueOrDefault} from '../helpers/helpers.core';
const PI = Math.PI;
const DOUBLE_PI = PI * 2;
var dataLabel = data.labels[tooltipItem.index];
var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
- if (helpers.isArray(dataLabel)) {
+ if (isArray(dataLabel)) {
// show value on first line of multiline label
// need to clone because we are changing the value
dataLabel = dataLabel.slice();
dataElementType: Arc,
- linkScales: helpers.noop,
+ linkScales: noop,
/**
* @private
import defaults from '../core/core.defaults';
import Line from '../elements/element.line';
import Point from '../elements/element.point';
-import helpers from '../helpers';
-
-const valueOrDefault = helpers.valueOrDefault;
-const resolve = helpers.options.resolve;
+import {valueOrDefault} from '../helpers/helpers.core';
+import {isNumber} from '../helpers/helpers.math';
+import {resolve} from '../helpers/helpers.options';
defaults._set('line', {
showLines: true,
const sharedOptions = me._getSharedOptions(mode, points[start], firstOpts);
const includeOptions = me._includeOptions(mode, sharedOptions);
const spanGaps = valueOrDefault(me._config.spanGaps, me.chart.options.spanGaps);
- const maxGapLength = helpers.math.isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;
+ const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;
let prevParsed;
for (let i = 0; i < points.length; ++i) {
import DoughnutController from './controller.doughnut';
import defaults from '../core/core.defaults';
-import helpers from '../helpers';
+import {clone} from '../helpers/helpers.core';
-defaults._set('pie', helpers.clone(defaults.doughnut));
+defaults._set('pie', clone(defaults.doughnut));
defaults._set('pie', {
cutoutPercentage: 0
});
import DatasetController from '../core/core.datasetController';
import defaults from '../core/core.defaults';
import Arc from '../elements/element.arc';
-import helpers from '../helpers';
-
-const resolve = helpers.options.resolve;
+import {toRadians} from '../helpers/helpers.math';
+import {resolve} from '../helpers/helpers.options';
defaults._set('polarArea', {
animation: {
function getStartAngleRadians(deg) {
// radialLinear scale draws angleLines using startAngle. 0 is expected to be at top.
// Here we adjust to standard unit circle used in drawing, where 0 is at right.
- return helpers.math.toRadians(deg) - 0.5 * Math.PI;
+ return toRadians(deg) - 0.5 * Math.PI;
}
export default DatasetController.extend({
import defaults from '../core/core.defaults';
import Line from '../elements/element.line';
import Point from '../elements/element.point';
-import helpers from '../helpers';
-
-const valueOrDefault = helpers.valueOrDefault;
+import {valueOrDefault} from '../helpers/helpers.core';
defaults._set('radar', {
spanGaps: false,