{"version":3,"file":"dx-chart-core.umd.cjs","sources":["../src/constants.ts","../src/utils/scale.ts","../src/plugins/scale/computeds.ts","../src/plugins/layout-manager/computeds.ts","../src/plugins/axis/computeds.ts","../src/plugins/series/computeds.ts","../src/plugins/stack/computeds.ts","../src/plugins/animation/computeds.ts","../src/utils/hover-state.ts","../src/utils/common.ts","../src/plugins/tooltip/computeds.ts","../src/plugins/zoom-and-pan/computeds.ts","../src/plugins/controller-component/computeds.ts","../src/utils/series.ts","../src/utils/legend.ts","../src/utils/event-tracker.ts","../src/utils/animation.ts"],"sourcesContent":["/** @internal */\nexport const HORIZONTAL = 'horizontal';\n/** @internal */\nexport const VERTICAL = 'vertical';\n/** @internal */\nexport const TOP = 'top';\n/** @internal */\nexport const BOTTOM = 'bottom';\n/** @internal */\nexport const LEFT = 'left';\n/** @internal */\nexport const RIGHT = 'right';\n/** @internal */\nexport const MIDDLE = 'middle';\n/** @internal */\nexport const END = 'end';\n/** @internal */\nexport const START = 'start';\n/** @internal */\nexport const LINEAR = 'linear';\n/** @internal */\nexport const BAND = 'band';\n/** @internal */\nexport const ARGUMENT_DOMAIN = 'argument-domain';\n/** @internal */\nexport const VALUE_DOMAIN = 'value-domain';\n/** @internal */\nexport const HOVERED = 'hovered';\n/** @internal */\nexport const SELECTED = 'selected';\n/** @internal */\nexport const DIFFERENCE = 3;\n","import {\n  scaleLinear as d3ScaleLinear, scaleBand as d3ScaleBand,\n} from 'd3-scale';\nimport {\n  ARGUMENT_DOMAIN, VALUE_DOMAIN,\n} from '../constants';\nimport {\n  ScaleObject, FactoryFn, DomainInfo, NumberArray, DomainBounds, DomainItems,\n} from '../types';\n\n/** @internal */\nexport const scaleLinear: FactoryFn = d3ScaleLinear as any;\n\nexport const scaleBand: FactoryFn = () => (\n  d3ScaleBand().paddingInner(0.3).paddingOuter(0.15) as any\n);\n\n/** @internal */\nexport const isHorizontal = (name: string, rotated: boolean) => (\n  name === ARGUMENT_DOMAIN === !rotated\n);\n\n// tslint:disable-next-line: ban-types\nconst makeScaleHelper = <T extends Function>(linear: T, band: T) => {\n  const func: any = (scale: ScaleObject, ...args: any[]) => {\n    const choosen = 'bandwidth' in scale ? band : linear;\n    return choosen(scale, ...args);\n  };\n  return func as T;\n};\n\nconst getLinearScaleWidth = (_: ScaleObject) => 0;\n\nconst getBandScaleWidth = (scale: ScaleObject) => scale.bandwidth!();\n\n/** @internal */\nexport const getWidth = makeScaleHelper(getLinearScaleWidth, getBandScaleWidth);\n\n/** @internal */\nexport const getValueDomainName = (name?: string) => name || VALUE_DOMAIN;\n\nconst floatsEqual = (a: number, b: number) => Math.abs(a - b) < Number.EPSILON;\n\n/** @internal */\nexport const rangesEqual = (r1: Readonly<NumberArray>, r2: Readonly<NumberArray>) =>\n  floatsEqual(r1[0], r2[0]) && floatsEqual(r1[1], r2[1]);\n\nconst wrapLinearScale = (scale: ScaleObject) => scale;\n\nconst wrapBandScale = (scale: ScaleObject): ScaleObject => {\n  const ret: any = (value: any) => scale(value) + scale.bandwidth!() / 2;\n  Object.assign(ret, scale);\n  return ret;\n};\n\nconst wrapScale = makeScaleHelper(wrapLinearScale, wrapBandScale);\n\n/** @internal */\nexport const makeScale = ({ factory, domain }: DomainInfo, range: NumberArray) => {\n  const scale = (factory || scaleLinear)().domain(domain).range(range);\n  return wrapScale(scale);\n};\n\n// It is implicitly supposed that Chart can accept any d3 scale. It is wrong.\n// The followings notes show that. d3 scales are not seamlessly interchangeable themselves\n// (i.e. band scale has no \"invert\", continuous scale has no \"bandwidth\").\n// We have to use \"adapters\" to mitigate the differences.\n// Hence Chart can actually accept any object that matches \"adapter\" interface.\n// TODO: We should update reference accordingly. There might be breaking changes though.\n\nconst scaleLinearBounds = (scale: ScaleObject, bounds: DomainBounds): NumberArray => (\n  bounds.map(scale) as NumberArray\n);\n\n// There is an issue - when range is \"inverted\" values are scaled incorrectly.\n//   scaleBand().domain(['a', 'b', 'c']).range([0, 60])('b') === 20\n//   scaleBand().domain(['a', 'b', 'c']).range([60, 0])('b') === 20 (should be 40)\nconst scaleBandBounds = (scale: ScaleObject, bounds: DomainBounds): NumberArray => {\n  const cleanScale = scale.copy().paddingInner!(0).paddingOuter!(0);\n  const fullRange = scale.range();\n  const sign = Math.sign(fullRange[1] - fullRange[0]);\n  return sign >= 0\n    ? [cleanScale(bounds[0]), cleanScale(bounds[1]) + cleanScale.bandwidth!()]\n    : [cleanScale(bounds[0]) + cleanScale.bandwidth!(), cleanScale(bounds[1])];\n};\n\nconst moveLinearScaleBounds = (\n  scale: ScaleObject, bounds: DomainBounds, delta: number,\n): DomainBounds => {\n  const fullRange = scale.range();\n  const sign = Math.sign(fullRange[1] - fullRange[0]);\n  const range = scaleLinearBounds(scale, bounds);\n  let r0 = range[0] + delta;\n  let r1 = range[1] + delta;\n  // Check if new range is outside of the left border.\n  if (Math.sign(r0 - fullRange[0]) !== sign) {\n    r0 = fullRange[0];\n    r1 = r0 + range[1] - range[0];\n  }\n  // Check if new range is outside of the right border.\n  if (Math.sign(fullRange[1] - r1) !== sign) {\n    r1 = fullRange[1];\n    r0 = r1 - range[1] + range[0];\n  }\n  const newBounds: DomainBounds = [scale.invert!(r0), scale.invert!(r1)];\n  return rangesEqual(bounds, newBounds) ? bounds : newBounds;\n};\n\n// This is pointer \"delta\" processing specific for \"band\" scale.\n// If pointer delta is significantly smaller than band size (0.3) then movement should be skipped\n// and current delta should be added to a next one (from a new \"move\" event).\n// Now there is no code that accumulates deltas.\n// In order to allow band scrolling at least somehow the following is applied - if pointer delta\n// is at least greater than 30 pixel then minimal movement is performed.\n// TODO: Make proper delta accumulation!\nconst adjustBandScaleMoveStep = (delta: number, step: number) => {\n  const ratio = Math.abs(delta / step);\n  const sign = Math.sign(delta / step);\n  if (ratio >= 0.5) {\n    return sign * Math.round(ratio);\n  }\n  if (ratio >= 0.3) {\n    return sign;\n  }\n  if (Math.abs(delta) > 30) {\n    return sign;\n  }\n  return 0;\n};\n\n// Band case is processed separately to preserve categories count in the bounds range.\n// If common inversion mechanism is used start and end bounds cannot be inverted independently\n// because of rounding issues which may add or remove categories to the new bounds.\nconst moveBandScaleBounds = (\n  scale: ScaleObject, bounds: DomainBounds, delta: number,\n): DomainBounds => {\n  const domain = scale.domain();\n  const fullRange = scale.range();\n  const step = (fullRange[1] - fullRange[0]) / domain.length;\n  const rangeStep = adjustBandScaleMoveStep(delta, step);\n  if (rangeStep === 0) {\n    return bounds;\n  }\n  const range = scaleBounds(scale, bounds);\n  const range0 = Math.round((range[0] - fullRange[0]) / step);\n  const range1 = range0 + Math.round((range[1] - range[0]) / step) - 1;\n  let new0 = range0 + rangeStep;\n  let new1 = range1 + rangeStep;\n  if (new0 < 0) {\n    new0 = 0;\n    new1 = new0 + range1 - range0;\n  }\n  if (new1 > domain.length - 1) {\n    new1 = domain.length - 1;\n    new0 = new1 - range1 + range0;\n  }\n  if (new0 === range0 || new1 === range1) {\n    return bounds;\n  }\n  return [domain[new0], domain[new1]];\n};\n\n// Defines how much linear scale can be zoomed it.\n// I.e. if original scale domain has size of 1, then fully zoomed scale domain has size\n// of 1 / LINEAR_SCALE_ZOOMING_THRESHOLD.\nconst LINEAR_SCALE_ZOOMING_THRESHOLD = 1000;\n\nconst growLinearScaleBounds = (\n  scale: ScaleObject, bounds: DomainBounds, delta: number, anchor: number,\n): DomainBounds => {\n  const fullRange = scale.range();\n  const minRangeThreshold = (fullRange[1] - fullRange[0]) / LINEAR_SCALE_ZOOMING_THRESHOLD;\n  const sign = Math.sign(fullRange[1] - fullRange[0]);\n  const range = scaleBounds(scale, bounds);\n  // If zooming in and initial range is already too small then do nothing.\n  if (delta > 0 && Math.abs(range[1] - range[0]) <= Math.abs(minRangeThreshold)) {\n    return bounds;\n  }\n  // If zooming out and initial range is already too large then do nothing.\n  if (delta < 0 && Math.abs(range[1] - range[0]) >= Math.abs(fullRange[1] - fullRange[0])) {\n    return bounds;\n  }\n  const t = Math.abs((anchor - range[0]) / (range[1] - range[0]));\n  let r0 = range[0] + sign * delta * 2 * t;\n  let r1 = range[1] - sign * delta * 2 * (1 - t);\n  // If new range is outside of the left border then clamp it.\n  if (Math.sign(r0 - fullRange[0]) !== sign) {\n    r0 = fullRange[0];\n  }\n  // If new range is outside of the right border then clamp it.\n  if (Math.sign(fullRange[1] - r1) !== sign) {\n    r1 = fullRange[1];\n  }\n  // If new range is too small then make it no less than minimal available.\n  if (Math.sign(r1 - r0) !== sign || Math.abs(r1 - r0) < Math.abs(minRangeThreshold)) {\n    if (Math.abs(r0 - range[0]) < Math.abs(minRangeThreshold / 2)) {\n      // Dock it to the start.\n      r0 = range[0];\n      r1 = r0 + minRangeThreshold;\n    } else if (Math.abs(r1 - range[1]) < Math.abs(minRangeThreshold / 2)) {\n      // Dock it to the end.\n      r1 = range[1];\n      r0 = r1 - minRangeThreshold;\n    } else {\n      // Dock it to the anchor.\n      r0 = anchor - minRangeThreshold / 2;\n      r1 = anchor + minRangeThreshold / 2;\n    }\n  }\n  const newBounds: DomainBounds = [scale.invert!(r0), scale.invert!(r1)];\n  return rangesEqual(bounds, newBounds) ? bounds : newBounds;\n};\n\nconst growBandScaleBounds = (\n  scale: ScaleObject, bounds: DomainBounds, delta: number, anchor: number,\n): DomainBounds => {\n  const domain = scale.domain();\n  const fullRange = scale.range();\n  const step = (fullRange[1] - fullRange[0]) / domain.length;\n  const range = scaleBounds(scale, bounds);\n  const range0 = Math.round((range[0] - fullRange[0]) / step);\n  const range1 = range0 + Math.round((range[1] - range[0]) / step) - 1;\n  // Let it be always 1 for now.\n  const rangeStep = Math.sign(delta);\n  if (\n    (rangeStep === 0) ||\n    (rangeStep > 0 && range0 === range1) ||\n    (rangeStep < 0 && range0 === 0 && range1 === domain.length - 1)\n  ) {\n    return bounds;\n  }\n  const t = Math.abs((anchor - range[0]) / (range[1] - range[0]));\n  let new0 = range0 + Math.round(rangeStep * 2 * t);\n  let new1 = range1 - Math.round(rangeStep * 2 * (1 - t));\n  if (new0 < 0) {\n    new0 = 0;\n  }\n  if (new1 > domain.length - 1) {\n    new1 = domain.length - 1;\n  }\n  if (new0 > new1) {\n    if (t <= 0.5) {\n      new1 = new0;\n    } else {\n      new0 = new1;\n    }\n  }\n  if (new0 === range0 && new1 === range1) {\n    return bounds;\n  }\n  return [domain[new0], domain[new1]];\n};\n\nconst invertLinearScaleBounds = (scale: ScaleObject, range: NumberArray): DomainBounds => {\n  const fullRange = scale.range();\n  const match = Math.sign(fullRange[1] - fullRange[0]) === Math.sign(range[1] - range[0]);\n  return [\n    scale.invert!(range[match ? 0 : 1]),\n    scale.invert!(range[match ? 1 : 0]),\n  ];\n};\n\nconst matchPointToBand = (domain: DomainItems, range: NumberArray, p: number) => {\n  const i = Math.floor(domain.length * (p - range[0]) / (range[1] - range[0]));\n  return domain[Math.min(i, domain.length - 1)];\n};\n\nconst invertBandScaleBounds = (scale: ScaleObject, range: NumberArray): DomainBounds => {\n  const domain = scale.domain();\n  const fullRange = scale.range();\n  return [\n    matchPointToBand(domain, fullRange, range[0]),\n    matchPointToBand(domain, fullRange, range[1]),\n  ];\n};\n\n// Though these functions are used only in *Viewport* plugin (and so should be placed right there),\n// they reside here so that internal scale specifics (*getWidth*)\n// are encapsulated in this utility file.\n/** @internal */\nexport const scaleBounds = makeScaleHelper(scaleLinearBounds, scaleBandBounds);\n/** @internal */\nexport const moveBounds = makeScaleHelper(moveLinearScaleBounds, moveBandScaleBounds);\n// \"scaleBounds\" would be a better name but \"scale\" is already occupied.\n/** @internal */\nexport const growBounds = makeScaleHelper(growLinearScaleBounds, growBandScaleBounds);\n/** @internal */\nexport const invertBoundsRange = makeScaleHelper(invertLinearScaleBounds, invertBandScaleBounds);\n","import { extent } from 'd3-array';\nimport {\n  getValueDomainName, scaleLinear, scaleBand, rangesEqual, makeScale,\n} from '../../utils/scale';\nimport { ARGUMENT_DOMAIN, VALUE_DOMAIN } from '../../constants';\nimport {\n  Series, PointList, DomainItems, DomainInfoCache, BuildScalesFn, DomainInfo, DomainOptions,\n  AddDomainFn, MergeDomainsFn, GetItemFn, GetDomainItemsFn,\n  FactoryFn, ExtendDomainsFn, NumberArray,\n} from '../../types';\n\nconst makeDomain = ({ factory, modifyDomain }: DomainOptions): DomainInfo => ({\n  domain: [],\n  factory,\n  isDiscrete: !!(factory && isDiscrete(factory)),\n  modifyDomain,\n});\n\n/** @internal */\nexport const defaultDomains: DomainInfoCache = {\n  [ARGUMENT_DOMAIN]: makeDomain({}),\n  [VALUE_DOMAIN]: makeDomain({}),\n};\n/** @internal */\nexport const addDomain: AddDomainFn = (domains, name, options) => ({\n  ...domains,\n  [name]: makeDomain(options),\n});\n\nconst mergeContinuousDomains: MergeDomainsFn = (domain, items) => {\n  const newDomain = extent([...domain, ...items]);\n  return rangesEqual(newDomain as any, domain as any) ? domain : newDomain;\n};\n\nconst mergeDiscreteDomains: MergeDomainsFn = (domain, items) => {\n  const newDomain = Array.from(new Set([...domain, ...items]));\n  return newDomain.length === domain.length ? domain : newDomain;\n};\n\nconst getArgument: GetItemFn = point => point.argument;\nconst getValue: GetItemFn = point => point.value;\n\nconst guessFactory = (points: PointList, getItem: GetItemFn) => (\n  points.length && typeof getItem(points[0]) === 'string' ? scaleBand : scaleLinear\n);\n\nconst isDiscrete = (factory: FactoryFn) => 'bandwidth' in factory();\n\nconst updateDomainFactory = (domain: DomainInfo, series: Series, getItem: GetItemFn) => {\n  if (domain.factory) {\n    return domain;\n  }\n  const factory = guessFactory(series.points, getItem);\n  return {\n    ...domain,\n    factory,\n    isDiscrete: isDiscrete(factory),\n  };\n};\n\n/** @internal */\nexport const updateDomainItems = (domain: DomainInfo, items: DomainItems): DomainInfo => {\n  const merge = domain.isDiscrete ? mergeDiscreteDomains : mergeContinuousDomains;\n  const merged = merge(domain.domain, items);\n  return merged === domain.domain ? domain : {\n    ...domain,\n    domain: domain.modifyDomain ? domain.modifyDomain(merged) : merged,\n  };\n};\n\nconst getArgumentDomainItems: GetDomainItemsFn = series => series.points.map(getArgument);\n\nconst getValueDomainItems: GetDomainItemsFn = (series) => {\n  const items = series.points.map(getValue);\n  return series.getPointTransformer.isStartedFromZero ? [0, ...items] : items;\n};\n\nconst updateDomain = (\n  domain: DomainInfo, series: Series, getItem: GetItemFn, getDomainItems: GetDomainItemsFn,\n) => updateDomainItems(updateDomainFactory(domain, series, getItem), getDomainItems(series));\n\n/** @internal */\nexport const extendDomains: ExtendDomainsFn = (domains, series) => {\n  const argumentDomain = updateDomain(\n    domains[ARGUMENT_DOMAIN], series, getArgument, getArgumentDomainItems);\n  const valueDomainName = getValueDomainName(series.scaleName);\n  const valueDomain = updateDomain(\n    domains[valueDomainName], series, getValue, getValueDomainItems);\n  const changes = {};\n  if (argumentDomain !== domains[ARGUMENT_DOMAIN]) {\n    changes[ARGUMENT_DOMAIN] = argumentDomain;\n  }\n  if (valueDomain !== domains[valueDomainName]) {\n    changes[valueDomainName] = valueDomain;\n  }\n  return Object.keys(changes).length ? { ...domains, ...changes } : domains;\n};\n\n/** @internal */\nexport const buildScales: BuildScalesFn = (domains, ranges) => {\n  const scales = {};\n  Object.keys(domains).forEach((name) => {\n    scales[name] = makeScale(\n      domains[name],\n      ranges[name === ARGUMENT_DOMAIN ? ARGUMENT_DOMAIN : VALUE_DOMAIN] as NumberArray,\n    );\n  });\n  return scales;\n};\n","import { Size } from '@devexpress/dx-react-core';\nimport {\n  ARGUMENT_DOMAIN, VALUE_DOMAIN,\n} from '../../constants';\nimport {\n  BBoxes, BBoxesChange, RangesCache, NumberArray,\n} from '../../types';\n\nconst isEqual = (\n  { width: firstWidth, height: firstHeight }: Size,\n  { width: secondWidth, height: secondHeight }: Size,\n) => firstWidth === secondWidth && firstHeight === secondHeight;\n\n/** @internal */\nexport const bBoxes = (prevBBoxes: BBoxes, { bBox, placeholder }: BBoxesChange) => {\n  if (isEqual(prevBBoxes[placeholder] || {}, bBox)) return prevBBoxes;\n  return { ...prevBBoxes, [placeholder]: bBox };\n};\n\n/** @internal */\nexport const getRanges = (paneSize: Size, rotated: boolean): RangesCache => {\n  const horRange: NumberArray = [0, paneSize.width];\n  const verRange: NumberArray = [paneSize.height, 0];\n  return {\n    [ARGUMENT_DOMAIN]: rotated ? verRange : horRange,\n    [VALUE_DOMAIN]: rotated ? horRange : verRange,\n  };\n};\n","import { isHorizontal } from '../../utils/scale';\nimport {\n  LEFT, RIGHT, TOP, BOTTOM, MIDDLE, END, START,\n} from '../../constants';\nimport {\n  ScaleObject, GetFormatFn, ProcessTickFn, TickFormatFn, NumberArray, GetTickCoordinatesFn,\n  TickCoordinatesGetterFn, Tick, Grid,\n} from '../../types';\n\nconst getTicks = (scale: ScaleObject, count: number) => (\n  scale.ticks ? scale.ticks(count) : scale.domain()\n);\n\nconst createTicks = <T>(\n  scale: ScaleObject, count: number, callback: ProcessTickFn<T>,\n): ReadonlyArray<T> => (\n  getTicks(scale, count)\n    .map((tick, index) => callback(scale(tick), String(index), tick))\n);\n\nconst getFormat = (scale: ScaleObject, count: number, tickFormat?: TickFormatFn): GetFormatFn => {\n  if (scale.tickFormat) {\n    return tickFormat ? tickFormat(scale, count) : scale.tickFormat(count);\n  }\n  return tick => tick;\n};\n\nconst rotatedPositions = {\n  [LEFT]: BOTTOM,\n  [RIGHT]: TOP,\n  [BOTTOM]: LEFT,\n  [TOP]: RIGHT,\n};\n\nconst positionFlags = {\n  [LEFT]: false,\n  [RIGHT]: false,\n  [BOTTOM]: true,\n  [TOP]: true,\n};\n\n/** @internal */\nexport const getRotatedPosition = (position: string) => rotatedPositions[position];\n\n/** @internal */\nexport const isValidPosition = (position: string, scaleName: string, rotated: boolean) =>\n  positionFlags[position] === isHorizontal(scaleName, rotated);\n\nconst createHorizontalOptions = (position: string, tickSize: number, indentFromAxis: number) => {\n  // Make *position* orientation agnostic - should be START or END.\n  const isStart = position === BOTTOM;\n  return {\n    y1: 0,\n    y2: isStart ? +tickSize : -tickSize,\n    yText: isStart ? +indentFromAxis : -indentFromAxis,\n    dy: isStart ? '1em' : '0em',\n    textAnchor: MIDDLE,\n  };\n};\n\nconst createVerticalOptions = (position: string, tickSize: number, indentFromAxis: number) => {\n  // Make *position* orientation agnostic - should be START or END.\n  const isStart = position === LEFT;\n  return {\n    x1: 0,\n    x2: isStart ? -tickSize : +tickSize,\n    xText: isStart ? -indentFromAxis : +indentFromAxis,\n    dy: '0.3em',\n    textAnchor: isStart ? END : START,\n  };\n};\n\n// Constant is selected to preserve original behavior described in\n// https://github.com/d3/d3-scale#continuous_ticks.\nconst DEFAULT_TICK_COUNT = 10;\nconst getTickCount = (scaleRange: NumberArray, paneSize: number) => {\n  const rangeToPaneRatio = Math.abs(scaleRange[0] - scaleRange[1]) / paneSize;\n  return Math.round(DEFAULT_TICK_COUNT * (isFinite(rangeToPaneRatio) ? rangeToPaneRatio : 1));\n};\n\nconst createTickFilter = (isHor: boolean, size: number) => (\n  isHor\n    ? (tick: any) => tick.x1 >= 0 && tick.x1 <= size\n    : (tick: any) => tick.y1 >= 0 && tick.y1 <= size\n);\n\n/** @internal */\nexport const tickCoordinatesGetter: TickCoordinatesGetterFn<Tick> = ({\n  isHor, scale, tickCount, tickFormat, position, tickSize, indentFromAxis,\n}) => {\n  const formatTick = getFormat(scale!, tickCount!, tickFormat);\n  const options = (isHor ? createHorizontalOptions : createVerticalOptions)(\n    position!, tickSize!, indentFromAxis!,\n  );\n  return (coordinates, key, tick) => ({\n    key,\n    x1: coordinates,\n    x2: coordinates,\n    y1: coordinates,\n    y2: coordinates,\n    xText: coordinates,\n    yText: coordinates,\n    text: formatTick(tick),\n    ...options,\n  });\n};\n\n/** @internal */\nexport const gridCoordinatesGetter: TickCoordinatesGetterFn<Grid> = ({ isHor }) => {\n  const options = isHor ? { y1: 0 } : { x1: 0 };\n  return (coordinates, key) => ({\n    key,\n    x1: coordinates,\n    y1: coordinates,\n    ...options,\n  });\n};\n\n/** @internal */\nexport const getTickCoordinates: GetTickCoordinatesFn<Tick | Grid> = ({\n  scaleName, scale, paneSize, rotated, callback, ...restProps\n}) => {\n  const isHor = isHorizontal(scaleName, rotated);\n  const tickCount = getTickCount(scale.range(), paneSize[1 - Number(isHor)]);\n  const ticks = createTicks(scale, tickCount, callback({ isHor, scale, tickCount, ...restProps }));\n  const visibleTicks = ticks.filter(createTickFilter(isHor, paneSize[1 - Number(isHor)]));\n  return {\n    ticks: visibleTicks,\n    sides: [Number(isHor), Number(!isHor)],\n  };\n};\n","import {\n  symbol,\n  symbolCircle,\n  line,\n  curveMonotoneX,\n  curveMonotoneY,\n  area,\n  arc,\n  pie,\n} from 'd3-shape';\nimport {\n  SeriesList, Series, PointList, Point, DataItems, AddSeriesFn, ScalesCache, ScaleSeriesPointsFn,\n  GetPointTransformerFn, Colors, Rect,\n  BarSeries, ScatterSeries, PieSeries,\n  PointComponentProps, PathFn, PathStartCoordinates, PathEndCoordinates, Scales,\n} from '../../types';\nimport { Size } from '@devexpress/dx-react-core';\nimport { ARGUMENT_DOMAIN } from '../../constants';\nimport { getValueDomainName, getWidth, rangesEqual } from '../../utils/scale';\n\nconst getArg = ({ arg }: PointComponentProps) => arg;\nconst getVal = ({ val }: PointComponentProps) => val;\nconst getStartVal = ({ startVal }: PointComponentProps) => startVal!;\n\n/** @internal */\nexport const dArea: PathFn = area<PointComponentProps>()\n  .x(getArg)\n  .y1(getVal)\n  .y0(getStartVal) as any;\n\n/** @internal */\nexport const dRotateArea: PathFn = area<PointComponentProps>()\n  .x1(getStartVal)\n  .x0(getVal)\n  .y(getArg) as any;\n\n/** @internal */\nexport const dLine: PathFn = line<PointComponentProps>()\n  .x(getArg)\n  .y(getVal) as any;\n\n/** @internal */\nexport const dRotateLine = line<PointComponentProps>()\n  .x(getVal)\n  .y(getArg) as any;\n\n/** @internal */\nexport const dSpline: PathFn = line<PointComponentProps>()\n  .x(getArg)\n  .y(getVal)\n  .curve(curveMonotoneX) as any;\n\n/** @internal */\nexport const dRotateSpline: PathFn = line<PointComponentProps>()\n  .x(getVal)\n  .y(getArg)\n  .curve(curveMonotoneY) as any;\n\n/** @internal */\nexport const dBar = (\n  arg: number, val: number, startVal: number, width: number, rotated: boolean,\n) => {\n  const height = Math.abs(val - startVal!);\n  const minVal = Math.min(val, startVal!);\n  return {\n    x: rotated ? minVal : arg - width / 2,\n    y: rotated ? arg - width / 2 : minVal,\n    width: rotated ? height : width || 2,\n    height: rotated ? width || 2 : height,\n  };\n};\n\n/** @internal */\nexport const getPiePointTransformer: GetPointTransformerFn = ({\n  argumentScale, valueScale, points,\n}) => {\n  const x = Math.max(...argumentScale.range()) / 2;\n  const y = Math.max(...valueScale.range()) / 2;\n  const maxRadius = Math.min(x, y);\n  const pieData = pie<Point>().sort(null).value(d => d.value)(points as Point[]);\n  return (point) => {\n    const { startAngle, endAngle } = pieData[point.index];\n    return {\n      ...point,\n      arg: x,\n      val: y,\n      startAngle,\n      endAngle,\n      maxRadius,\n    };\n  };\n};\n\n/** @internal */\nexport const getLinePointTransformer: GetPointTransformerFn = ({\n  argumentScale, valueScale,\n}) => point => ({\n  ...point,\n  arg: argumentScale(point.argument),\n  val: valueScale(point.value),\n} as any);\n\n// Though transformations for line and scatter are the same,\n// separate function instance is required as it contains additional static fields.\n/** @internal */\nexport const getScatterPointTransformer: GetPointTransformerFn = (\n  ...args\n) => getLinePointTransformer(...args);\n\n/** @internal */\nexport const getAreaPointTransformer: GetPointTransformerFn = (series) => {\n  const transform = getLinePointTransformer(series);\n  const startVal = series.valueScale(0);\n  return (point) => {\n    const ret = transform(point);\n    return {\n      ...ret,\n      startVal,\n    };\n  };\n};\n// Used for domain calculation and stacking.\ngetAreaPointTransformer.isStartedFromZero = true;\n\n/** @internal */\nexport const getBarPointTransformer: GetPointTransformerFn = ({\n  argumentScale, valueScale,\n}) => {\n  const startVal = valueScale(0);\n  return point => ({\n    ...point,\n    arg: argumentScale(point.argument),\n    val: valueScale(point.value),\n    startVal,\n    maxBarWidth: getWidth(argumentScale),\n  } as any);\n};\n// Used for domain calculation and stacking.\ngetBarPointTransformer.isStartedFromZero = true;\n// Used for Bar grouping.\ngetBarPointTransformer.isBroad = true;\n\ngetPiePointTransformer.getPointColor = (palette, index) => palette[index % palette.length];\n\n/** @internal */\nexport const findSeriesByName = (\n  name: symbol, series: SeriesList,\n): Series => series.find(seriesItem => seriesItem.symbolName === name) as Series;\n\n/** @internal */\nexport const dSymbol = (\n  { size }: ScatterSeries.PointOptions,\n) => symbol().size(size ** 2).type(symbolCircle)()!;\n\n/** @internal */\nexport const dPie = (\n  maxRadius: number, innerRadius: number, outerRadius: number, startAngle: number, endAngle: number,\n) => arc()({\n  startAngle,\n  endAngle,\n  innerRadius: innerRadius * maxRadius,\n  outerRadius: outerRadius * maxRadius,\n})!;\n\nconst getRect = (\n  cArg: number, cVal: number, dArg: number, dVal: number, rotated: boolean,\n): Rect => {\n  const minArg = cArg - dArg;\n  const minVal = cVal - dVal;\n  const maxArg = cArg + dArg;\n  const maxVal = cVal + dVal;\n  return rotated ? [minVal, minArg, maxVal, maxArg] : [minArg, minVal, maxArg, maxVal];\n};\n\ngetBarPointTransformer.getTargetElement = (point) => {\n  const {\n    arg, val, startVal, barWidth, maxBarWidth, rotated,\n  } = point as BarSeries.PointProps;\n  const halfWidth = barWidth * maxBarWidth / 2;\n  const halfHeight = Math.abs(startVal! - val) / 2;\n  const centerVal = (val + startVal!) / 2;\n  return getRect(arg, centerVal, halfWidth, halfHeight, rotated);\n};\n\ngetPiePointTransformer.getTargetElement = (point) => {\n  const {\n    arg: x, val: y, innerRadius, outerRadius, maxRadius, startAngle, endAngle,\n  } = point as PieSeries.PointProps;\n  const center = arc().centroid({\n    startAngle,\n    endAngle,\n    innerRadius: innerRadius * maxRadius,\n    outerRadius: outerRadius * maxRadius,\n  });\n  const cx = center[0] + x;\n  const cy = center[1] + y;\n  return getRect(cx, cy, 0.5, 0.5, false);\n};\n\ngetAreaPointTransformer.getTargetElement = ({ arg, val, rotated }) => (\n  getRect(arg, val, 1, 1, rotated)\n);\n\ngetLinePointTransformer.getTargetElement = getAreaPointTransformer.getTargetElement;\n\ngetScatterPointTransformer.getTargetElement = (obj) => {\n  const { arg, val, point, rotated } = obj as ScatterSeries.PointProps;\n  const t = point.size / 2;\n  return getRect(arg, val, t, t, rotated);\n};\n\nconst getUniqueName = (list: SeriesList, name: string) => {\n  const names = new Set(list.map(item => item.name));\n  let ret = name;\n  while (names.has(ret)) {\n    // @ts-ignore\n    ret = ret.replace(/\\d*$/, str => (str ? +str + 1 : 0));\n  }\n  return ret;\n};\n\n// TODO: Memoization is much needed here.\n// Though \"series\" list never persists, single \"series\" item most often does.\nconst createPoints = (\n  {\n    argumentField, valueField, getPointTransformer,\n  }: Series,\n  data: DataItems, props: any, palette: Colors,\n): PointList => {\n  const points: Point[] = [];\n  data.forEach((dataItem, index) => {\n    const argument = dataItem[argumentField];\n    const value = dataItem[valueField];\n    if (argument !== undefined && value !== undefined) {\n      points.push({\n        argument,\n        value,\n        index,\n        ...props,\n        color: getPointTransformer.getPointColor\n          ? getPointTransformer.getPointColor(palette, index) : props.color,\n      });\n    }\n  });\n  return points;\n};\n\n/** @internal */\nexport const addSeries: AddSeriesFn = (\n  series, data, palette, props, restProps,\n) => {\n  // It is used to generate unique series dependent attribute names for patterns.\n  // *symbolName* cannot be used as it cannot be part of DOM attribute name.\n  const index = series.length;\n  const seriesColor = props.color || palette[index % palette.length];\n  return [...series, {\n    ...props,\n    index,\n    name: getUniqueName(series, props.name),\n    points: createPoints(props, data, { ...restProps, color: seriesColor }, palette),\n    color: seriesColor,\n  }];\n};\n\n// TODO: Memoization is much needed here by the same reason as in \"createPoints\".\n// Make \"scales\" persistent first.\nconst scalePoints = (series: Series, scales: ScalesCache, rotated: boolean) => {\n  const transform = series.getPointTransformer({\n    ...series,\n    argumentScale: scales[ARGUMENT_DOMAIN],\n    valueScale: scales[getValueDomainName(series.scaleName)],\n  });\n  const ret: Series = {\n    ...series,\n    rotated,\n    points: series.points.map(point => ({\n      ...transform(point),\n      rotated,\n    })),\n  };\n  return ret;\n};\n\n/** @internal */\nexport const scaleSeriesPoints: ScaleSeriesPointsFn = (\n  series, scales, rotated,\n) => series.map(seriesItem => scalePoints(seriesItem, scales, rotated));\n\n/** @internal */\nexport const getVisibility = (\n  pane: Size, centerX: number, centerY: number, width: number, height: number,\n) => {\n  return (centerX - width / 2 < 0 && centerX + width / 2 < 0)\n  || (centerX - width / 2 > pane.width && centerX + width / 2 > pane.width)\n  || (centerY - height / 2 < 0 && centerY + height / 2 < 0)\n  || (centerY - height / 2 > pane.height && centerY + height / 2 > pane.height) ?\n  'hidden' : 'visible';\n};\n\n/** @internal */\nexport const adjustBarSize = (\n  bar: { width: number, height: number, x: number, y: number }, { width, height }: Size,\n) => {\n  const x = Math.max(0, bar.x);\n  const y = Math.max(0, bar.y);\n  return {\n    x,\n    y,\n    width: Math.min(width, bar.x + bar.width) - x,\n    height: Math.min(height, bar.y + bar.height) - y,\n  };\n};\n\n/** @internal */\nexport const isValuesChanged = (previous: any, current: any): boolean => {\n  return Object.entries(previous).some(el => el[1] !== current[el[0]]);\n};\n\n/** @internal */\nexport const isCoordinatesChanged = (\n  { coordinates: prevCoordinates }: PathStartCoordinates, { coordinates }: PathEndCoordinates,\n) => {\n  if (prevCoordinates.length !== coordinates.length) {\n    return true;\n  }\n  return prevCoordinates.some((el, index) => {\n    return el.arg !== coordinates[index].arg || el.val !== coordinates[index].val;\n  });\n};\n\n/** @internal */\nexport const isScalesChanged = (previous: Scales, current: Scales): boolean => {\n  return !rangesEqual(previous.argScale.range(), current.argScale.range()) ||\n  !rangesEqual(previous.valScale.range(), current.valScale.range());\n};\n","import { stack } from 'd3-shape';\nimport { scaleBand } from 'd3-scale';\nimport {\n  SeriesList, Series, Point, GetPointTransformerFn, DataItems, DomainInfoCache,\n  StackList, GetPointTransformerFnRaw, BarSeries, StackedPoint, StackMap, GetStackedSeriesFn,\n  SeriesPositions, StacksKeys, StackedDataItems, OffsetFn, OrderFn,\n  StackedData, GetStackedDomainsFn,\n} from '../../types';\nimport { extendDomains, updateDomainItems } from '../scale/computeds';\nimport { getValueDomainName } from '../../utils/scale';\n\n// \"Stack\" plugin relies on \"data\" and \"series\" getters and\n// knowledge about \"getPointTransformer\" and \"path\" functions behavior.\nconst buildSeriesToStackMap = (stacks: StackList): StackMap => {\n  const result = {};\n  stacks.forEach(({ series }, i) => {\n    series.forEach((name) => {\n      result[name] = i;\n    });\n  });\n  return result;\n};\n\nconst getStackedPointTransformer = (getPointTransformer: GetPointTransformerFn) => {\n  const wrapper: GetPointTransformerFnRaw = (series) => {\n    const transform = getPointTransformer(series);\n    const { valueScale } = series;\n    return (point: Point) => {\n      const ret = transform(point);\n      return {\n        ...ret,\n        startVal: valueScale((point as StackedPoint).value0),\n      };\n    };\n  };\n  // Preserve static fields of original transformer.\n  Object.assign(wrapper, getPointTransformer);\n  return wrapper as GetPointTransformerFn;\n};\n\nconst collectStacks = (\n  seriesList: SeriesList, seriesToStackMap: StackMap,\n  stacksKeys: StacksKeys, seriesPositions: SeriesPositions,\n) => {\n  seriesList.forEach(({ name, valueField }) => {\n    const stackId = seriesToStackMap[name];\n    if (stackId === undefined) {\n      return;\n    }\n\n    if (!stacksKeys[stackId]) {\n      stacksKeys[stackId] = [];\n    }\n    seriesPositions[name] = stacksKeys[stackId].length;\n    stacksKeys[stackId].push(valueField);\n  });\n  // Stack cannot consist of single series.\n  Object.keys(stacksKeys).forEach((stackId) => {\n    if (stacksKeys[stackId].length === 1) {\n      delete stacksKeys[stackId];\n    }\n  });\n};\n\nconst getStackedData = (\n  stacksKeys: StacksKeys, dataItems: DataItems, offset: OffsetFn, order: OrderFn,\n): StackedData => {\n  const result = {};\n  Object.keys(stacksKeys).forEach((stackId) => {\n    result[stackId] = stack().keys(stacksKeys[stackId])\n      .order(order as any)\n      .offset(offset as any)(dataItems as any);\n  });\n  return result;\n};\n\nconst buildStackedSeries = (series: Series, dataItems: StackedDataItems): Series => {\n  const points = series.points.map((point) => {\n    const [value0, value] = dataItems[point.index];\n    return { ...point, value, value0 };\n  });\n  const stackedSeries = {\n    ...series,\n    points,\n    isStacked: true,\n  };\n  if (series.getPointTransformer.isStartedFromZero) {\n    stackedSeries.getPointTransformer = getStackedPointTransformer(series.getPointTransformer);\n  }\n  return stackedSeries;\n};\n\nconst applyStacking = (\n  seriesList: SeriesList, dataItems: DataItems, seriesToStackMap: StackMap,\n  offset: OffsetFn, order: OrderFn,\n): SeriesList => {\n  const stacksKeys: StacksKeys = {};\n  const seriesPositions: SeriesPositions = {};\n  collectStacks(seriesList, seriesToStackMap, stacksKeys, seriesPositions);\n  if (Object.keys(stacksKeys).length === 0) {\n    return seriesList;\n  }\n  const stackedData = getStackedData(stacksKeys, dataItems, offset, order);\n  return seriesList.map((seriesItem) => {\n    const stackId = seriesToStackMap[seriesItem.name];\n    const stackData = stackedData[stackId];\n    if (!stackData) {\n      return seriesItem;\n    }\n    const position = seriesPositions[seriesItem.name];\n    return buildStackedSeries(seriesItem, stackData[position]);\n  });\n};\n\nconst getGroupName = (series: Series, i: number, seriesToStackMap: StackMap) => {\n  const stackId = seriesToStackMap[series.name];\n  return stackId >= 0 ? String(stackId) : `group-${i}`;\n};\n\nconst getGroupedPointTransformer = (\n  getPointTransformer: GetPointTransformerFn, groupCount: number, groupOffset: number,\n) => {\n  const wrapper: GetPointTransformerFnRaw = (series) => {\n    const transform = getPointTransformer(series);\n    const widthCoeff = 1 / groupCount;\n    return (point) => {\n      const original = transform(point) as BarSeries.PointProps;\n      const arg = (\n        original.arg - original.maxBarWidth * (0.5 - 0.5 * widthCoeff - groupOffset * widthCoeff)\n      );\n      const result: BarSeries.PointProps = {\n        ...original,\n        arg,\n        maxBarWidth: original.maxBarWidth / groupCount,\n      };\n      return result;\n    };\n  };\n  // Preserve static fields of original transformer.\n  Object.assign(wrapper, getPointTransformer);\n  return wrapper as GetPointTransformerFn;\n};\n\nconst applyGrouping = (seriesList: SeriesList, seriesToStackMap: StackMap): SeriesList => {\n  const groups = new Set<string>();\n  seriesList.forEach((seriesItem, i) => {\n    if (seriesItem.getPointTransformer.isBroad) {\n      groups.add(getGroupName(seriesItem, i, seriesToStackMap));\n    }\n  });\n  // There cannot be single group.\n  if (groups.size < 2) {\n    return seriesList;\n  }\n  const scale = scaleBand().domain(Array.from(groups)).range([0, groups.size]);\n  return seriesList.map((seriesItem, i) => {\n    if (!seriesItem.getPointTransformer.isBroad) {\n      return seriesItem;\n    }\n    const getPointTransformer = getGroupedPointTransformer(\n      seriesItem.getPointTransformer,\n      groups.size,\n      scale(getGroupName(seriesItem, i, seriesToStackMap))!,\n    );\n    return {\n      ...seriesItem,\n      getPointTransformer,\n    };\n  });\n};\n\n/** @internal */\nexport const getStackedSeries: GetStackedSeriesFn = (\n  seriesList, dataItems, { stacks, offset, order },\n) => {\n  const map = buildSeriesToStackMap(stacks);\n  const stackedSeriesList = applyStacking(seriesList, dataItems, map, offset, order);\n  const groupedSeriesList = applyGrouping(stackedSeriesList, map);\n  return groupedSeriesList;\n};\n\nconst resetDomainItems = (domains: DomainInfoCache): DomainInfoCache => {\n  const result = {};\n  Object.keys(domains).forEach((key) => {\n    result[key] = { ...domains[key], domain: [] };\n  });\n  return result;\n};\n\nconst extendDomainsWithAdditionalItems = (domains: DomainInfoCache, series: Series) => {\n  const items = series.points.map(point => (point as StackedPoint).value0);\n  const key = getValueDomainName(series.scaleName);\n  const domain = updateDomainItems(domains[key], items);\n  return domain !== domains[key] ? { ...domains, [key]: domain } : domains;\n};\n\n// Stacking changes data - so computed domains have to be discarded\n// and recalculated from the new stacked data.\n/** @internal */\nexport const getStackedDomains: GetStackedDomainsFn = (domains, seriesList) => {\n  const stackedSeries = seriesList.filter(series => (series as any).isStacked);\n  if (!stackedSeries.length) {\n    return domains;\n  }\n  // Recalculate domains in a common way.\n  const rebuiltDomains = seriesList.reduce(extendDomains, resetDomainItems(domains));\n  // Take additional \"value0\" fields into account.\n  return stackedSeries.reduce(extendDomainsWithAdditionalItems, rebuiltDomains);\n};\n","import {\n  Scales, PointComponentProps, PieSeries, PathComponentProps, GetDelayFn,\n} from '../../types';\n\n/** @internal */\nexport const easeOutCubic = (t: number) => (t - 1) * (t - 1) * (t - 1) + 1;\n\n/** @internal */\nexport const getDelay: GetDelayFn = (index, isStart) => isStart ? index * 30 : 0;\n\n/** @internal */\nexport const getStartVal = (scales: Scales) => {\n  return scales.valScale.copy().clamp!(true)(0);\n};\n\n/** @internal */\nexport const getPathStart = (scales: Scales, { coordinates }: PathComponentProps) => {\n  const start = getStartVal(scales);\n  return { coordinates: coordinates.map(coord =>\n    ({ arg: coord.arg, val: start, startVal: start })) };\n};\n\n/** @internal */\nexport const getPointStart = (scales: Scales, { arg }: PointComponentProps) => {\n  const start = getStartVal(scales);\n  return { arg, val: start, startVal: start };\n};\n\n/** @internal */\nexport const getPieStart = (scales: Scales, { startAngle, endAngle }: PieSeries.PointProps) =>\n({ innerRadius: 0, outerRadius: 0, startAngle, endAngle });\n","import { SeriesRef, TargetList, NotifyPointerMoveFn, ProcessedTarget } from '../types';\n\n// Comparing by reference is not an option as Tracker always sends new objects.\n// Tracker cannot persist references as it actually operates with simple scalars\n// and constructs objects to provide info in a slightly more suitable way.\nconst compareTargets = (target1: SeriesRef, target2: SeriesRef) => (\n  target1.series === target2.series && target1.point === target2.point\n);\n\n// If *currentTarget* is among *targets* then it has priority but only while its distance\n// is not significantly greater (DISTANCE_PRIORITY_RATIO) than that of the best candidate.\nconst selectTarget = (targets: TargetList, currentTarget: SeriesRef): ProcessedTarget => {\n  const candidate = targets[0];\n  if (!currentTarget) {\n    return candidate;\n  }\n  if (!candidate) {\n    return null;\n  }\n  return compareTargets(candidate, currentTarget) ? undefined : candidate;\n};\n\n/** @internal */\nexport const processPointerMove = (\n  targets: TargetList, currentTarget: SeriesRef, notify?: NotifyPointerMoveFn,\n) => {\n  const nextTarget = selectTarget(targets, currentTarget);\n  if (nextTarget === undefined) {\n    return undefined;\n  }\n  if (notify) {\n    notify(nextTarget);\n  }\n  return nextTarget;\n};\n","import { NumberArray, Location } from '../types';\n// This function is to be called from context where DOM is available -\n// so *window* can be accessed safely.\n/** @internal */\nexport const getOffset = (element: Element): NumberArray => {\n  const { left, top } = element.getBoundingClientRect();\n  // Safer way to get window.\n  const { defaultView } = element.ownerDocument!;\n  const { pageXOffset, pageYOffset } = defaultView!;\n  return [left + pageXOffset, top + pageYOffset];\n};\n\n/** @internal */\nexport const getEventCoords = (e: any, offset: NumberArray): Location => {\n  const { pageX, pageY } = e.touches ? e.touches[0] : e;\n  return [pageX - offset[0], pageY - offset[1]];\n};\n","import { processPointerMove } from '../../utils/hover-state';\nimport { getOffset } from '../../utils/common';\nimport {\n  SeriesList, SeriesRef, TransformedPoint, TargetList, NotifyPointerMoveFn,\n  TooltipParameters, TooltipReference, Rect,\n} from '../../types';\n\n/** @internal */\nexport const getParameters = (series: SeriesList, target: SeriesRef): TooltipParameters => {\n  const currentSeries = series.find(({ name }) => target.series === name)!;\n  const item = currentSeries.points.find(point => point.index === target.point) as TransformedPoint;\n  return {\n    element: currentSeries.getPointTransformer.getTargetElement(item),\n    text: `${item.value}`,\n  };\n};\n\n/** @internal */\nexport const createReference = (\n  rect: Rect, rootRef: React.RefObject<Element>,\n): TooltipReference => ({\n  // These two fields together with *width* and *height* are left with stub data for\n  // simplicity reasons - they seem to be unused by *Popper*.\n  clientWidth: 0,\n  clientHeight: 0,\n  getBoundingClientRect() {\n    // This function is expected to be called (by the *Popper*) when DOM is ready -\n    // so *rootRef.current* can be accessed.\n    const offset = getOffset(rootRef.current!);\n    // *getBoundingClientRect* of a real html element is affected by window scrolling.\n    // *popper.js* subscribes \"html -> getBoundingClientRect -> (left, top)\" from\n    // \"reference -> getBoundingClientRect\" - so here it is added.\n    const htmlRect = rootRef.current!.ownerDocument!.documentElement.getBoundingClientRect();\n    const left = rect[0] + offset[0] + htmlRect.left;\n    const right = rect[2] + offset[0] + htmlRect.left;\n    const top = rect[1] + offset[1] + htmlRect.top;\n    const bottom = rect[3] + offset[1] + htmlRect.top;\n    return {\n      left,\n      top,\n      right,\n      bottom,\n      width: right - left,\n      height: bottom - top,\n    };\n  },\n});\n\n/** @internal */\nexport const processHandleTooltip = (\n  targets: TargetList, currentTarget: SeriesRef, onTargetItemChange?: NotifyPointerMoveFn,\n) => {\n  const filterTargets = targets.filter(target => target.point !== undefined);\n  return processPointerMove(filterTargets, currentTarget, onTargetItemChange);\n};\n","import {\n  ARGUMENT_DOMAIN, VALUE_DOMAIN,\n} from '../../constants';\nimport {\n  getValueDomainName, makeScale, scaleBounds, rangesEqual,\n  moveBounds, growBounds, invertBoundsRange,\n} from '../../utils/scale';\nimport {\n  NumberArray,\n  Viewport,\n  ScalesCache,\n  DomainInfoCache,\n  RangesCache,\n  DomainInfo,\n  DomainBounds,\n  OnViewportChangeFn,\n  ScaleObject,\n  EventHandlers,\n  Location,\n  Interaction,\n} from '../../types';\nimport { Size } from '@devexpress/dx-react-core';\n\nconst getArgumentBounds = (viewport?: Viewport): DomainBounds | null => (\n  viewport && viewport.argumentStart !== undefined && viewport.argumentEnd !== undefined\n    ? [viewport.argumentStart, viewport.argumentEnd] : null\n);\n\nconst getValueBounds = (viewport?: Viewport): DomainBounds | null => (\n  viewport && viewport.valueStart !== undefined && viewport.valueEnd !== undefined\n    ? [viewport.valueStart, viewport.valueEnd] : null\n);\n\nconst getValueScaleName = (viewport?: Viewport) => (\n  getValueDomainName(viewport && viewport.scaleName)\n);\n\nconst getDefaultBounds = (scale: ScaleObject): DomainBounds => {\n  const domain = scale.domain();\n  return [domain[0], domain[domain.length - 1]];\n};\n\nconst proportionallyExtendRange = (range: NumberArray, subRange: NumberArray): NumberArray => {\n  const p = (subRange[0] - subRange[1]) / (range[0] - range[1]);\n  const q = subRange[0] - p * range[0];\n  return [\n    (range[0] - q) / p,\n    (range[1] - q) / p,\n  ];\n};\n\nconst adjustRange = (domain: DomainInfo, bounds: DomainBounds, range: NumberArray) => {\n  const scale = makeScale(domain, range);\n  const subRange = scaleBounds(scale, bounds);\n  return rangesEqual(subRange, range) ? range : proportionallyExtendRange(range, subRange);\n};\n\nconst update = (\n  ranges: RangesCache, changes: any, key: string, domain: DomainInfo, bounds: DomainBounds,\n) => {\n  const newRange = adjustRange(domain, bounds, ranges[key]);\n  if (newRange !== ranges[key]) {\n    changes[key] = newRange;\n  }\n};\n\n/** @internal */\nexport const adjustLayout = (\n  domains: DomainInfoCache, ranges: RangesCache, viewport?: Viewport,\n) => {\n  const changes = {};\n  const argumentBounds = getArgumentBounds(viewport);\n  if (argumentBounds) {\n    update(ranges, changes, ARGUMENT_DOMAIN, domains[ARGUMENT_DOMAIN], argumentBounds);\n  }\n  const valueBounds = getValueBounds(viewport);\n  if (valueBounds) {\n    update(ranges, changes, VALUE_DOMAIN, domains[getValueScaleName(viewport)], valueBounds);\n  }\n  return Object.keys(changes).length ? { ...ranges, ...changes } : ranges;\n};\n\nconst boundsForScale = (\n  name: string, scales: ScalesCache, currentBounds: DomainBounds | null,\n  interaction: Interaction, type: Interaction, delta: number, anchor: number, range?: NumberArray,\n): DomainBounds | null => {\n  if (!checkInteraction(interaction, type)) {\n    return null;\n  }\n  const scale = scales[name];\n  const bounds = currentBounds || getDefaultBounds(scale);\n  let newBounds: DomainBounds;\n  if (type === 'pan') {\n    newBounds = moveBounds(scale, bounds, delta);\n  } else if (type === 'zoom') {\n    newBounds = range ? invertBoundsRange(scale, range) : growBounds(scale, bounds, delta, anchor);\n  }\n  return newBounds! !== bounds ? newBounds! : null;\n};\n\n/** @internal */\nexport const getViewport = (\n  scales: ScalesCache,\n  rotated: boolean,\n  [argInteraction, valInteraction]: Readonly<[Interaction, Interaction]>, type: Interaction,\n  deltas: Readonly<[number, number]> | null,\n  anchors: Readonly<number[]> | null,\n  ranges: Readonly<[NumberArray, NumberArray]> | null,\n  viewport?: Viewport, onViewportChange?: OnViewportChangeFn,\n) => {\n  const argIndex = Number(rotated);\n  const valIndex = 1 - argIndex;\n  const changes: any = {};\n  const argumentBounds = boundsForScale(\n    ARGUMENT_DOMAIN, scales, getArgumentBounds(viewport),\n    argInteraction, type,\n    deltas ? deltas[argIndex] : 0, anchors ? anchors[argIndex] : 0,\n    ranges ? ranges[argIndex] : undefined,\n  );\n  const valueBounds = boundsForScale(\n    getValueScaleName(viewport), scales, getValueBounds(viewport),\n    valInteraction, type,\n    deltas ? deltas[valIndex] : 0, anchors ? anchors[valIndex] : 0,\n    ranges ? ranges[valIndex] : undefined,\n  );\n  if (argumentBounds) {\n    changes.argumentStart = argumentBounds[0];\n    changes.argumentEnd = argumentBounds[1];\n  }\n  if (valueBounds) {\n    changes.valueStart = valueBounds[0];\n    changes.valueEnd = valueBounds[1];\n  }\n  if (Object.keys(changes).length) {\n    const newViewport = { ...viewport, ...changes };\n    if (onViewportChange) {\n      onViewportChange(newViewport);\n    }\n    return { viewport: newViewport };\n  }\n  return null;\n};\n\n/** @internal */\nexport const getDeltaForTouches = (touches: Touch[]) => {\n  const deltaX = touches[0].pageX - touches[1].pageX;\n  const deltaY = touches[0].pageY - touches[1].pageY;\n  const delta = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  const center: NumberArray = [\n    (touches[0].pageX + touches[1].pageX) / 2,\n    (touches[0].pageY + touches[1].pageY) / 2,\n  ];\n  return { delta, center };\n};\n\n/** @internal */\nexport const isKeyPressed = (event: MouseEvent, key: string) => event[`${key}Key`];\n\n/** @internal */\nexport const getWheelDelta = ({ wheelDelta, deltaY }: { wheelDelta?: number, deltaY?: number }) => {\n  return wheelDelta !== undefined ? wheelDelta : deltaY! * -30; // deltaY for FF\n};\n\n/** @internal */\nexport const isMultiTouch = (e: any) => e.touches && e.touches.length === 2;\n\n/** @internal */\nexport const attachEvents = (node: any, handlers: EventHandlers) => {\n  Object.keys(handlers).forEach((el) => {\n    node.addEventListener(el, handlers[el], { passive: false });\n  });\n};\n\n/** @internal */\nexport const detachEvents = (node: any, handlers: EventHandlers) => {\n  Object.keys(handlers).forEach((el) => {\n    node.removeEventListener(el, handlers[el]);\n  });\n};\n\n/** @internal */\nexport const getRect = (\n  rotated: boolean,\n  interactionWithArguments: Interaction,\n  interactionWithValues: Interaction,\n  initial: Location,\n  current: Location,\n  pane: Size,\n) => {\n  const isZoomArgument = checkInteraction(interactionWithArguments, 'zoom');\n  const isZoomValue = checkInteraction(interactionWithValues, 'zoom');\n  const isXFixed = rotated ? isZoomValue : isZoomArgument;\n  const isYFixed = rotated ? isZoomArgument : isZoomValue;\n  const x = isXFixed ? Math.min(initial[0], current[0]) : 0;\n  const width = isXFixed ? Math.abs(initial[0] - current[0]) : pane.width;\n  const y = isYFixed ? Math.min(initial[1], current[1]) : 0;\n  const height = isYFixed ? Math.abs(initial[1] - current[1]) : pane.height;\n  return {\n    x, y, width, height,\n  };\n};\n\nconst checkInteraction = (interaction: Interaction, type: Interaction) =>\ninteraction === 'both' || interaction === type;\n\n/** @internal */\nexport const setCursorType = (node: any, type?: string) => {\n  const defaultType = 'pointer';\n  node.style.cursor = type ? type : defaultType;\n};\n","import { DIFFERENCE } from '../../constants';\n\n/** @internal */\nexport const isReadyToRenderSeries = (\n  { pane, ...restLayouts }, { current },\n  isPreviousDataEmpty: boolean, axesExist: boolean,\n) => {\n  if (!pane.width && !pane.height) {\n    return false;\n  }\n  const bbox = { width: current.clientWidth, height: current.clientHeight };\n  let width = pane.width;\n  let height = pane.height;\n  Object.entries(restLayouts).forEach((el) => {\n    const orientation = el[0].split('-')[0];\n    if (orientation === 'top' || orientation === 'bottom') {\n      height += el[1].height;\n    } else {\n      width += el[1].width;\n    }\n  });\n  return Math.abs(bbox.width - width) < DIFFERENCE &&\n    Math.abs(bbox.height - height) < DIFFERENCE\n    && isPreviousDataEmptyOrNoAxes(isPreviousDataEmpty, axesExist);\n};\n\nconst isPreviousDataEmptyOrNoAxes = (\n  isPreviousDataEmpty: boolean, axesExist: boolean,\n) => !isPreviousDataEmpty || !axesExist;\n","import { area } from 'd3-shape';\nimport {\n  dArea, dRotateArea, dLine, dRotateLine, dSpline, dRotateSpline,\n} from '../plugins/series/computeds';\nimport {\n  SeriesList, TransformedPoint, PointList, TargetList, PointDistance, Location,\n  CreateHitTesterFn, MakePathFn, IsPointInPathFn,\n  HitTestPointFn, Filter,\n  BarSeries, ScatterSeries, PieSeries,\n  PathFn,\n} from '../types';\n\nconst getSegmentLength = (dx: number, dy: number) => Math.sqrt(dx * dx + dy * dy);\n\n// *distance* is a normalized distance to point.\n// It belongs to [0, Infinity):\n//  = 0 - at point center\n//  = 1 - at point border\n//  > 1 - outside point\n\n// This function is called from event handlers (when DOM is available) -\n// *window.document* can be accessed safely.\nconst createContext = () => document.createElement('canvas').getContext('2d')!;\n\n// For a start using browser canvas will suffice.\n// However a better and more clean solution should be found.\n// Can't d3 perform hit testing?\nconst createCanvasAbusingHitTester = (\n  makePath: MakePathFn, points: PointList, rotated: boolean,\n): IsPointInPathFn => {\n  const ctx = createContext();\n  const path = makePath(rotated);\n  path.context(ctx);\n  path(points as any);\n  return ([x, y]) => ctx.isPointInPath(x, y);\n};\n\nconst LINE_POINT_SIZE = 20;\nconst LINE_TOLERANCE = 10;\n\nconst getDistance = (\n  [px, py]: Location, { arg, val }: TransformedPoint, rotated: boolean,\n) => {\n  const x = rotated ? val : arg;\n  const y = rotated ? arg : val;\n  return getSegmentLength(px - x, py - y);\n};\n\nconst createContinuousSeriesHitTesterCreator =\n  (makePath: MakePathFn): CreateHitTesterFn => (points, rotated) => {\n    const fallbackHitTest = createCanvasAbusingHitTester(makePath, points, rotated);\n    return (target) => {\n      let minDistance = Number.MAX_VALUE;\n      let minIndex: number = 0;\n      const list: PointDistance[] = [];\n      points.forEach((point, i) => {\n        const distance = getDistance(target, point as TransformedPoint, rotated);\n        if (distance <= LINE_POINT_SIZE) {\n          list.push({ distance, index: point.index });\n        }\n        if (distance < minDistance) {\n          minDistance = distance;\n          minIndex = i;\n        }\n      });\n      // This is special case for continuous series - if no point is actually hit\n      // then the closest point to the pointer position is picked.\n      if (!list.length && fallbackHitTest(target)) {\n        list.push({ index: points[minIndex].index, distance: minDistance });\n      }\n      return list.length ? { points: list } : null;\n    };\n  };\n\nconst createPointsEnumeratingHitTesterCreator =\n  (hitTestPoint: HitTestPointFn): CreateHitTesterFn => (points, rotated) => (target) => {\n    const list: PointDistance[] = [];\n    points.forEach((point) => {\n      const status = hitTestPoint(target, point as TransformedPoint, rotated);\n      if (status) {\n        list.push({ index: point.index, distance: status.distance });\n      }\n    });\n    return list.length ? { points: list } : null;\n  };\n\n/** @internal */\nexport const createAreaHitTester = createContinuousSeriesHitTesterCreator((rotated) => {\n  const path: PathFn = area() as any;\n  const hitArea = rotated ? dRotateArea : dArea;\n  if (rotated) {\n    path.x1!(hitArea.x1!());\n    path.x0!(hitArea.x0!());\n    path.y(hitArea.y());\n  } else {\n    path.x(hitArea.x());\n    path.y1!(hitArea.y1!());\n    path.y0!(hitArea.y0!());\n  }\n  return path;\n});\n\n/** @internal */\nexport const createLineHitTester = createContinuousSeriesHitTesterCreator((rotated) => {\n  const path: PathFn = area() as any;\n  const hitLine = rotated ? dRotateLine : dLine;\n  if (rotated) {\n    const getX = hitLine.x();\n    path.y(hitLine.y());\n    path.x0!(point => getX(point) + LINE_TOLERANCE);\n    path.x1!(point => getX(point) - LINE_TOLERANCE);\n  } else {\n    const getY = hitLine.y();\n    path.x(hitLine.x());\n    path.y1!(point => getY(point) - LINE_TOLERANCE);\n    path.y0!(point => getY(point) + LINE_TOLERANCE);\n  }\n  return path;\n});\n\n/** @internal */\nexport const createSplineHitTester = createContinuousSeriesHitTesterCreator((rotated) => {\n  const path: PathFn = area() as any;\n  const hitSpline = rotated ? dRotateSpline : dSpline;\n  if (rotated) {\n    const getX = hitSpline.x();\n    path.y(hitSpline.y());\n    path.x1!(point => getX(point) - LINE_TOLERANCE);\n    path.x0!(point => getX(point) + LINE_TOLERANCE);\n  } else {\n    const getY = hitSpline.y();\n    path.x(hitSpline.x());\n    path.y1!(point => getY(point) - LINE_TOLERANCE);\n    path.y0!(point => getY(point) + LINE_TOLERANCE);\n  }\n  path.curve!(hitSpline.curve!());\n  return path;\n});\n\nconst hitTestRect = (dx: number, dy: number, halfX: number, halfY: number) => (\n  Math.abs(dx) <= halfX && Math.abs(dy) <= halfY ? {\n    distance: getSegmentLength(dx, dy),\n  } : null\n);\n\n// Some kind of binary search can be used here as bars can be ordered along argument axis.\n/** @internal */\nexport const createBarHitTester = createPointsEnumeratingHitTesterCreator(\n  ([px, py], point, rotated) => {\n    const {\n      arg, val, startVal, barWidth, maxBarWidth,\n    } = point as BarSeries.PointProps;\n    const halfWidth = maxBarWidth * barWidth / 2;\n    const halfHeight = Math.abs(val - startVal!) / 2;\n    const centerVal = (val + startVal!) / 2;\n    const xCenter = rotated ? centerVal : arg;\n    const yCenter = rotated ? arg : centerVal;\n    return hitTestRect(\n      px - xCenter,\n      py - yCenter,\n      rotated ? halfHeight : halfWidth,\n      rotated ? halfWidth : halfHeight,\n    );\n  },\n);\n\n/** @internal */\nexport const createScatterHitTester = createPointsEnumeratingHitTesterCreator(\n  ([px, py], obj, rotated) => {\n    const { point } = obj as ScatterSeries.PointProps;\n    const distance = getDistance([px, py], obj, rotated);\n    return distance <= point.size / 2 ? { distance } : null;\n  },\n);\n\nconst mapAngleTod3 = (angle: number) => {\n  const ret = angle + Math.PI / 2;\n  return ret >= 0 ? ret : ret + Math.PI * 2;\n};\n\n// Some kind of binary search can be used here as pies can be ordered along angle axis.\n/** @internal */\nexport const createPieHitTester = createPointsEnumeratingHitTesterCreator(\n  ([px, py], point) => {\n    const {\n      arg: x, val: y, innerRadius, outerRadius, startAngle, maxRadius, endAngle,\n    } = point as PieSeries.PointProps;\n    const inner = innerRadius * maxRadius;\n    const outer = outerRadius * maxRadius;\n    const rCenter = (inner + outer) / 2;\n    const angleCenter = (startAngle + endAngle) / 2;\n    const halfRadius = (outer - inner) / 2;\n    const halfAngle = Math.abs(startAngle - endAngle) / 2;\n    const dx = px - x;\n    const dy = py - y;\n    const r = getSegmentLength(dx, dy);\n    const angle = mapAngleTod3(Math.atan2(dy, dx));\n    // This is not a correct distance calculation but for now it will suffice.\n    // For Pie series it would not be actually used.\n    return hitTestRect(r - rCenter, angle - angleCenter, halfRadius, halfAngle);\n  },\n);\n\nconst buildFilter = (targets: TargetList): Filter => {\n  const result = {};\n  targets.forEach(({ series, point }) => {\n    (result[series] = result[series] || new Set()).add(point);\n  });\n  return result;\n};\n\n/** @internal */\nexport const changeSeriesState = (seriesList: SeriesList, targets: TargetList, state: string) => {\n  if (targets.length === 0) {\n    return seriesList;\n  }\n  const filter = buildFilter(targets);\n  let matches = 0;\n  const result = seriesList.map((seriesItem) => {\n    const set = filter[seriesItem.name];\n    if (!set) {\n      return seriesItem;\n    }\n    matches += 1;\n    const props: { state: string, points?: TransformedPoint[] } = { state };\n    if (set.size) {\n      props.points = (seriesItem.points as TransformedPoint[]).map(\n        point => (set.has(point.index) ? { ...point, state } : point),\n      );\n    }\n    return { ...seriesItem, ...props };\n  });\n  // This is to prevent false rerenders.\n  return matches > 0 ? result : seriesList;\n};\n","import { SeriesList, LegendItemList } from '../types';\n\nconst getDefaultLegendItems = (series: SeriesList): LegendItemList => series.map(\n  ({ name: text, color }) => ({ text, color }),\n);\n\nconst getPieLegendItems = (series: SeriesList): LegendItemList => series[0]\n  .points.map(({ argument: text, color }) => ({ text, color }));\n\n// The function supports special case when there is single Pie series.\n// There is no common way to tell if series is PieSeries -\n// checking `radius` props will suffice for now.\nconst isSinglePieSeriesCase = (series: SeriesList) => (\n  series.length === 1 && 'innerRadius' in series[0] && 'outerRadius' in series[0]\n);\n\n/** @internal */\nexport const getLegendItems = (series: SeriesList) => (\n  (isSinglePieSeriesCase(series) ? getPieLegendItems : getDefaultLegendItems)(series)\n);\n","import { hasWindow } from '@devexpress/dx-core';\nimport { getEventCoords, getOffset } from './common';\nimport {\n  TrackerTarget, HandlerFnList, SeriesList, HitTesters,\n  EventHandlerFn, TargetData, EventHandlers, HandlersObject,\n} from '../types';\n\nconst DISTANCE_THRESHOLD = 20;\n\nconst compareHitTargets = (t1: TrackerTarget, t2: TrackerTarget) => {\n  const distanceDelta = t1.distance - t2.distance;\n  if (Math.abs(distanceDelta) <= DISTANCE_THRESHOLD) {\n    const orderDelta = t2.order - t1.order;\n    return orderDelta !== 0 ? orderDelta : distanceDelta;\n  }\n  return distanceDelta;\n};\n\nconst buildEventHandler = (seriesList: SeriesList, handlers: HandlerFnList): EventHandlerFn => {\n  let hitTesters: HitTesters | null = null;\n\n  const createHitTesters = () => {\n    const obj: HitTesters = {};\n    seriesList.forEach((seriesItem) => {\n      obj[seriesItem.symbolName as unknown as string] = seriesItem\n      .createHitTester(seriesItem.points, seriesItem.rotated);\n    });\n    return obj;\n  };\n\n  return (e) => {\n    const location = getEventCoords(e, getOffset(e.currentTarget));\n    hitTesters = hitTesters || createHitTesters();\n    const targets: TrackerTarget[] = [];\n    seriesList.forEach(({ name: series, index: order, symbolName }) => {\n      const status = hitTesters![symbolName as unknown as string](location);\n      if (status) {\n        targets.push(...status.points.map(\n          point => ({\n            series, order, point: point.index, distance: point.distance,\n          }),\n        ));\n      }\n    });\n    targets.sort(compareHitTargets);\n    const arg: TargetData = { location, targets, event: e.nativeEvent };\n    handlers.forEach(handler => handler(arg));\n  };\n};\n\nconst buildLeaveEventHandler = (handlers: HandlerFnList): EventHandlerFn => (e) => {\n  const location = getEventCoords(e, getOffset(e.currentTarget));\n  const arg: TargetData = { location, targets: [] };\n  handlers.forEach(handler => handler(arg));\n};\n\n// The result is of Map<string, Function> type.\n// Keys are DOM event names (https://developer.mozilla.org/en-US/docs/Web/Events).\n/** @internal */\nexport const buildEventHandlers = (\n  seriesList: SeriesList, { clickHandlers, pointerMoveHandlers }: HandlersObject,\n) => {\n  const handlers: EventHandlers = {};\n  if (!hasWindow()) return handlers;\n  if (clickHandlers.length) {\n    handlers.click = buildEventHandler(seriesList, clickHandlers);\n  }\n  if (pointerMoveHandlers.length) {\n    const moveHandler = buildEventHandler(seriesList, pointerMoveHandlers);\n    const leaveHandler = buildLeaveEventHandler(pointerMoveHandlers);\n    if ('ontouchstart' in window) {\n      handlers.touchstart = moveHandler;\n    } else {\n      handlers.mousemove = moveHandler;\n      handlers.mouseleave = leaveHandler;\n    }\n  }\n  return handlers;\n};\n","import {\n  EasingFn, SetAttributeFn, AnimationFn, GetNewPositionsFn,\n  RangePointCoordinates, PointCoordinates, PointComponentProps,\n  PieCoordinates, PathStartCoordinates, PathEndCoordinates,\n} from '../types';\n\n/** @internal */\nconst getProgress = ({ elapsed, total }: {elapsed: number, total: number}) =>\nMath.min(elapsed / total, 1);\n\n/** @internal */\nconst runAnimation = (\n  setAttributes: SetAttributeFn,\n  getNewPositions: GetNewPositionsFn,\n  easing: EasingFn, duration: number, delay: number,\n) => new Promise((resolve) => {\n  setTimeout(() => {\n    const time = {\n      start: Date.now(),\n      total: duration,\n      elapsed: 0,\n    };\n    const step = () => {\n      time.elapsed = Date.now() - time.start;\n      const progress = getProgress(time);\n      setAttributes(getNewPositions(easing(progress)));\n\n      if (progress < 1) requestAnimationFrame(step);\n    };\n    resolve(requestAnimationFrame(step));\n  }, delay);\n});\n\n/** @internal */\nexport const buildAnimation = (easing: EasingFn, duration: number): AnimationFn => (\n  startCoords, endCoords, processAnimation, setAttributes, delay = 0,\n) => {\n  let animationID;\n\n  const stop = () => {\n    if (animationID) {\n      cancelAnimationFrame(animationID);\n      animationID = undefined;\n    }\n  };\n\n  const run = (start, end, delayValue) => {\n    animationID = runAnimation(\n      setAttributes, processAnimation(start, end),\n      easing, duration, delayValue,\n    ).then((res) => {\n      animationID = res;\n    });\n  };\n\n  run(startCoords, endCoords, delay);\n\n  return {\n    update: (updatedStartCoords, updatedEndCoords, updatedDelay = 0) => {\n      stop();\n      run(updatedStartCoords, updatedEndCoords, updatedDelay);\n    },\n    stop,\n  };\n};\n\nconst lerp = (a: number, b: number, t: number) => a + t * (b - a);\n\n/** @internal */\nexport const processPointAnimation = (\n  startCoords: PointCoordinates, endCoords: PointComponentProps,\n) => {\n  return (progress: number) => {\n    return {\n      arg: lerp(startCoords.arg, endCoords.arg, progress),\n      val: lerp(startCoords.val, endCoords.val, progress),\n    };\n  };\n};\n\n/** @internal */\nexport const processBarAnimation = (\n  startCoords: RangePointCoordinates, endCoords: PointComponentProps,\n) => {\n  return (progress: number) => {\n    return {\n      arg: lerp(startCoords.arg, endCoords.arg, progress),\n      val: lerp(startCoords.val, endCoords.val, progress),\n      startVal: lerp(startCoords.startVal, endCoords.startVal, progress),\n    };\n  };\n};\n\n/** @internal */\nexport const processLineAnimation = (\n  { coordinates }: PathStartCoordinates,\n  { coordinates: endCoordinates }: PathEndCoordinates,\n) => {\n  return (progress: number) => {\n    return {\n      coordinates: endCoordinates.map((coord, index) => {\n        const startCurCoord = coordinates[index];\n        return {\n          ...coord,\n          arg: lerp(startCurCoord.arg, coord.arg, progress),\n          val: lerp(startCurCoord.val, coord.val, progress),\n        };\n      }),\n    };\n  };\n};\n\n/** @internal */\nexport const processAreaAnimation = (\n  { coordinates }: PathStartCoordinates,\n  { coordinates: endCoordinates }: PathEndCoordinates,\n) => {\n  return (progress: number) => {\n    return {\n      coordinates: endCoordinates.map((coord, index) => {\n        const startCurCoord = coordinates[index];\n        return {\n          ...coord,\n          arg: lerp(startCurCoord.arg, coord.arg, progress),\n          val: lerp(startCurCoord.val, coord.val, progress),\n          startVal: lerp(startCurCoord.startVal, coord.startVal, progress),\n        };\n      }),\n    };\n  };\n};\n\n/** @internal */\nexport const processPieAnimation = (start: PieCoordinates, end: PieCoordinates) => {\n  return (progress: number) => {\n    return {\n      innerRadius: lerp(start.innerRadius, end.innerRadius, progress),\n      outerRadius: lerp(start.outerRadius, end.outerRadius, progress),\n      startAngle: lerp(start.startAngle, end.startAngle, progress),\n      endAngle: lerp(start.endAngle, end.endAngle, progress),\n    };\n  };\n};\n"],"names":["d3ScaleLinear","d3ScaleBand","extent","_a","area","line","curveMonotoneX","curveMonotoneY","pie","symbol","symbolCircle","arc","stack","scaleBand","getStartVal","getRect","hasWindow"],"mappings":"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"}