@devexpress/dx-chart-core
Advanced tools
Comparing version 1.10.3 to 1.10.4
/** | ||
* 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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
265056
2113