Socket
Socket
Sign inDemoInstall

@devexpress/dx-chart-core

Package Overview
Dependencies
Maintainers
13
Versions
74
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@devexpress/dx-chart-core - npm Package Compare versions

Comparing version 1.10.3 to 1.10.4

323

dist/dx-chart-core.es.js
/**
* Bundle of @devexpress/dx-chart-core
* Generated: 2019-02-27
* Version: 1.10.3
* Generated: 2019-03-11
* Version: 1.10.4
* License: https://js.devexpress.com/Licensing

@@ -38,21 +38,54 @@ */

/** @internal */
var HORIZONTAL = 'horizontal';
/** @internal */
var VERTICAL = 'vertical';
/** @internal */
var TOP = 'top';
/** @internal */
var BOTTOM = 'bottom';
/** @internal */
var LEFT = 'left';
/** @internal */
var RIGHT = 'right';
/** @internal */
var MIDDLE = 'middle';
/** @internal */
var END = 'end';
/** @internal */
var START = 'start';
/** @internal */
var LINEAR = 'linear';
/** @internal */
var BAND = 'band';
/** @internal */
var ARGUMENT_DOMAIN = 'argument-domain';
/** @internal */
var VALUE_DOMAIN = 'value-domain';
/** @internal */
var HOVERED = 'hovered';
/** @internal */
var SELECTED = 'selected';
/** @internal */
var scaleLinear = scaleLinear$1;
/** @internal */
var scaleBand = function () { return scaleBand$1().paddingInner(0.3).paddingOuter(0.15); };
/** @internal */
var isHorizontal = function (name) { return name === ARGUMENT_DOMAIN; };
/** @internal */
var getWidth = function (scale) { return (scale.bandwidth ? scale.bandwidth() : 0); };
/** @internal */
var getValueDomainName = function (name) { return name || VALUE_DOMAIN; };
/** @internal */
var makeScale = function (_a, range) {
var factory = _a.factory, domain = _a.domain;
return ((factory || scaleLinear)().domain(domain).range(range));
};
// Though this function is used only in *Viewport* plugin (and so should be placed right there),
// it resides here so that internal scale specifics (*getWidth*)
// are encapsulated in this utility file.
/** @internal */
var scaleBounds = function (scale, bounds) { return ([scale(bounds[0]), scale(bounds[1]) + getWidth(scale)]); };
/** @internal */
var fixOffset = function (scale) {

@@ -64,101 +97,73 @@ var offset = getWidth(scale) / 2;

var _a;
var makeDomain = function (_a) {
var factory = _a.factory, modifyDomain = _a.modifyDomain;
return ({
domain: [],
factory: factory,
isDiscrete: !!(factory && isDiscrete(factory)),
modifyDomain: modifyDomain,
});
};
/** @internal */
var defaultDomains = (_a = {},
_a[ARGUMENT_DOMAIN] = { domain: [] },
_a[VALUE_DOMAIN] = { domain: [] },
_a[ARGUMENT_DOMAIN] = makeDomain({}),
_a[VALUE_DOMAIN] = makeDomain({}),
_a);
var addDomain = function (domains, name, props) {
/** @internal */
var addDomain = function (domains, name, options) {
var _a;
return (__assign({}, domains, (_a = {}, _a[name] = props, _a)));
return (__assign({}, domains, (_a = {}, _a[name] = makeDomain(options), _a)));
};
var copy = function (domains) {
var result = {};
Object.keys(domains).forEach(function (name) {
result[name] = __assign({}, domains[name], { domain: [] });
});
return result;
};
var getSeriesValueDomainName = function (series) { return getValueDomainName(series.scaleName); };
var floatsEqual = function (a, b) { return Math.abs(a - b) < Number.EPSILON; };
var mergeContinuousDomains = function (domain, items) {
return extent(domain.concat(items));
var newDomain = extent(domain.concat(items));
return floatsEqual(newDomain[0], domain[0]) && floatsEqual(newDomain[1], domain[1])
? domain : newDomain;
};
var mergeDiscreteDomains = function (domain, items) {
return Array.from(new Set(domain.concat(items)));
var newDomain = Array.from(new Set(domain.concat(items)));
return newDomain.length === domain.length ? domain : newDomain;
};
var getArgument = function (point) { return point.argument; };
var getValue = function (point) { return point.value; };
var extendDomain = function (target, items) {
var merge = target.isDiscrete ? mergeDiscreteDomains : mergeContinuousDomains;
Object.assign(target, { domain: merge(target.domain, items) });
};
var calculateDomains = function (domains, seriesList) {
seriesList.forEach(function (seriesItem) {
var valueDomainName = getSeriesValueDomainName(seriesItem);
var points = seriesItem.points;
// TODO: This is a temporary workaround for Stack plugin.
// Once scales (or domains) are exposed for modification Stack will modify scale and
// this code will be removed.
var valueDomainItems = seriesItem.getValueDomain
? seriesItem.getValueDomain(points) : points.map(getValue);
extendDomain(domains[valueDomainName], valueDomainItems);
extendDomain(domains[ARGUMENT_DOMAIN], points.map(getArgument));
});
};
var scaleLinear = scaleLinear$1;
var scaleBand = function () { return scaleBand$1().paddingInner(0.3).paddingOuter(0.15); };
var guessFactory = function (points, getItem) {
if (points.length && typeof getItem(points[0]) === 'string') {
return scaleBand;
var guessFactory = function (points, getItem) { return (points.length && typeof getItem(points[0]) === 'string' ? scaleBand : scaleLinear); };
var isDiscrete = function (factory) { return 'bandwidth' in factory(); };
var updateDomainFactory = function (domain, series, getItem) {
if (domain.factory) {
return domain;
}
return scaleLinear;
var factory = guessFactory(series.points, getItem);
return __assign({}, domain, { factory: factory, isDiscrete: isDiscrete(factory) });
};
var collectDomainsFromSeries = function (domains, seriesList) {
seriesList.forEach(function (seriesItem) {
if (!domains[ARGUMENT_DOMAIN].factory) {
Object.assign(domains[ARGUMENT_DOMAIN], {
factory: guessFactory(seriesItem.points, getArgument),
});
}
var valueDomainName = getSeriesValueDomainName(seriesItem);
var obj = domains[valueDomainName];
if (!obj.factory) {
obj.factory = guessFactory(seriesItem.points, getValue);
}
// TODO: It is to be removed together with *TODO* from above.
if (seriesItem.getPointTransformer.isStartedFromZero && obj.domain.length === 0) {
obj.domain = [0];
}
});
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
if (!obj.factory) {
obj.factory = scaleLinear;
}
obj.isDiscrete = !!obj.factory().bandwidth;
});
return domains;
/** @internal */
var updateDomainItems = function (domain, items) {
var merge = domain.isDiscrete ? mergeDiscreteDomains : mergeContinuousDomains;
var merged = merge(domain.domain, items);
return merged === domain.domain ? domain : __assign({}, domain, { domain: domain.modifyDomain ? domain.modifyDomain(merged) : merged });
};
var customizeDomains = function (domains) {
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
if (obj.modifyDomain) {
obj.domain = obj.modifyDomain(obj.domain);
}
});
var getArgumentDomainItems = function (series) { return series.points.map(getArgument); };
var getValueDomainItems = function (series) {
var items = series.points.map(getValue);
return series.getPointTransformer.isStartedFromZero ? [0].concat(items) : items;
};
var computeDomains = function (domains, seriesList) {
var result = copy(domains);
collectDomainsFromSeries(result, seriesList);
calculateDomains(result, seriesList);
customizeDomains(result);
return result;
var updateDomain = function (domain, series, getItem, getDomainItems) { return updateDomainItems(updateDomainFactory(domain, series, getItem), getDomainItems(series)); };
/** @internal */
var extendDomains = function (domains, series) {
var argumentDomain = updateDomain(domains[ARGUMENT_DOMAIN], series, getArgument, getArgumentDomainItems);
var valueDomainName = getValueDomainName(series.scaleName);
var valueDomain = updateDomain(domains[valueDomainName], series, getValue, getValueDomainItems);
var changes = {};
if (argumentDomain !== domains[ARGUMENT_DOMAIN]) {
changes[ARGUMENT_DOMAIN] = argumentDomain;
}
if (valueDomain !== domains[valueDomainName]) {
changes[valueDomainName] = valueDomain;
}
return Object.keys(changes).length ? __assign({}, domains, changes) : domains;
};
var buildScales = function (domains, _a) {
var width = _a.width, height = _a.height;
/** @internal */
var buildScales = function (domains, ranges) {
var scales = {};
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
var scale = obj.factory();
scale.domain(obj.domain);
scale.range(isHorizontal(name) ? [0, width] : [height, 0]);
scales[name] = scale;
scales[name] = makeScale(domains[name], ranges[name === ARGUMENT_DOMAIN ? ARGUMENT_DOMAIN : VALUE_DOMAIN]);
});

@@ -173,2 +178,3 @@ return scales;

};
/** @internal */
var bBoxes = function (prevBBoxes, _a) {

@@ -181,2 +187,10 @@ var bBox = _a.bBox, placeholder = _a.placeholder;

};
/** @internal */
var getRanges = function (paneSize) {
var _a;
return (_a = {},
_a[ARGUMENT_DOMAIN] = [0, paneSize.width],
_a[VALUE_DOMAIN] = [paneSize.height, 0],
_a);
};

@@ -216,2 +230,3 @@ var getTicks = function (scale) { return (scale.ticks ? scale.ticks() : scale.domain()); };

};
/** @internal */
var axisCoordinates = function (_a) {

@@ -228,4 +243,13 @@ var scaleName = _a.scaleName, scale = _a.scale, position = _a.position, tickSize = _a.tickSize, tickFormat = _a.tickFormat, indentFromAxis = _a.indentFromAxis;

};
// It is a part of a temporary walkaround. See note in Axis plugin.
/** @internal */
var createTickFilter = function (_a) {
var width = _a[0], height = _a[1];
return (width > 0
? function (tick) { return tick.x1 >= 0 && tick.x1 <= width; }
: function (tick) { return tick.y1 >= 0 && tick.y1 <= height; });
};
var horizontalGridOptions = { y: 0, dy: 1 };
var verticalGridOptions = { x: 0, dx: 1 };
/** @internal */
var getGridCoordinates = function (_a) {

@@ -250,2 +274,3 @@ var scaleName = _a.scaleName, scale = _a.scale;

};
/** @internal */
var dArea = area()

@@ -255,5 +280,7 @@ .x(getX)

.y0(getY1);
/** @internal */
var dLine = line()
.x(getX)
.y(getY);
/** @internal */
var dSpline = line()

@@ -263,2 +290,3 @@ .x(getX)

.curve(curveMonotoneX);
/** @internal */
var getPiePointTransformer = function (_a) {

@@ -279,2 +307,3 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale, points = _a.points;

};
/** @internal */
var getLinePointTransformer = function (_a) {

@@ -287,2 +316,3 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale;

// separate function instance is required as it contains additional static fields.
/** @internal */
var getScatterPointTransformer = function () {

@@ -295,2 +325,3 @@ var args = [];

};
/** @internal */
var getAreaPointTransformer = function (series) {

@@ -306,2 +337,3 @@ var transform = getLinePointTransformer(series);

getAreaPointTransformer.isStartedFromZero = true;
/** @internal */
var getBarPointTransformer = function (_a) {

@@ -318,9 +350,13 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale;

getPiePointTransformer.getPointColor = function (palette, index) { return palette[index % palette.length]; };
/** @internal */
var findSeriesByName = function (name, series) { return series.find(function (seriesItem) { return seriesItem.symbolName === name; }); };
/** @internal */
var dBar = function (_a) {
var x = _a.x, y = _a.y, y1 = _a.y1, width = _a.width;
return ({
var x = _a.x, y = _a.y, y1 = _a.y1, barWidth = _a.barWidth, maxBarWidth = _a.maxBarWidth;
var width = barWidth * maxBarWidth;
return {
x: x - width / 2, y: Math.min(y, y1), width: width || 2, height: Math.abs(y1 - y),
});
};
};
/** @internal */
var dSymbol = function (_a) {

@@ -330,2 +366,3 @@ var size = _a.size;

};
/** @internal */
var dPie = function (_a) {

@@ -395,2 +432,3 @@ var maxRadius = _a.maxRadius, innerRadius = _a.innerRadius, outerRadius = _a.outerRadius, startAngle = _a.startAngle, endAngle = _a.endAngle;

};
/** @internal */
var addSeries = function (series, data, palette, props, restProps) {

@@ -410,2 +448,3 @@ // It is used to generate unique series dependent attribute names for patterns.

};
/** @internal */
var scaleSeriesPoints = function (series, scales) { return series.map(function (seriesItem) { return scalePoints(seriesItem, scales); }); };

@@ -438,10 +477,2 @@

};
// TODO: Temporary - see corresponding note in *computeDomains*.
var getValueDomain = function (points) {
var items = [];
points.forEach(function (point) {
items.push(point.value, point.value0);
});
return items;
};
var collectStacks = function (seriesList, seriesToStackMap, stacksKeys, seriesPositions) {

@@ -481,6 +512,5 @@ seriesList.forEach(function (_a) {

});
var stackedSeries = __assign({}, series, { points: points });
var stackedSeries = __assign({}, series, { points: points, isStacked: true });
if (series.getPointTransformer.isStartedFromZero) {
stackedSeries.getPointTransformer = getStackedPointTransformer(series.getPointTransformer);
stackedSeries.getValueDomain = getValueDomain;
}

@@ -545,2 +575,3 @@ return stackedSeries;

};
/** @internal */
var getStackedSeries = function (seriesList, dataItems, _a) {

@@ -553,2 +584,29 @@ var stacks = _a.stacks, offset = _a.offset, order = _a.order;

};
var resetDomainItems = function (domains) {
var result = {};
Object.keys(domains).forEach(function (key) {
result[key] = __assign({}, domains[key], { domain: [] });
});
return result;
};
var extendDomainsWithAdditionalItems = function (domains, series) {
var _a;
var items = series.points.map(function (point) { return point.value0; });
var key = getValueDomainName(series.scaleName);
var domain = updateDomainItems(domains[key], items);
return domain !== domains[key] ? __assign({}, domains, (_a = {}, _a[key] = domain, _a)) : domains;
};
// Stacking changes data - so computed domains have to be discarded
// and recalculated from the new stacked data.
/** @internal */
var getStackedDomains = function (domains, seriesList) {
var stackedSeries = seriesList.filter(function (series) { return series.isStacked; });
if (!stackedSeries.length) {
return domains;
}
// Recalculate domains in a common way.
var rebuiltDomains = seriesList.reduce(extendDomains, resetDomainItems(domains));
// Take additional "value0" fields into account.
return stackedSeries.reduce(extendDomainsWithAdditionalItems, rebuiltDomains);
};

@@ -594,2 +652,3 @@ var ANIMATIONS = Symbol('animation');

};
/** @internal */
var getAreaAnimationStyle = function (scales) {

@@ -602,2 +661,3 @@ var animationStyle = {

};
/** @internal */
var getPieAnimationStyle = function (_, point) {

@@ -609,2 +669,3 @@ var options = getDefaultPieAnimationOptions(point);

};
/** @internal */
var getScatterAnimationStyle = function () {

@@ -616,2 +677,3 @@ var options = getDefaultAreaAnimationOptions();

};
/** @internal */
var buildAnimatedStyleGetter = function (style, getAnimationStyle, scales, point) {

@@ -638,2 +700,3 @@ var animationStyle = getAnimationStyle(scales, point);

};
/** @internal */
var processPointerMove = function (targets, currentTarget, notify) {

@@ -652,2 +715,3 @@ var nextTarget = selectTarget(targets, currentTarget);

// so *window* can be accessed safely.
/** @internal */
var getRootOffset = function (root) {

@@ -659,2 +723,3 @@ var _a = root.getBoundingClientRect(), left = _a.left, top = _a.top;

/** @internal */
var getParameters = function (series, target) {

@@ -671,2 +736,3 @@ var currentSeries = series.find(function (_a) {

};
/** @internal */
var createReference = function (rect, rootRef) { return ({

@@ -691,2 +757,3 @@ // These two fields together with *width* and *height* are left with stub data for

}); };
/** @internal */
var processHandleTooltip = function (targets, currentTarget, onTargetItemChange) {

@@ -697,2 +764,50 @@ var filterTargets = targets.filter(function (target) { return target.point !== undefined; });

// TODO: Copypaste!
var floatsEqual$1 = function (a, b) { return Math.abs(a - b) < Number.EPSILON; };
// Given original scale
// f(domain) = range
// f(subDomain) = subRange
// Find extended scale
// g(domain) = extendedRange
// g(subDomain) = range
// Original "range" is linearly extended so that
// extendedRange : range === range : subRange
// y = p * x + q
// subRange = p * range + q => p, q
// range = p * extendedRange + q => extendedRange
var proportionallyExtendRange = function (range, subRange) {
var p = (subRange[0] - subRange[1]) / (range[0] - range[1]);
var q = subRange[0] - p * range[0];
return [
(range[0] - q) / p,
(range[1] - q) / p,
];
};
var adjustRange = function (domain, bounds, range) {
var scale = makeScale(domain, range);
var subRange = scaleBounds(scale, bounds);
if (floatsEqual$1(subRange[0], range[0]) && floatsEqual$1(subRange[1], range[1])) {
return range;
}
return proportionallyExtendRange(range, subRange);
};
var update = function (ranges, changes, key, domain, bounds) {
var newRange = adjustRange(domain, bounds, ranges[key]);
if (newRange !== ranges[key]) {
changes[key] = newRange;
}
};
/** @internal */
var adjustLayout = function (domains, ranges, _a) {
var argumentBounds = _a.argumentBounds, scaleName = _a.scaleName, valueBounds = _a.valueBounds;
var changes = {};
if (argumentBounds) {
update(ranges, changes, ARGUMENT_DOMAIN, domains[ARGUMENT_DOMAIN], argumentBounds);
}
if (valueBounds) {
update(ranges, changes, VALUE_DOMAIN, domains[getValueDomainName(scaleName)], valueBounds);
}
return Object.keys(changes).length ? __assign({}, ranges, changes) : ranges;
};
var getSegmentLength = function (dx, dy) { return Math.sqrt(dx * dx + dy * dy); };

@@ -761,2 +876,3 @@ // *distance* is a normalized distance to point.

}; }; };
/** @internal */
var createAreaHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -769,2 +885,3 @@ var path = area();

});
/** @internal */
var createLineHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -778,2 +895,3 @@ var path = area();

});
/** @internal */
var createSplineHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -792,2 +910,3 @@ var path = area();

// Some kind of binary search can be used here as bars can be ordered along argument axis.
/** @internal */
var createBarHitTester = createPointsEnumeratingHitTesterCreator(function (_a, point) {

@@ -802,2 +921,3 @@ var px = _a[0], py = _a[1];

});
/** @internal */
var createScatterHitTester = createPointsEnumeratingHitTesterCreator(function (_a, obj) {

@@ -814,2 +934,3 @@ var px = _a[0], py = _a[1];

// Some kind of binary search can be used here as pies can be ordered along angle axis.
/** @internal */
var createPieHitTester = createPointsEnumeratingHitTesterCreator(function (_a, point) {

@@ -840,2 +961,3 @@ var px = _a[0], py = _a[1];

};
/** @internal */
var changeSeriesState = function (seriesList, targets, state) {

@@ -876,2 +998,3 @@ if (targets.length === 0) {

var isSinglePieSeriesCase = function (series) { return (series.length === 1 && 'innerRadius' in series[0] && 'outerRadius' in series[0]); };
/** @internal */
var getLegendItems = function (series) { return ((isSinglePieSeriesCase(series) ? getPieLegendItems : getDefaultLegendItems)(series)); };

@@ -900,3 +1023,4 @@

seriesList.forEach(function (seriesItem) {
obj[seriesItem.symbolName] = seriesItem.createHitTester(seriesItem.points);
obj[seriesItem.symbolName] = seriesItem
.createHitTester(seriesItem.points);
});

@@ -930,2 +1054,3 @@ return obj;

// Keys are DOM event names (https://developer.mozilla.org/en-US/docs/Web/Events).
/** @internal */
var buildEventHandlers = function (seriesList, _a) {

@@ -956,3 +1081,3 @@ var clickHandlers = _a.clickHandlers, pointerMoveHandlers = _a.pointerMoveHandlers;

export { defaultDomains, addDomain, scaleLinear, scaleBand, computeDomains, buildScales, bBoxes, axisCoordinates, getGridCoordinates, dArea, dLine, dSpline, getPiePointTransformer, getLinePointTransformer, getScatterPointTransformer, getAreaPointTransformer, getBarPointTransformer, findSeriesByName, dBar, dSymbol, dPie, addSeries, scaleSeriesPoints, getStackedSeries, getAreaAnimationStyle, getPieAnimationStyle, getScatterAnimationStyle, buildAnimatedStyleGetter, getParameters, createReference, processHandleTooltip, createAreaHitTester, createLineHitTester, createSplineHitTester, createBarHitTester, createScatterHitTester, createPieHitTester, changeSeriesState, isHorizontal, getWidth, getValueDomainName, fixOffset, getLegendItems, buildEventHandlers, processPointerMove, HORIZONTAL, VERTICAL, TOP, BOTTOM, LEFT, RIGHT, MIDDLE, END, START, LINEAR, BAND, ARGUMENT_DOMAIN, VALUE_DOMAIN, HOVERED, SELECTED };
export { defaultDomains, addDomain, updateDomainItems, extendDomains, buildScales, bBoxes, getRanges, axisCoordinates, createTickFilter, getGridCoordinates, dArea, dLine, dSpline, getPiePointTransformer, getLinePointTransformer, getScatterPointTransformer, getAreaPointTransformer, getBarPointTransformer, findSeriesByName, dBar, dSymbol, dPie, addSeries, scaleSeriesPoints, getStackedSeries, getStackedDomains, getAreaAnimationStyle, getPieAnimationStyle, getScatterAnimationStyle, buildAnimatedStyleGetter, getParameters, createReference, processHandleTooltip, adjustLayout, createAreaHitTester, createLineHitTester, createSplineHitTester, createBarHitTester, createScatterHitTester, createPieHitTester, changeSeriesState, scaleLinear, scaleBand, isHorizontal, getWidth, getValueDomainName, makeScale, scaleBounds, fixOffset, getLegendItems, buildEventHandlers, processPointerMove, HORIZONTAL, VERTICAL, TOP, BOTTOM, LEFT, RIGHT, MIDDLE, END, START, LINEAR, BAND, ARGUMENT_DOMAIN, VALUE_DOMAIN, HOVERED, SELECTED };
//# sourceMappingURL=dx-chart-core.es.js.map
/**
* Bundle of @devexpress/dx-chart-core
* Generated: 2019-02-27
* Version: 1.10.3
* Generated: 2019-03-11
* Version: 1.10.4
* License: https://js.devexpress.com/Licensing

@@ -40,21 +40,54 @@ */

/** @internal */
var HORIZONTAL = 'horizontal';
/** @internal */
var VERTICAL = 'vertical';
/** @internal */
var TOP = 'top';
/** @internal */
var BOTTOM = 'bottom';
/** @internal */
var LEFT = 'left';
/** @internal */
var RIGHT = 'right';
/** @internal */
var MIDDLE = 'middle';
/** @internal */
var END = 'end';
/** @internal */
var START = 'start';
/** @internal */
var LINEAR = 'linear';
/** @internal */
var BAND = 'band';
/** @internal */
var ARGUMENT_DOMAIN = 'argument-domain';
/** @internal */
var VALUE_DOMAIN = 'value-domain';
/** @internal */
var HOVERED = 'hovered';
/** @internal */
var SELECTED = 'selected';
/** @internal */
var scaleLinear = d3Scale.scaleLinear;
/** @internal */
var scaleBand = function () { return d3Scale.scaleBand().paddingInner(0.3).paddingOuter(0.15); };
/** @internal */
var isHorizontal = function (name) { return name === ARGUMENT_DOMAIN; };
/** @internal */
var getWidth = function (scale) { return (scale.bandwidth ? scale.bandwidth() : 0); };
/** @internal */
var getValueDomainName = function (name) { return name || VALUE_DOMAIN; };
/** @internal */
var makeScale = function (_a, range) {
var factory = _a.factory, domain = _a.domain;
return ((factory || scaleLinear)().domain(domain).range(range));
};
// Though this function is used only in *Viewport* plugin (and so should be placed right there),
// it resides here so that internal scale specifics (*getWidth*)
// are encapsulated in this utility file.
/** @internal */
var scaleBounds = function (scale, bounds) { return ([scale(bounds[0]), scale(bounds[1]) + getWidth(scale)]); };
/** @internal */
var fixOffset = function (scale) {

@@ -66,101 +99,73 @@ var offset = getWidth(scale) / 2;

var _a;
var makeDomain = function (_a) {
var factory = _a.factory, modifyDomain = _a.modifyDomain;
return ({
domain: [],
factory: factory,
isDiscrete: !!(factory && isDiscrete(factory)),
modifyDomain: modifyDomain,
});
};
/** @internal */
var defaultDomains = (_a = {},
_a[ARGUMENT_DOMAIN] = { domain: [] },
_a[VALUE_DOMAIN] = { domain: [] },
_a[ARGUMENT_DOMAIN] = makeDomain({}),
_a[VALUE_DOMAIN] = makeDomain({}),
_a);
var addDomain = function (domains, name, props) {
/** @internal */
var addDomain = function (domains, name, options) {
var _a;
return (__assign({}, domains, (_a = {}, _a[name] = props, _a)));
return (__assign({}, domains, (_a = {}, _a[name] = makeDomain(options), _a)));
};
var copy = function (domains) {
var result = {};
Object.keys(domains).forEach(function (name) {
result[name] = __assign({}, domains[name], { domain: [] });
});
return result;
};
var getSeriesValueDomainName = function (series) { return getValueDomainName(series.scaleName); };
var floatsEqual = function (a, b) { return Math.abs(a - b) < Number.EPSILON; };
var mergeContinuousDomains = function (domain, items) {
return d3Array.extent(domain.concat(items));
var newDomain = d3Array.extent(domain.concat(items));
return floatsEqual(newDomain[0], domain[0]) && floatsEqual(newDomain[1], domain[1])
? domain : newDomain;
};
var mergeDiscreteDomains = function (domain, items) {
return Array.from(new Set(domain.concat(items)));
var newDomain = Array.from(new Set(domain.concat(items)));
return newDomain.length === domain.length ? domain : newDomain;
};
var getArgument = function (point) { return point.argument; };
var getValue = function (point) { return point.value; };
var extendDomain = function (target, items) {
var merge = target.isDiscrete ? mergeDiscreteDomains : mergeContinuousDomains;
Object.assign(target, { domain: merge(target.domain, items) });
};
var calculateDomains = function (domains, seriesList) {
seriesList.forEach(function (seriesItem) {
var valueDomainName = getSeriesValueDomainName(seriesItem);
var points = seriesItem.points;
// TODO: This is a temporary workaround for Stack plugin.
// Once scales (or domains) are exposed for modification Stack will modify scale and
// this code will be removed.
var valueDomainItems = seriesItem.getValueDomain
? seriesItem.getValueDomain(points) : points.map(getValue);
extendDomain(domains[valueDomainName], valueDomainItems);
extendDomain(domains[ARGUMENT_DOMAIN], points.map(getArgument));
});
};
var scaleLinear = d3Scale.scaleLinear;
var scaleBand = function () { return d3Scale.scaleBand().paddingInner(0.3).paddingOuter(0.15); };
var guessFactory = function (points, getItem) {
if (points.length && typeof getItem(points[0]) === 'string') {
return scaleBand;
var guessFactory = function (points, getItem) { return (points.length && typeof getItem(points[0]) === 'string' ? scaleBand : scaleLinear); };
var isDiscrete = function (factory) { return 'bandwidth' in factory(); };
var updateDomainFactory = function (domain, series, getItem) {
if (domain.factory) {
return domain;
}
return scaleLinear;
var factory = guessFactory(series.points, getItem);
return __assign({}, domain, { factory: factory, isDiscrete: isDiscrete(factory) });
};
var collectDomainsFromSeries = function (domains, seriesList) {
seriesList.forEach(function (seriesItem) {
if (!domains[ARGUMENT_DOMAIN].factory) {
Object.assign(domains[ARGUMENT_DOMAIN], {
factory: guessFactory(seriesItem.points, getArgument),
});
}
var valueDomainName = getSeriesValueDomainName(seriesItem);
var obj = domains[valueDomainName];
if (!obj.factory) {
obj.factory = guessFactory(seriesItem.points, getValue);
}
// TODO: It is to be removed together with *TODO* from above.
if (seriesItem.getPointTransformer.isStartedFromZero && obj.domain.length === 0) {
obj.domain = [0];
}
});
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
if (!obj.factory) {
obj.factory = scaleLinear;
}
obj.isDiscrete = !!obj.factory().bandwidth;
});
return domains;
/** @internal */
var updateDomainItems = function (domain, items) {
var merge = domain.isDiscrete ? mergeDiscreteDomains : mergeContinuousDomains;
var merged = merge(domain.domain, items);
return merged === domain.domain ? domain : __assign({}, domain, { domain: domain.modifyDomain ? domain.modifyDomain(merged) : merged });
};
var customizeDomains = function (domains) {
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
if (obj.modifyDomain) {
obj.domain = obj.modifyDomain(obj.domain);
}
});
var getArgumentDomainItems = function (series) { return series.points.map(getArgument); };
var getValueDomainItems = function (series) {
var items = series.points.map(getValue);
return series.getPointTransformer.isStartedFromZero ? [0].concat(items) : items;
};
var computeDomains = function (domains, seriesList) {
var result = copy(domains);
collectDomainsFromSeries(result, seriesList);
calculateDomains(result, seriesList);
customizeDomains(result);
return result;
var updateDomain = function (domain, series, getItem, getDomainItems) { return updateDomainItems(updateDomainFactory(domain, series, getItem), getDomainItems(series)); };
/** @internal */
var extendDomains = function (domains, series) {
var argumentDomain = updateDomain(domains[ARGUMENT_DOMAIN], series, getArgument, getArgumentDomainItems);
var valueDomainName = getValueDomainName(series.scaleName);
var valueDomain = updateDomain(domains[valueDomainName], series, getValue, getValueDomainItems);
var changes = {};
if (argumentDomain !== domains[ARGUMENT_DOMAIN]) {
changes[ARGUMENT_DOMAIN] = argumentDomain;
}
if (valueDomain !== domains[valueDomainName]) {
changes[valueDomainName] = valueDomain;
}
return Object.keys(changes).length ? __assign({}, domains, changes) : domains;
};
var buildScales = function (domains, _a) {
var width = _a.width, height = _a.height;
/** @internal */
var buildScales = function (domains, ranges) {
var scales = {};
Object.keys(domains).forEach(function (name) {
var obj = domains[name];
var scale = obj.factory();
scale.domain(obj.domain);
scale.range(isHorizontal(name) ? [0, width] : [height, 0]);
scales[name] = scale;
scales[name] = makeScale(domains[name], ranges[name === ARGUMENT_DOMAIN ? ARGUMENT_DOMAIN : VALUE_DOMAIN]);
});

@@ -175,2 +180,3 @@ return scales;

};
/** @internal */
var bBoxes = function (prevBBoxes, _a) {

@@ -183,2 +189,10 @@ var bBox = _a.bBox, placeholder = _a.placeholder;

};
/** @internal */
var getRanges = function (paneSize) {
var _a;
return (_a = {},
_a[ARGUMENT_DOMAIN] = [0, paneSize.width],
_a[VALUE_DOMAIN] = [paneSize.height, 0],
_a);
};

@@ -218,2 +232,3 @@ var getTicks = function (scale) { return (scale.ticks ? scale.ticks() : scale.domain()); };

};
/** @internal */
var axisCoordinates = function (_a) {

@@ -230,4 +245,13 @@ var scaleName = _a.scaleName, scale = _a.scale, position = _a.position, tickSize = _a.tickSize, tickFormat = _a.tickFormat, indentFromAxis = _a.indentFromAxis;

};
// It is a part of a temporary walkaround. See note in Axis plugin.
/** @internal */
var createTickFilter = function (_a) {
var width = _a[0], height = _a[1];
return (width > 0
? function (tick) { return tick.x1 >= 0 && tick.x1 <= width; }
: function (tick) { return tick.y1 >= 0 && tick.y1 <= height; });
};
var horizontalGridOptions = { y: 0, dy: 1 };
var verticalGridOptions = { x: 0, dx: 1 };
/** @internal */
var getGridCoordinates = function (_a) {

@@ -252,2 +276,3 @@ var scaleName = _a.scaleName, scale = _a.scale;

};
/** @internal */
var dArea = d3Shape.area()

@@ -257,5 +282,7 @@ .x(getX)

.y0(getY1);
/** @internal */
var dLine = d3Shape.line()
.x(getX)
.y(getY);
/** @internal */
var dSpline = d3Shape.line()

@@ -265,2 +292,3 @@ .x(getX)

.curve(d3Shape.curveMonotoneX);
/** @internal */
var getPiePointTransformer = function (_a) {

@@ -281,2 +309,3 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale, points = _a.points;

};
/** @internal */
var getLinePointTransformer = function (_a) {

@@ -289,2 +318,3 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale;

// separate function instance is required as it contains additional static fields.
/** @internal */
var getScatterPointTransformer = function () {

@@ -297,2 +327,3 @@ var args = [];

};
/** @internal */
var getAreaPointTransformer = function (series) {

@@ -308,2 +339,3 @@ var transform = getLinePointTransformer(series);

getAreaPointTransformer.isStartedFromZero = true;
/** @internal */
var getBarPointTransformer = function (_a) {

@@ -320,9 +352,13 @@ var argumentScale = _a.argumentScale, valueScale = _a.valueScale;

getPiePointTransformer.getPointColor = function (palette, index) { return palette[index % palette.length]; };
/** @internal */
var findSeriesByName = function (name, series) { return series.find(function (seriesItem) { return seriesItem.symbolName === name; }); };
/** @internal */
var dBar = function (_a) {
var x = _a.x, y = _a.y, y1 = _a.y1, width = _a.width;
return ({
var x = _a.x, y = _a.y, y1 = _a.y1, barWidth = _a.barWidth, maxBarWidth = _a.maxBarWidth;
var width = barWidth * maxBarWidth;
return {
x: x - width / 2, y: Math.min(y, y1), width: width || 2, height: Math.abs(y1 - y),
});
};
};
/** @internal */
var dSymbol = function (_a) {

@@ -332,2 +368,3 @@ var size = _a.size;

};
/** @internal */
var dPie = function (_a) {

@@ -397,2 +434,3 @@ var maxRadius = _a.maxRadius, innerRadius = _a.innerRadius, outerRadius = _a.outerRadius, startAngle = _a.startAngle, endAngle = _a.endAngle;

};
/** @internal */
var addSeries = function (series, data, palette, props, restProps) {

@@ -412,2 +450,3 @@ // It is used to generate unique series dependent attribute names for patterns.

};
/** @internal */
var scaleSeriesPoints = function (series, scales) { return series.map(function (seriesItem) { return scalePoints(seriesItem, scales); }); };

@@ -440,10 +479,2 @@

};
// TODO: Temporary - see corresponding note in *computeDomains*.
var getValueDomain = function (points) {
var items = [];
points.forEach(function (point) {
items.push(point.value, point.value0);
});
return items;
};
var collectStacks = function (seriesList, seriesToStackMap, stacksKeys, seriesPositions) {

@@ -483,6 +514,5 @@ seriesList.forEach(function (_a) {

});
var stackedSeries = __assign({}, series, { points: points });
var stackedSeries = __assign({}, series, { points: points, isStacked: true });
if (series.getPointTransformer.isStartedFromZero) {
stackedSeries.getPointTransformer = getStackedPointTransformer(series.getPointTransformer);
stackedSeries.getValueDomain = getValueDomain;
}

@@ -547,2 +577,3 @@ return stackedSeries;

};
/** @internal */
var getStackedSeries = function (seriesList, dataItems, _a) {

@@ -555,2 +586,29 @@ var stacks = _a.stacks, offset = _a.offset, order = _a.order;

};
var resetDomainItems = function (domains) {
var result = {};
Object.keys(domains).forEach(function (key) {
result[key] = __assign({}, domains[key], { domain: [] });
});
return result;
};
var extendDomainsWithAdditionalItems = function (domains, series) {
var _a;
var items = series.points.map(function (point) { return point.value0; });
var key = getValueDomainName(series.scaleName);
var domain = updateDomainItems(domains[key], items);
return domain !== domains[key] ? __assign({}, domains, (_a = {}, _a[key] = domain, _a)) : domains;
};
// Stacking changes data - so computed domains have to be discarded
// and recalculated from the new stacked data.
/** @internal */
var getStackedDomains = function (domains, seriesList) {
var stackedSeries = seriesList.filter(function (series) { return series.isStacked; });
if (!stackedSeries.length) {
return domains;
}
// Recalculate domains in a common way.
var rebuiltDomains = seriesList.reduce(extendDomains, resetDomainItems(domains));
// Take additional "value0" fields into account.
return stackedSeries.reduce(extendDomainsWithAdditionalItems, rebuiltDomains);
};

@@ -596,2 +654,3 @@ var ANIMATIONS = Symbol('animation');

};
/** @internal */
var getAreaAnimationStyle = function (scales) {

@@ -604,2 +663,3 @@ var animationStyle = {

};
/** @internal */
var getPieAnimationStyle = function (_, point) {

@@ -611,2 +671,3 @@ var options = getDefaultPieAnimationOptions(point);

};
/** @internal */
var getScatterAnimationStyle = function () {

@@ -618,2 +679,3 @@ var options = getDefaultAreaAnimationOptions();

};
/** @internal */
var buildAnimatedStyleGetter = function (style, getAnimationStyle, scales, point) {

@@ -640,2 +702,3 @@ var animationStyle = getAnimationStyle(scales, point);

};
/** @internal */
var processPointerMove = function (targets, currentTarget, notify) {

@@ -654,2 +717,3 @@ var nextTarget = selectTarget(targets, currentTarget);

// so *window* can be accessed safely.
/** @internal */
var getRootOffset = function (root) {

@@ -661,2 +725,3 @@ var _a = root.getBoundingClientRect(), left = _a.left, top = _a.top;

/** @internal */
var getParameters = function (series, target) {

@@ -673,2 +738,3 @@ var currentSeries = series.find(function (_a) {

};
/** @internal */
var createReference = function (rect, rootRef) { return ({

@@ -693,2 +759,3 @@ // These two fields together with *width* and *height* are left with stub data for

}); };
/** @internal */
var processHandleTooltip = function (targets, currentTarget, onTargetItemChange) {

@@ -699,2 +766,50 @@ var filterTargets = targets.filter(function (target) { return target.point !== undefined; });

// TODO: Copypaste!
var floatsEqual$1 = function (a, b) { return Math.abs(a - b) < Number.EPSILON; };
// Given original scale
// f(domain) = range
// f(subDomain) = subRange
// Find extended scale
// g(domain) = extendedRange
// g(subDomain) = range
// Original "range" is linearly extended so that
// extendedRange : range === range : subRange
// y = p * x + q
// subRange = p * range + q => p, q
// range = p * extendedRange + q => extendedRange
var proportionallyExtendRange = function (range, subRange) {
var p = (subRange[0] - subRange[1]) / (range[0] - range[1]);
var q = subRange[0] - p * range[0];
return [
(range[0] - q) / p,
(range[1] - q) / p,
];
};
var adjustRange = function (domain, bounds, range) {
var scale = makeScale(domain, range);
var subRange = scaleBounds(scale, bounds);
if (floatsEqual$1(subRange[0], range[0]) && floatsEqual$1(subRange[1], range[1])) {
return range;
}
return proportionallyExtendRange(range, subRange);
};
var update = function (ranges, changes, key, domain, bounds) {
var newRange = adjustRange(domain, bounds, ranges[key]);
if (newRange !== ranges[key]) {
changes[key] = newRange;
}
};
/** @internal */
var adjustLayout = function (domains, ranges, _a) {
var argumentBounds = _a.argumentBounds, scaleName = _a.scaleName, valueBounds = _a.valueBounds;
var changes = {};
if (argumentBounds) {
update(ranges, changes, ARGUMENT_DOMAIN, domains[ARGUMENT_DOMAIN], argumentBounds);
}
if (valueBounds) {
update(ranges, changes, VALUE_DOMAIN, domains[getValueDomainName(scaleName)], valueBounds);
}
return Object.keys(changes).length ? __assign({}, ranges, changes) : ranges;
};
var getSegmentLength = function (dx, dy) { return Math.sqrt(dx * dx + dy * dy); };

@@ -763,2 +878,3 @@ // *distance* is a normalized distance to point.

}; }; };
/** @internal */
var createAreaHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -771,2 +887,3 @@ var path = d3Shape.area();

});
/** @internal */
var createLineHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -780,2 +897,3 @@ var path = d3Shape.area();

});
/** @internal */
var createSplineHitTester = createContinuousSeriesHitTesterCreator(function () {

@@ -794,2 +912,3 @@ var path = d3Shape.area();

// Some kind of binary search can be used here as bars can be ordered along argument axis.
/** @internal */
var createBarHitTester = createPointsEnumeratingHitTesterCreator(function (_a, point) {

@@ -804,2 +923,3 @@ var px = _a[0], py = _a[1];

});
/** @internal */
var createScatterHitTester = createPointsEnumeratingHitTesterCreator(function (_a, obj) {

@@ -816,2 +936,3 @@ var px = _a[0], py = _a[1];

// Some kind of binary search can be used here as pies can be ordered along angle axis.
/** @internal */
var createPieHitTester = createPointsEnumeratingHitTesterCreator(function (_a, point) {

@@ -842,2 +963,3 @@ var px = _a[0], py = _a[1];

};
/** @internal */
var changeSeriesState = function (seriesList, targets, state) {

@@ -878,2 +1000,3 @@ if (targets.length === 0) {

var isSinglePieSeriesCase = function (series) { return (series.length === 1 && 'innerRadius' in series[0] && 'outerRadius' in series[0]); };
/** @internal */
var getLegendItems = function (series) { return ((isSinglePieSeriesCase(series) ? getPieLegendItems : getDefaultLegendItems)(series)); };

@@ -902,3 +1025,4 @@

seriesList.forEach(function (seriesItem) {
obj[seriesItem.symbolName] = seriesItem.createHitTester(seriesItem.points);
obj[seriesItem.symbolName] = seriesItem
.createHitTester(seriesItem.points);
});

@@ -932,2 +1056,3 @@ return obj;

// Keys are DOM event names (https://developer.mozilla.org/en-US/docs/Web/Events).
/** @internal */
var buildEventHandlers = function (seriesList, _a) {

@@ -960,8 +1085,9 @@ var clickHandlers = _a.clickHandlers, pointerMoveHandlers = _a.pointerMoveHandlers;

exports.addDomain = addDomain;
exports.scaleLinear = scaleLinear;
exports.scaleBand = scaleBand;
exports.computeDomains = computeDomains;
exports.updateDomainItems = updateDomainItems;
exports.extendDomains = extendDomains;
exports.buildScales = buildScales;
exports.bBoxes = bBoxes;
exports.getRanges = getRanges;
exports.axisCoordinates = axisCoordinates;
exports.createTickFilter = createTickFilter;
exports.getGridCoordinates = getGridCoordinates;

@@ -983,2 +1109,3 @@ exports.dArea = dArea;

exports.getStackedSeries = getStackedSeries;
exports.getStackedDomains = getStackedDomains;
exports.getAreaAnimationStyle = getAreaAnimationStyle;

@@ -991,2 +1118,3 @@ exports.getPieAnimationStyle = getPieAnimationStyle;

exports.processHandleTooltip = processHandleTooltip;
exports.adjustLayout = adjustLayout;
exports.createAreaHitTester = createAreaHitTester;

@@ -999,5 +1127,9 @@ exports.createLineHitTester = createLineHitTester;

exports.changeSeriesState = changeSeriesState;
exports.scaleLinear = scaleLinear;
exports.scaleBand = scaleBand;
exports.isHorizontal = isHorizontal;
exports.getWidth = getWidth;
exports.getValueDomainName = getValueDomainName;
exports.makeScale = makeScale;
exports.scaleBounds = scaleBounds;
exports.fixOffset = fixOffset;

@@ -1004,0 +1136,0 @@ exports.getLegendItems = getLegendItems;

{
"name": "@devexpress/dx-chart-core",
"version": "1.10.3",
"version": "1.10.4",
"description": "Core library for the DevExtreme Reactive Chart component",

@@ -62,3 +62,3 @@ "author": {

},
"gitHead": "cfea2c9552100e2d98509e78976158b185598a4d"
"gitHead": "b67a8aea7e713a96731fd2fbf063acde1a1bb4c7"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc