{"version":3,"file":"static/chunks/29865-052e0bb6d64f4855.js","sources":["webpack://_N_E/./node_modules/d3-color/src/color.js","webpack://_N_E/./node_modules/d3-color/src/define.js","webpack://_N_E/./node_modules/d3-interpolate/src/color.js","webpack://_N_E/./node_modules/d3-interpolate/src/constant.js","webpack://_N_E/./node_modules/d3-interpolate/src/number.js","webpack://_N_E/./node_modules/d3-interpolate/src/basis.js","webpack://_N_E/./node_modules/d3-interpolate/src/rgb.js","webpack://_N_E/./node_modules/d3-interpolate/src/basisClosed.js","webpack://_N_E/./node_modules/d3-interpolate/src/array.js","webpack://_N_E/./node_modules/d3-interpolate/src/date.js","webpack://_N_E/./node_modules/d3-interpolate/src/object.js","webpack://_N_E/./node_modules/d3-interpolate/src/string.js","webpack://_N_E/./node_modules/d3-interpolate/src/numberArray.js","webpack://_N_E/./node_modules/d3-interpolate/src/value.js","webpack://_N_E/./node_modules/delaunator/delaunator.js","webpack://_N_E/./node_modules/delaunay-find/lib/index.js","webpack://_N_E/./node_modules/lodash/_apply.js","webpack://_N_E/./node_modules/lodash/_arrayAggregator.js","webpack://_N_E/./node_modules/lodash/_arrayIncludes.js","webpack://_N_E/./node_modules/lodash/_arrayIncludesWith.js","webpack://_N_E/./node_modules/lodash/_assignValue.js","webpack://_N_E/./node_modules/lodash/_baseAggregator.js","webpack://_N_E/./node_modules/lodash/_baseDifference.js","webpack://_N_E/./node_modules/lodash/_baseEach.js","webpack://_N_E/./node_modules/lodash/_baseFindIndex.js","webpack://_N_E/./node_modules/lodash/_baseFlatten.js","webpack://_N_E/./node_modules/lodash/_baseIndexOf.js","webpack://_N_E/./node_modules/lodash/_baseInverter.js","webpack://_N_E/./node_modules/lodash/_baseIsNaN.js","webpack://_N_E/./node_modules/lodash/_baseIsRegExp.js","webpack://_N_E/./node_modules/lodash/_baseKeysIn.js","webpack://_N_E/./node_modules/lodash/_baseMap.js","webpack://_N_E/./node_modules/lodash/_baseOrderBy.js","webpack://_N_E/./node_modules/lodash/_basePick.js","webpack://_N_E/./node_modules/lodash/_basePickBy.js","webpack://_N_E/./node_modules/lodash/_baseRange.js","webpack://_N_E/./node_modules/lodash/_baseRest.js","webpack://_N_E/./node_modules/lodash/_baseSet.js","webpack://_N_E/./node_modules/lodash/_baseSetToString.js","webpack://_N_E/./node_modules/lodash/_baseSome.js","webpack://_N_E/./node_modules/lodash/_baseSortBy.js","webpack://_N_E/./node_modules/lodash/_baseSortedUniq.js","webpack://_N_E/./node_modules/lodash/_baseTrim.js","webpack://_N_E/./node_modules/lodash/_baseUniq.js","webpack://_N_E/./node_modules/lodash/_baseValues.js","webpack://_N_E/./node_modules/lodash/_compareAscending.js","webpack://_N_E/./node_modules/lodash/_compareMultiple.js","webpack://_N_E/./node_modules/lodash/_copyObject.js","webpack://_N_E/./node_modules/lodash/_createAggregator.js","webpack://_N_E/./node_modules/lodash/_createAssigner.js","webpack://_N_E/./node_modules/lodash/_createBaseEach.js","webpack://_N_E/./node_modules/lodash/_createFind.js","webpack://_N_E/./node_modules/lodash/_createInverter.js","webpack://_N_E/./node_modules/lodash/_createRange.js","webpack://_N_E/./node_modules/lodash/_createSet.js","webpack://_N_E/./node_modules/lodash/_flatRest.js","webpack://_N_E/./node_modules/lodash/_getAllKeysIn.js","webpack://_N_E/./node_modules/lodash/_getPrototype.js","webpack://_N_E/./node_modules/lodash/_getSymbolsIn.js","webpack://_N_E/./node_modules/lodash/_isFlattenable.js","webpack://_N_E/./node_modules/lodash/_isIterateeCall.js","webpack://_N_E/./node_modules/lodash/_nativeKeysIn.js","webpack://_N_E/./node_modules/lodash/_overRest.js","webpack://_N_E/./node_modules/lodash/_setToString.js","webpack://_N_E/./node_modules/lodash/_shortOut.js","webpack://_N_E/./node_modules/lodash/_strictIndexOf.js","webpack://_N_E/./node_modules/lodash/_trimmedEndIndex.js","webpack://_N_E/./node_modules/lodash/assign.js","webpack://_N_E/./node_modules/lodash/constant.js","webpack://_N_E/./node_modules/lodash/debounce.js","webpack://_N_E/./node_modules/lodash/defaults.js","webpack://_N_E/./node_modules/lodash/find.js","webpack://_N_E/./node_modules/lodash/findIndex.js","webpack://_N_E/./node_modules/lodash/flatten.js","webpack://_N_E/./node_modules/lodash/fromPairs.js","webpack://_N_E/./node_modules/lodash/groupBy.js","webpack://_N_E/./node_modules/lodash/includes.js","webpack://_N_E/./node_modules/lodash/invert.js","webpack://_N_E/./node_modules/lodash/isArrayLikeObject.js","webpack://_N_E/./node_modules/lodash/isEmpty.js","webpack://_N_E/./node_modules/lodash/isEqual.js","webpack://_N_E/./node_modules/lodash/isNil.js","webpack://_N_E/./node_modules/lodash/isPlainObject.js","webpack://_N_E/./node_modules/lodash/isRegExp.js","webpack://_N_E/./node_modules/lodash/isString.js","webpack://_N_E/./node_modules/lodash/keysIn.js","webpack://_N_E/./node_modules/lodash/last.js","webpack://_N_E/./node_modules/lodash/noop.js","webpack://_N_E/./node_modules/lodash/now.js","webpack://_N_E/./node_modules/lodash/orderBy.js","webpack://_N_E/./node_modules/lodash/pick.js","webpack://_N_E/./node_modules/lodash/pickBy.js","webpack://_N_E/./node_modules/lodash/range.js","webpack://_N_E/./node_modules/lodash/some.js","webpack://_N_E/./node_modules/lodash/sortedUniq.js","webpack://_N_E/./node_modules/lodash/throttle.js","webpack://_N_E/./node_modules/lodash/toFinite.js","webpack://_N_E/./node_modules/lodash/toInteger.js","webpack://_N_E/./node_modules/lodash/toNumber.js","webpack://_N_E/./node_modules/lodash/uniq.js","webpack://_N_E/./node_modules/lodash/uniqBy.js","webpack://_N_E/./node_modules/lodash/uniqueId.js","webpack://_N_E/./node_modules/lodash/values.js","webpack://_N_E/./node_modules/lodash/without.js","webpack://_N_E/./node_modules/react-fast-compare/index.js","webpack://_N_E/./node_modules/reselect/es/defaultMemoize.js","webpack://_N_E/./node_modules/reselect/es/index.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/axis.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/wrapper.js","webpack://_N_E/./node_modules/victory-shared-events/es/victory-shared-events.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/line.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/line-segment.js","webpack://_N_E/./node_modules/victory-axis/es/helper-methods.js","webpack://_N_E/./node_modules/victory-axis/es/victory-axis.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/arc.js","webpack://_N_E/./node_modules/victory-polar-axis/es/helper-methods.js","webpack://_N_E/./node_modules/victory-polar-axis/es/victory-polar-axis.js","webpack://_N_E/./node_modules/victory-chart/es/helper-methods.js","webpack://_N_E/./node_modules/victory-chart/es/victory-chart.js","webpack://_N_E/./node_modules/victory-core/es/victory-portal/portal.js","webpack://_N_E/./node_modules/victory-core/es/victory-container/victory-container.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/tspan.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/text.js","webpack://_N_E/./node_modules/victory-core/es/victory-label/victory-label.js","webpack://_N_E/./node_modules/victory-core/es/victory-portal/victory-portal.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/path.js","webpack://_N_E/./node_modules/victory-core/es/victory-theme/material.js","webpack://_N_E/./node_modules/victory-core/es/victory-theme/grayscale.js","webpack://_N_E/./node_modules/victory-core/es/victory-theme/victory-theme.js","webpack://_N_E/./node_modules/d3-ease/src/linear.js","webpack://_N_E/./node_modules/d3-ease/src/quad.js","webpack://_N_E/./node_modules/d3-ease/src/cubic.js","webpack://_N_E/./node_modules/d3-ease/src/poly.js","webpack://_N_E/./node_modules/d3-ease/src/sin.js","webpack://_N_E/./node_modules/d3-ease/src/math.js","webpack://_N_E/./node_modules/d3-ease/src/exp.js","webpack://_N_E/./node_modules/d3-ease/src/circle.js","webpack://_N_E/./node_modules/d3-ease/src/bounce.js","webpack://_N_E/./node_modules/d3-ease/src/back.js","webpack://_N_E/./node_modules/d3-ease/src/elastic.js","webpack://_N_E/./node_modules/victory-core/es/victory-animation/util.js","webpack://_N_E/./node_modules/victory-core/es/victory-animation/victory-animation.js","webpack://_N_E/./node_modules/victory-core/es/victory-transition/victory-transition.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/add-events.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/collection.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/common-props.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/immutable.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/data.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/domain.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/events.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/helpers.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/label-helpers.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/log.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/prop-types.js","webpack://_N_E/./node_modules/d3-array/src/ascending.js","webpack://_N_E/./node_modules/d3-array/src/bisector.js","webpack://_N_E/./node_modules/d3-array/src/bisect.js","webpack://_N_E/./node_modules/d3-array/src/array.js","webpack://_N_E/./node_modules/d3-array/src/ticks.js","webpack://_N_E/./node_modules/d3-array/src/number.js","webpack://_N_E/./node_modules/d3-array/src/quantile.js","webpack://_N_E/./node_modules/d3-collection/src/map.js","webpack://_N_E/./node_modules/d3-collection/src/set.js","webpack://_N_E/./node_modules/d3-scale/src/array.js","webpack://_N_E/./node_modules/d3-scale/src/ordinal.js","webpack://_N_E/./node_modules/d3-scale/src/band.js","webpack://_N_E/./node_modules/d3-array/src/range.js","webpack://_N_E/./node_modules/d3-interpolate/src/round.js","webpack://_N_E/./node_modules/d3-scale/src/constant.js","webpack://_N_E/./node_modules/d3-scale/src/number.js","webpack://_N_E/./node_modules/d3-scale/src/continuous.js","webpack://_N_E/./node_modules/d3-format/src/formatSpecifier.js","webpack://_N_E/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://_N_E/./node_modules/d3-format/src/formatDecimal.js","webpack://_N_E/./node_modules/d3-format/src/exponent.js","webpack://_N_E/./node_modules/d3-format/src/formatRounded.js","webpack://_N_E/./node_modules/d3-format/src/formatTypes.js","webpack://_N_E/./node_modules/d3-format/src/identity.js","webpack://_N_E/./node_modules/d3-format/src/locale.js","webpack://_N_E/./node_modules/d3-format/src/defaultLocale.js","webpack://_N_E/./node_modules/d3-format/src/formatGroup.js","webpack://_N_E/./node_modules/d3-format/src/formatNumerals.js","webpack://_N_E/./node_modules/d3-format/src/formatTrim.js","webpack://_N_E/./node_modules/d3-scale/src/tickFormat.js","webpack://_N_E/./node_modules/d3-format/src/precisionPrefix.js","webpack://_N_E/./node_modules/d3-format/src/precisionRound.js","webpack://_N_E/./node_modules/d3-format/src/precisionFixed.js","webpack://_N_E/./node_modules/d3-scale/src/linear.js","webpack://_N_E/./node_modules/d3-scale/src/identity.js","webpack://_N_E/./node_modules/d3-scale/src/nice.js","webpack://_N_E/./node_modules/d3-scale/src/log.js","webpack://_N_E/./node_modules/d3-scale/src/pow.js","webpack://_N_E/./node_modules/d3-scale/src/quantile.js","webpack://_N_E/./node_modules/d3-scale/src/quantize.js","webpack://_N_E/./node_modules/d3-scale/src/threshold.js","webpack://_N_E/./node_modules/d3-time/src/interval.js","webpack://_N_E/./node_modules/d3-time/src/year.js","webpack://_N_E/./node_modules/d3-time/src/month.js","webpack://_N_E/./node_modules/d3-time/src/duration.js","webpack://_N_E/./node_modules/d3-time/src/week.js","webpack://_N_E/./node_modules/d3-time/src/day.js","webpack://_N_E/./node_modules/d3-time/src/hour.js","webpack://_N_E/./node_modules/d3-time/src/minute.js","webpack://_N_E/./node_modules/d3-time/src/second.js","webpack://_N_E/./node_modules/d3-time/src/millisecond.js","webpack://_N_E/./node_modules/d3-time/src/utcWeek.js","webpack://_N_E/./node_modules/d3-time/src/utcDay.js","webpack://_N_E/./node_modules/d3-time/src/utcYear.js","webpack://_N_E/./node_modules/d3-time-format/src/locale.js","webpack://_N_E/./node_modules/d3-time-format/src/defaultLocale.js","webpack://_N_E/./node_modules/d3-scale/src/time.js","webpack://_N_E/./node_modules/d3-time/src/utcMonth.js","webpack://_N_E/./node_modules/d3-time/src/utcHour.js","webpack://_N_E/./node_modules/d3-time/src/utcMinute.js","webpack://_N_E/./node_modules/d3-scale/src/utcTime.js","webpack://_N_E/./node_modules/d3-scale/src/colors.js","webpack://_N_E/./node_modules/d3-scale/src/category10.js","webpack://_N_E/./node_modules/d3-scale/src/category20b.js","webpack://_N_E/./node_modules/d3-scale/src/category20c.js","webpack://_N_E/./node_modules/d3-scale/src/category20.js","webpack://_N_E/./node_modules/d3-color/src/math.js","webpack://_N_E/./node_modules/d3-color/src/cubehelix.js","webpack://_N_E/./node_modules/d3-interpolate/src/cubehelix.js","webpack://_N_E/./node_modules/d3-scale/src/cubehelix.js","webpack://_N_E/./node_modules/d3-scale/src/rainbow.js","webpack://_N_E/./node_modules/d3-scale/src/viridis.js","webpack://_N_E/./node_modules/d3-scale/src/sequential.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/scale.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/style.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/textsize.js","webpack://_N_E/./node_modules/d3-timer/src/timer.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/timer.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/transitions.js","webpack://_N_E/./node_modules/victory-line/es/helper-methods.js","webpack://_N_E/./node_modules/d3-shape/src/curve/linear.js","webpack://_N_E/./node_modules/d3-shape/src/curve/radial.js","webpack://_N_E/./node_modules/d3-path/src/path.js","webpack://_N_E/./node_modules/d3-shape/src/constant.js","webpack://_N_E/./node_modules/d3-shape/src/point.js","webpack://_N_E/./node_modules/d3-shape/src/line.js","webpack://_N_E/./node_modules/d3-shape/src/lineRadial.js","webpack://_N_E/./node_modules/d3-shape/src/math.js","webpack://_N_E/./node_modules/d3-shape/src/arc.js","webpack://_N_E/./node_modules/d3-shape/src/area.js","webpack://_N_E/./node_modules/d3-shape/src/descending.js","webpack://_N_E/./node_modules/d3-shape/src/identity.js","webpack://_N_E/./node_modules/d3-shape/src/pie.js","webpack://_N_E/./node_modules/d3-shape/src/areaRadial.js","webpack://_N_E/./node_modules/d3-shape/src/pointRadial.js","webpack://_N_E/./node_modules/d3-shape/src/array.js","webpack://_N_E/./node_modules/d3-shape/src/link/index.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/circle.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/cross.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/diamond.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/star.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/square.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/triangle.js","webpack://_N_E/./node_modules/d3-shape/src/symbol/wye.js","webpack://_N_E/./node_modules/d3-shape/src/symbol.js","webpack://_N_E/./node_modules/d3-shape/src/noop.js","webpack://_N_E/./node_modules/d3-shape/src/curve/basis.js","webpack://_N_E/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://_N_E/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://_N_E/./node_modules/d3-shape/src/curve/bundle.js","webpack://_N_E/./node_modules/d3-shape/src/curve/cardinal.js","webpack://_N_E/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://_N_E/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://_N_E/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://_N_E/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://_N_E/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://_N_E/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://_N_E/./node_modules/d3-shape/src/curve/monotone.js","webpack://_N_E/./node_modules/d3-shape/src/curve/natural.js","webpack://_N_E/./node_modules/d3-shape/src/curve/step.js","webpack://_N_E/./node_modules/d3-shape/src/offset/none.js","webpack://_N_E/./node_modules/d3-shape/src/order/none.js","webpack://_N_E/./node_modules/d3-shape/src/stack.js","webpack://_N_E/./node_modules/d3-shape/src/offset/expand.js","webpack://_N_E/./node_modules/d3-shape/src/offset/diverging.js","webpack://_N_E/./node_modules/d3-shape/src/offset/silhouette.js","webpack://_N_E/./node_modules/d3-shape/src/offset/wiggle.js","webpack://_N_E/./node_modules/d3-shape/src/order/appearance.js","webpack://_N_E/./node_modules/d3-shape/src/order/ascending.js","webpack://_N_E/./node_modules/d3-shape/src/order/descending.js","webpack://_N_E/./node_modules/d3-shape/src/order/insideOut.js","webpack://_N_E/./node_modules/d3-shape/src/order/reverse.js","webpack://_N_E/./node_modules/victory-line/es/curve.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/default-transitions.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/clip-path.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/circle.js","webpack://_N_E/./node_modules/victory-core/es/victory-primitives/rect.js","webpack://_N_E/./node_modules/victory-core/es/victory-clip-container/victory-clip-container.js","webpack://_N_E/./node_modules/victory-line/es/victory-line.js","webpack://_N_E/./node_modules/victory-tooltip/es/flyout.js","webpack://_N_E/./node_modules/victory-tooltip/es/victory-tooltip.js","webpack://_N_E/./node_modules/victory-core/es/victory-util/selection.js","webpack://_N_E/./node_modules/victory-voronoi-container/es/voronoi-helpers.js","webpack://_N_E/./node_modules/victory-voronoi-container/es/victory-voronoi-container.js"],"sourceRoot":"","sourcesContent":["import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Delaunator = factory());\n}(this, function () { 'use strict';\n\n var EPSILON = Math.pow(2, -52);\n var EDGE_STACK = new Uint32Array(512);\n\n var Delaunator = function Delaunator(coords) {\n var n = coords.length >> 1;\n if (n > 0 && typeof coords[0] !== 'number') { throw new Error('Expected coords to contain numbers.'); }\n\n this.coords = coords;\n\n // arrays that will store the triangulation graph\n var maxTriangles = Math.max(2 * n - 5, 0);\n this._triangles = new Uint32Array(maxTriangles * 3);\n this._halfedges = new Int32Array(maxTriangles * 3);\n\n // temporary arrays for tracking the edges of the advancing convex hull\n this._hashSize = Math.ceil(Math.sqrt(n));\n this._hullPrev = new Uint32Array(n); // edge to prev edge\n this._hullNext = new Uint32Array(n); // edge to next edge\n this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n // temporary arrays for sorting points\n this._ids = new Uint32Array(n);\n this._dists = new Float64Array(n);\n\n this.update();\n };\n\n Delaunator.from = function from (points, getX, getY) {\n if ( getX === void 0 ) getX = defaultGetX;\n if ( getY === void 0 ) getY = defaultGetY;\n\n var n = points.length;\n var coords = new Float64Array(n * 2);\n\n for (var i = 0; i < n; i++) {\n var p = points[i];\n coords[2 * i] = getX(p);\n coords[2 * i + 1] = getY(p);\n }\n\n return new Delaunator(coords);\n };\n\n Delaunator.prototype.update = function update () {\n var ref = this;\n var coords = ref.coords;\n var hullPrev = ref._hullPrev;\n var hullNext = ref._hullNext;\n var hullTri = ref._hullTri;\n var hullHash = ref._hullHash;\n var n = coords.length >> 1;\n\n // populate an array of point indices; calculate input data bbox\n var minX = Infinity;\n var minY = Infinity;\n var maxX = -Infinity;\n var maxY = -Infinity;\n\n for (var i = 0; i < n; i++) {\n var x = coords[2 * i];\n var y = coords[2 * i + 1];\n if (x < minX) { minX = x; }\n if (y < minY) { minY = y; }\n if (x > maxX) { maxX = x; }\n if (y > maxY) { maxY = y; }\n this._ids[i] = i;\n }\n var cx = (minX + maxX) / 2;\n var cy = (minY + maxY) / 2;\n\n var minDist = Infinity;\n var i0, i1, i2;\n\n // pick a seed point close to the center\n for (var i$1 = 0; i$1 < n; i$1++) {\n var d = dist(cx, cy, coords[2 * i$1], coords[2 * i$1 + 1]);\n if (d < minDist) {\n i0 = i$1;\n minDist = d;\n }\n }\n var i0x = coords[2 * i0];\n var i0y = coords[2 * i0 + 1];\n\n minDist = Infinity;\n\n // find the point closest to the seed\n for (var i$2 = 0; i$2 < n; i$2++) {\n if (i$2 === i0) { continue; }\n var d$1 = dist(i0x, i0y, coords[2 * i$2], coords[2 * i$2 + 1]);\n if (d$1 < minDist && d$1 > 0) {\n i1 = i$2;\n minDist = d$1;\n }\n }\n var i1x = coords[2 * i1];\n var i1y = coords[2 * i1 + 1];\n\n var minRadius = Infinity;\n\n // find the third point which forms the smallest circumcircle with the first two\n for (var i$3 = 0; i$3 < n; i$3++) {\n if (i$3 === i0 || i$3 === i1) { continue; }\n var r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i$3], coords[2 * i$3 + 1]);\n if (r < minRadius) {\n i2 = i$3;\n minRadius = r;\n }\n }\n var i2x = coords[2 * i2];\n var i2y = coords[2 * i2 + 1];\n\n if (minRadius === Infinity) {\n // order collinear points by dx (or dy if all x are identical)\n // and return the list as a hull\n for (var i$4 = 0; i$4 < n; i$4++) {\n this._dists[i$4] = (coords[2 * i$4] - coords[0]) || (coords[2 * i$4 + 1] - coords[1]);\n }\n quicksort(this._ids, this._dists, 0, n - 1);\n var hull = new Uint32Array(n);\n var j = 0;\n for (var i$5 = 0, d0 = -Infinity; i$5 < n; i$5++) {\n var id = this._ids[i$5];\n if (this._dists[id] > d0) {\n hull[j++] = id;\n d0 = this._dists[id];\n }\n }\n this.hull = hull.subarray(0, j);\n this.triangles = new Uint32Array(0);\n this.halfedges = new Uint32Array(0);\n return;\n }\n\n // swap the order of the seed points for counter-clockwise orientation\n if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n var i$6 = i1;\n var x$1 = i1x;\n var y$1 = i1y;\n i1 = i2;\n i1x = i2x;\n i1y = i2y;\n i2 = i$6;\n i2x = x$1;\n i2y = y$1;\n }\n\n var center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n this._cx = center.x;\n this._cy = center.y;\n\n for (var i$7 = 0; i$7 < n; i$7++) {\n this._dists[i$7] = dist(coords[2 * i$7], coords[2 * i$7 + 1], center.x, center.y);\n }\n\n // sort the points by distance from the seed triangle circumcenter\n quicksort(this._ids, this._dists, 0, n - 1);\n\n // set up the seed triangle as the starting hull\n this._hullStart = i0;\n var hullSize = 3;\n\n hullNext[i0] = hullPrev[i2] = i1;\n hullNext[i1] = hullPrev[i0] = i2;\n hullNext[i2] = hullPrev[i1] = i0;\n\n hullTri[i0] = 0;\n hullTri[i1] = 1;\n hullTri[i2] = 2;\n\n hullHash.fill(-1);\n hullHash[this._hashKey(i0x, i0y)] = i0;\n hullHash[this._hashKey(i1x, i1y)] = i1;\n hullHash[this._hashKey(i2x, i2y)] = i2;\n\n this.trianglesLen = 0;\n this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n for (var k = 0, xp = (void 0), yp = (void 0); k < this._ids.length; k++) {\n var i$8 = this._ids[k];\n var x$2 = coords[2 * i$8];\n var y$2 = coords[2 * i$8 + 1];\n\n // skip near-duplicate points\n if (k > 0 && Math.abs(x$2 - xp) <= EPSILON && Math.abs(y$2 - yp) <= EPSILON) { continue; }\n xp = x$2;\n yp = y$2;\n\n // skip seed triangle points\n if (i$8 === i0 || i$8 === i1 || i$8 === i2) { continue; }\n\n // find a visible edge on the convex hull using edge hash\n var start = 0;\n for (var j$1 = 0, key = this._hashKey(x$2, y$2); j$1 < this._hashSize; j$1++) {\n start = hullHash[(key + j$1) % this._hashSize];\n if (start !== -1 && start !== hullNext[start]) { break; }\n }\n\n start = hullPrev[start];\n var e = start, q = (void 0);\n while (q = hullNext[e], !orient(x$2, y$2, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n e = q;\n if (e === start) {\n e = -1;\n break;\n }\n }\n if (e === -1) { continue; } // likely a near-duplicate point; skip it\n\n // add the first triangle from the point\n var t = this._addTriangle(e, i$8, hullNext[e], -1, -1, hullTri[e]);\n\n // recursively flip triangles from the point until they satisfy the Delaunay condition\n hullTri[i$8] = this._legalize(t + 2);\n hullTri[e] = t; // keep track of boundary triangles on the hull\n hullSize++;\n\n // walk forward through the hull, adding more triangles and flipping recursively\n var n$1 = hullNext[e];\n while (q = hullNext[n$1], orient(x$2, y$2, coords[2 * n$1], coords[2 * n$1 + 1], coords[2 * q], coords[2 * q + 1])) {\n t = this._addTriangle(n$1, i$8, q, hullTri[i$8], -1, hullTri[n$1]);\n hullTri[i$8] = this._legalize(t + 2);\n hullNext[n$1] = n$1; // mark as removed\n hullSize--;\n n$1 = q;\n }\n\n // walk backward from the other side, adding more triangles and flipping\n if (e === start) {\n while (q = hullPrev[e], orient(x$2, y$2, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n t = this._addTriangle(q, i$8, e, -1, hullTri[e], hullTri[q]);\n this._legalize(t + 2);\n hullTri[q] = t;\n hullNext[e] = e; // mark as removed\n hullSize--;\n e = q;\n }\n }\n\n // update the hull indices\n this._hullStart = hullPrev[i$8] = e;\n hullNext[e] = hullPrev[n$1] = i$8;\n hullNext[i$8] = n$1;\n\n // save the two new edges in the hash table\n hullHash[this._hashKey(x$2, y$2)] = i$8;\n hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n }\n\n this.hull = new Uint32Array(hullSize);\n for (var i$9 = 0, e$1 = this._hullStart; i$9 < hullSize; i$9++) {\n this.hull[i$9] = e$1;\n e$1 = hullNext[e$1];\n }\n\n // trim typed triangle mesh arrays\n this.triangles = this._triangles.subarray(0, this.trianglesLen);\n this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n };\n\n Delaunator.prototype._hashKey = function _hashKey (x, y) {\n return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n };\n\n Delaunator.prototype._legalize = function _legalize (a) {\n var ref = this;\n var triangles = ref._triangles;\n var halfedges = ref._halfedges;\n var coords = ref.coords;\n\n var i = 0;\n var ar = 0;\n\n // recursion eliminated with a fixed-size stack\n while (true) {\n var b = halfedges[a];\n\n /* if the pair of triangles doesn't satisfy the Delaunay condition\n * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n * then do the same check/flip recursively for the new pair of triangles\n *\n * pl pl\n * /||\\ / \\\n * al/ || \\bl al/\\a\n * / || \\ / \\\n * / a||b \\flip/___ar___\\\n * p0\\ || /p1 => p0\\---bl---/p1\n * \\ || / \\ /\n * ar\\ || /br b\\/br\n * \\||/ \\ /\n * pr pr\n */\n var a0 = a - a % 3;\n ar = a0 + (a + 2) % 3;\n\n if (b === -1) { // convex hull edge\n if (i === 0) { break; }\n a = EDGE_STACK[--i];\n continue;\n }\n\n var b0 = b - b % 3;\n var al = a0 + (a + 1) % 3;\n var bl = b0 + (b + 2) % 3;\n\n var p0 = triangles[ar];\n var pr = triangles[a];\n var pl = triangles[al];\n var p1 = triangles[bl];\n\n var illegal = inCircle(\n coords[2 * p0], coords[2 * p0 + 1],\n coords[2 * pr], coords[2 * pr + 1],\n coords[2 * pl], coords[2 * pl + 1],\n coords[2 * p1], coords[2 * p1 + 1]);\n\n if (illegal) {\n triangles[a] = p1;\n triangles[b] = p0;\n\n var hbl = halfedges[bl];\n\n // edge swapped on the other side of the hull (rare); fix the halfedge reference\n if (hbl === -1) {\n var e = this._hullStart;\n do {\n if (this._hullTri[e] === bl) {\n this._hullTri[e] = a;\n break;\n }\n e = this._hullPrev[e];\n } while (e !== this._hullStart);\n }\n this._link(a, hbl);\n this._link(b, halfedges[ar]);\n this._link(ar, bl);\n\n var br = b0 + (b + 1) % 3;\n\n // don't worry about hitting the cap: it can only happen on extremely degenerate input\n if (i < EDGE_STACK.length) {\n EDGE_STACK[i++] = br;\n }\n } else {\n if (i === 0) { break; }\n a = EDGE_STACK[--i];\n }\n }\n\n return ar;\n };\n\n Delaunator.prototype._link = function _link (a, b) {\n this._halfedges[a] = b;\n if (b !== -1) { this._halfedges[b] = a; }\n };\n\n // add a new triangle given vertex indices and adjacent half-edge ids\n Delaunator.prototype._addTriangle = function _addTriangle (i0, i1, i2, a, b, c) {\n var t = this.trianglesLen;\n\n this._triangles[t] = i0;\n this._triangles[t + 1] = i1;\n this._triangles[t + 2] = i2;\n\n this._link(t, a);\n this._link(t + 1, b);\n this._link(t + 2, c);\n\n this.trianglesLen += 3;\n\n return t;\n };\n\n // monotonically increases with real angle, but doesn't need expensive trigonometry\n function pseudoAngle(dx, dy) {\n var p = dx / (Math.abs(dx) + Math.abs(dy));\n return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n }\n\n function dist(ax, ay, bx, by) {\n var dx = ax - bx;\n var dy = ay - by;\n return dx * dx + dy * dy;\n }\n\n // return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\n function orientIfSure(px, py, rx, ry, qx, qy) {\n var l = (ry - py) * (qx - px);\n var r = (rx - px) * (qy - py);\n return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n }\n\n // a more robust orientation test that's stable in a given triangle (to fix robustness issues)\n function orient(rx, ry, qx, qy, px, py) {\n var sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n orientIfSure(rx, ry, qx, qy, px, py) ||\n orientIfSure(qx, qy, px, py, rx, ry);\n return sign < 0;\n }\n\n function inCircle(ax, ay, bx, by, cx, cy, px, py) {\n var dx = ax - px;\n var dy = ay - py;\n var ex = bx - px;\n var ey = by - py;\n var fx = cx - px;\n var fy = cy - py;\n\n var ap = dx * dx + dy * dy;\n var bp = ex * ex + ey * ey;\n var cp = fx * fx + fy * fy;\n\n return dx * (ey * cp - bp * fy) -\n dy * (ex * cp - bp * fx) +\n ap * (ex * fy - ey * fx) < 0;\n }\n\n function circumradius(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n\n var x = (ey * bl - dy * cl) * d;\n var y = (dx * cl - ex * bl) * d;\n\n return x * x + y * y;\n }\n\n function circumcenter(ax, ay, bx, by, cx, cy) {\n var dx = bx - ax;\n var dy = by - ay;\n var ex = cx - ax;\n var ey = cy - ay;\n\n var bl = dx * dx + dy * dy;\n var cl = ex * ex + ey * ey;\n var d = 0.5 / (dx * ey - dy * ex);\n\n var x = ax + (ey * bl - dy * cl) * d;\n var y = ay + (dx * cl - ex * bl) * d;\n\n return {x: x, y: y};\n }\n\n function quicksort(ids, dists, left, right) {\n if (right - left <= 20) {\n for (var i = left + 1; i <= right; i++) {\n var temp = ids[i];\n var tempDist = dists[temp];\n var j = i - 1;\n while (j >= left && dists[ids[j]] > tempDist) { ids[j + 1] = ids[j--]; }\n ids[j + 1] = temp;\n }\n } else {\n var median = (left + right) >> 1;\n var i$1 = left + 1;\n var j$1 = right;\n swap(ids, median, i$1);\n if (dists[ids[left]] > dists[ids[right]]) { swap(ids, left, right); }\n if (dists[ids[i$1]] > dists[ids[right]]) { swap(ids, i$1, right); }\n if (dists[ids[left]] > dists[ids[i$1]]) { swap(ids, left, i$1); }\n\n var temp$1 = ids[i$1];\n var tempDist$1 = dists[temp$1];\n while (true) {\n do { i$1++; } while (dists[ids[i$1]] < tempDist$1);\n do { j$1--; } while (dists[ids[j$1]] > tempDist$1);\n if (j$1 < i$1) { break; }\n swap(ids, i$1, j$1);\n }\n ids[left + 1] = ids[j$1];\n ids[j$1] = temp$1;\n\n if (right - i$1 + 1 >= j$1 - left) {\n quicksort(ids, dists, i$1, right);\n quicksort(ids, dists, left, j$1 - 1);\n } else {\n quicksort(ids, dists, left, j$1 - 1);\n quicksort(ids, dists, i$1, right);\n }\n }\n }\n\n function swap(arr, i, j) {\n var tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n\n function defaultGetX(p) {\n return p[0];\n }\n function defaultGetY(p) {\n return p[1];\n }\n\n return Delaunator;\n\n}));\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _delaunator = _interopRequireDefault(require(\"delaunator/delaunator.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// From https://github.com/d3/d3-delaunay/blob/master/src/delaunay.js\nfunction pointX(p) {\n return p[0];\n}\n\nfunction pointY(p) {\n return p[1];\n} // A triangulation is collinear if all its triangles have a non-null area\n\n\nfunction collinear(d) {\n var triangles = d.triangles,\n coords = d.coords;\n\n for (var i = 0; i < triangles.length; i += 3) {\n var a = 2 * triangles[i];\n var b = 2 * triangles[i + 1];\n var c = 2 * triangles[i + 2];\n var cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1]) - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]); // eslint-disable-next-line no-magic-numbers\n\n if (cross > 1e-10) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction jitter(x, y, r) {\n return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n} // eslint-disable-next-line max-params\n\n\nfunction flatArray(points, fx, fy, that) {\n var n = points.length;\n var array = new Float64Array(n * 2);\n\n for (var i = 0; i < n; ++i) {\n var p = points[i];\n array[i * 2] = fx.call(that, p, i, points);\n array[i * 2 + 1] = fy.call(that, p, i, points);\n }\n\n return array;\n}\n\nvar Delaunay =\n/*#__PURE__*/\nfunction () {\n function Delaunay(points) {\n var delaunator = new _delaunator[\"default\"](points);\n this.inedges = new Int32Array(points.length / 2);\n this._hullIndex = new Int32Array(points.length / 2);\n this.points = delaunator.coords;\n\n this._init(delaunator);\n } // eslint-disable-next-line max-statements, complexity\n\n\n var _proto = Delaunay.prototype;\n\n _proto._init = function _init(delaunator) {\n var d = delaunator;\n var points = this.points; // check for collinear\n // eslint-disable-next-line no-magic-numbers\n\n if (d.hull && d.hull.length > 2 && collinear(d)) {\n this.collinear = Int32Array.from({\n length: points.length / 2\n }, function (_, i) {\n return i;\n }).sort(function (i, j) {\n return points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1];\n }); // for exact neighbors\n\n var e = this.collinear[0];\n var f = this.collinear[this.collinear.length - 1];\n var bounds = [points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1]];\n var r = 1e-8 * // eslint-disable-line no-magic-numbers\n Math.sqrt(Math.pow(bounds[3] - bounds[1], 2) + Math.pow(bounds[2] - bounds[0], 2));\n\n for (var i = 0, n = points.length / 2; i < n; ++i) {\n var p = jitter(points[2 * i], points[2 * i + 1], r);\n points[2 * i] = p[0];\n points[2 * i + 1] = p[1];\n }\n\n delaunator = new _delaunator[\"default\"](points);\n }\n\n var halfedges = this.halfedges = delaunator.halfedges;\n var hull = this.hull = delaunator.hull;\n var triangles = this.triangles = delaunator.triangles;\n var inedges = this.inedges.fill(-1);\n\n var hullIndex = this._hullIndex.fill(-1); // Compute an index from each point to an (arbitrary) incoming halfedge\n // Used to give the first neighbor of each point; for this reason,\n // on the hull we give priority to exterior halfedges\n\n\n for (var _e = 0, _n = halfedges.length; _e < _n; ++_e) {\n var _p = triangles[_e % 3 === 2 ? _e - 2 : _e + 1];\n if (halfedges[_e] === -1 || inedges[_p] === -1) inedges[_p] = _e;\n }\n\n for (var _i = 0, _n2 = hull.length; _i < _n2; ++_i) {\n hullIndex[hull[_i]] = _i;\n } // degenerate case: 1 or 2 (distinct) points\n\n\n if (hull.length <= 2 && hull.length > 0) {\n this.triangles = new Int32Array(3).fill(-1);\n this.halfedges = new Int32Array(3).fill(-1);\n this.triangles[0] = hull[0];\n this.triangles[1] = hull[1];\n this.triangles[2] = hull[1];\n inedges[hull[0]] = 1;\n if (hull.length === 2) inedges[hull[1]] = 0;\n }\n } // eslint-disable-next-line max-statements\n ;\n\n _proto.neighbors = function neighbors(i) {\n var results = [];\n var inedges = this.inedges,\n hull = this.hull,\n _hullIndex = this._hullIndex,\n halfedges = this.halfedges,\n triangles = this.triangles;\n var e0 = inedges[i];\n if (e0 === -1) return results; // coincident point\n\n var e = e0;\n var p0 = -1;\n\n do {\n p0 = triangles[e];\n results.push(p0);\n e = e % 3 === 2 ? e - 2 : e + 1;\n if (triangles[e] !== i) break; // bad triangulation\n\n e = halfedges[e];\n\n if (e === -1) {\n var p = hull[(_hullIndex[i] + 1) % hull.length];\n if (p !== p0) results.push(p);\n break;\n }\n } while (e !== e0);\n\n return results;\n };\n\n _proto.find = function find(x, y, i) {\n if (i === void 0) {\n i = 0;\n }\n\n // eslint-disable-next-line no-self-compare\n if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n var i0 = i;\n var c;\n\n while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) {\n i = c;\n }\n\n return c;\n };\n\n _proto._step = function _step(i, x, y) {\n var inedges = this.inedges,\n points = this.points;\n if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n var c = i;\n var dc = Math.pow(x - points[i * 2], 2) + Math.pow(y - points[i * 2 + 1], 2);\n\n for (var _iterator = this.neighbors(i), _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref = _i2.value;\n }\n\n var t = _ref;\n var dt = Math.pow(x - points[t * 2], 2) + Math.pow(y - points[t * 2 + 1], 2);\n\n if (dt < dc) {\n dc = dt;\n c = t;\n }\n }\n\n return c;\n };\n\n return Delaunay;\n}(); // eslint-disable-next-line max-params\n\n\nexports[\"default\"] = Delaunay;\n\nDelaunay.from = function (points, fx, fy, that) {\n if (fx === void 0) {\n fx = pointX;\n }\n\n if (fy === void 0) {\n fy = pointY;\n }\n\n return new Delaunay(flatArray(points, fx, fy, that));\n}; // only public methods will be .from and .find","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseForOwn = require('./_baseForOwn');\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\nmodule.exports = baseInverter;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var eq = require('./eq');\n\n/**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n}\n\nmodule.exports = baseSortedUniq;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseInverter = require('./_baseInverter');\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\nmodule.exports = createInverter;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n}\n\nmodule.exports = fromPairs;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var constant = require('./constant'),\n createInverter = require('./_createInverter'),\n identity = require('./identity');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n}, constant(identity));\n\nmodule.exports = invert;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseSortedUniq = require('./_baseSortedUniq');\n\n/**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\nfunction sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n}\n\nmodule.exports = sortedUniq;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var baseDifference = require('./_baseDifference'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nmodule.exports = without;\n","'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element)\n return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message && error.message.match(/stack|recursion/i)) || (error.number === -2146828260)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","import _without from \"lodash/without\";\nimport _includes from \"lodash/includes\";\nimport _values from \"lodash/values\";\nimport _orderBy from \"lodash/orderBy\";\nimport _range from \"lodash/range\";\nimport _uniq from \"lodash/uniq\";\nimport _invert from \"lodash/invert\";\nimport _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _identity from \"lodash/identity\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint-disable func-style */\nimport React from \"react\";\nimport Collection from \"./collection\";\nimport Domain from \"./domain\";\nimport Helpers from \"./helpers\";\n/**\n * Returns the axis (x or y) of a particular axis component\n * @param {Object} props: the props object.\n * @param {Boolean} horizontal: true for horizontal charts\n * @returns {String} the dimension appropriate for the axis given its props\n */\n\nfunction getAxis(props) {\n var dependentAxis = props.dependentAxis;\n return dependentAxis ? \"y\" : \"x\";\n}\n/**\n * Returns all axis components that pass a given predicate\n * @param {Array} childComponents: an array of children\n * @param {Function} predicate: a predicate function that will be called with each\n * @returns {Array} all axis components that pass the given predicate or []\n */\n\n\nfunction findAxisComponents(childComponents, predicate) {\n predicate = predicate || _identity;\n\n var findAxes = function (children) {\n return children.reduce(function (memo, child) {\n if (child.type && child.type.role === \"axis\" && predicate(child)) {\n return memo.concat(child);\n } else if (child.props && child.props.children) {\n return memo.concat(findAxes(React.Children.toArray(child.props.children)));\n }\n\n return memo;\n }, []);\n };\n\n return findAxes(childComponents);\n}\n/**\n * Returns a single axis component of the desired axis type (x or y)\n * @param {Array} childComponents: an array of children\n * @param {String} axis: desired axis either \"x\" or \"y\".\n * @returns {ReactComponent} an axis component of the desired axis or undefined\n */\n\n\nfunction getAxisComponent(childComponents, axis) {\n var matchesAxis = function (component) {\n var type = component.type.getAxis(component.props);\n return type === axis;\n };\n\n return findAxisComponents(childComponents, matchesAxis)[0];\n}\n/**\n * Returns all axis components of the desired axis type (x or y) along with any\n * parent components excluding VictoryChart\n * @param {Array} childComponents: an optional array of children.\n * @param {String} type: desired axis either \"dependent\" or \"independent\".\n * @returns {ReactComponent} an axis component of the desired type or undefined\n */\n\n\nfunction getAxisComponentsWithParent(childComponents, type) {\n var matchesType = function (child) {\n return type === \"dependent\" ? child.props.dependentAxis : !child.props.dependentAxis;\n };\n\n var findComponents = function (children) {\n return children.reduce(function (memo, child) {\n if (child.type && child.type.role === \"axis\" && matchesType(child)) {\n return memo.concat(child);\n } else if (child.props && child.props.children) {\n var childAxis = findComponents(React.Children.toArray(child.props.children));\n return childAxis.length > 0 ? memo.concat(child) : memo;\n }\n\n return memo;\n }, []);\n };\n\n return findComponents(childComponents);\n}\n\nfunction getOrigin(domain) {\n var getSingleOrigin = function (d) {\n var domainMin = Math.min.apply(Math, _toConsumableArray(d));\n var domainMax = Math.max.apply(Math, _toConsumableArray(d));\n return domainMax < 0 ? domainMax : Math.max(0, domainMin);\n };\n\n return {\n x: Collection.containsDates(domain.x) ? new Date(Math.min.apply(Math, _toConsumableArray(domain.x))) : getSingleOrigin(domain.x),\n y: Collection.containsDates(domain.y) ? new Date(Math.min.apply(Math, _toConsumableArray(domain.y))) : getSingleOrigin(domain.y)\n };\n}\n\nfunction getOriginSign(origin, domain) {\n var getSign = function () {\n return origin <= 0 && Math.max.apply(Math, _toConsumableArray(domain)) <= 0 ? \"negative\" : \"positive\";\n };\n\n return Collection.containsDates(domain) ? \"positive\" : getSign();\n}\n/**\n * @param {Object} props: axis component props\n * @returns {Boolean} true when the axis is vertical\n */\n\n\nfunction isVertical(props) {\n var orientation = props.orientation || (props.dependentAxis ? \"left\" : \"bottom\");\n var vertical = {\n top: false,\n bottom: false,\n left: true,\n right: true\n };\n return vertical[orientation];\n}\n/**\n * @param {Object} props: axis component props\n * @returns {Boolean} true when tickValues contain strings\n */\n\n\nfunction stringTicks(props) {\n return props.tickValues !== undefined && Collection.containsStrings(props.tickValues);\n}\n\nfunction getDefaultTickFormat(props) {\n var tickValues = props.tickValues;\n var axis = getAxis(props);\n var stringMap = props.stringMap && props.stringMap[axis];\n var fallbackFormat = tickValues && !Collection.containsDates(tickValues) ? function (x) {\n return x;\n } : undefined;\n\n if (!stringMap) {\n return stringTicks(props) ? function (x, index) {\n return tickValues[index];\n } : fallbackFormat;\n } else {\n var invertedStringMap = stringMap && _invert(stringMap);\n\n var tickValueArray = _orderBy(_values(stringMap), function (n) {\n return n;\n });\n\n var dataNames = tickValueArray.map(function (tick) {\n return invertedStringMap[tick];\n }); // string ticks should have one tick of padding at the beginning\n\n var dataTicks = [\"\"].concat(_toConsumableArray(dataNames), [\"\"]);\n return function (x) {\n return dataTicks[x];\n };\n }\n}\n\nfunction getTickFormat(props, scale) {\n var tickFormat = props.tickFormat;\n var axis = getAxis(props);\n var stringMap = props.stringMap && props.stringMap[axis];\n\n if (!tickFormat) {\n var defaultTickFormat = getDefaultTickFormat(props);\n var scaleTickFormat = scale.tickFormat && _isFunction(scale.tickFormat) ? scale.tickFormat() : function (x) {\n return x;\n };\n return defaultTickFormat || scaleTickFormat;\n } else if (tickFormat && Array.isArray(tickFormat)) {\n return function (x, index) {\n return tickFormat[index];\n };\n } else if (tickFormat && _isFunction(tickFormat)) {\n var applyStringTicks = function (tick, index, ticks) {\n var invertedStringMap = _invert(stringMap);\n\n var stringTickArray = ticks.map(function (t) {\n return invertedStringMap[t];\n });\n return props.tickFormat(invertedStringMap[tick], index, stringTickArray);\n };\n\n return stringMap ? applyStringTicks : tickFormat;\n } else {\n return function (x) {\n return x;\n };\n }\n}\n\nfunction getStringTicks(props) {\n var axis = getAxis(props);\n var stringMap = props.stringMap && props.stringMap[axis];\n var categories = Array.isArray(props.categories) ? props.categories : props.categories && props.categories[axis];\n var ticksFromCategories = categories && Collection.containsOnlyStrings(categories) ? categories.map(function (tick) {\n return stringMap[tick];\n }) : undefined;\n\n var ticksFromStringMap = stringMap && _values(stringMap);\n\n return ticksFromCategories && ticksFromCategories.length !== 0 ? ticksFromCategories : ticksFromStringMap;\n}\n\nfunction getTickArray(props) {\n var tickValues = props.tickValues,\n tickFormat = props.tickFormat;\n var axis = getAxis(props);\n var stringMap = props.stringMap && props.stringMap[axis];\n\n var getTicksFromFormat = function () {\n if (!tickFormat || !Array.isArray(tickFormat)) {\n return undefined;\n }\n\n return Collection.containsStrings(tickFormat) ? tickFormat.map(function (t, i) {\n return i;\n }) : tickFormat;\n };\n\n var ticks = tickValues;\n\n if (stringMap) {\n ticks = getStringTicks(props);\n }\n\n if (tickValues && Collection.containsStrings(tickValues)) {\n ticks = stringMap ? tickValues.map(function (tick) {\n return stringMap[tick];\n }) : _range(1, tickValues.length + 1);\n }\n\n var tickArray = ticks ? _uniq(ticks) : getTicksFromFormat(props);\n\n var filterArray = function (arr) {\n var domain = props.domain && props.domain[axis] || props.domain;\n return Array.isArray(domain) ? arr.filter(function (t) {\n return t >= Math.min.apply(Math, _toConsumableArray(domain)) && t <= Math.max.apply(Math, _toConsumableArray(domain));\n }) : arr;\n };\n\n return Array.isArray(tickArray) && tickArray.length ? filterArray(tickArray) : undefined;\n}\n\nfunction downsampleTicks(ticks, tickCount) {\n if (!tickCount || !Array.isArray(ticks) || ticks.length <= tickCount) {\n return ticks;\n }\n\n var k = Math.floor(ticks.length / tickCount);\n return ticks.filter(function (d, i) {\n return i % k === 0;\n });\n}\n\nfunction getTicks(props, scale, filterZero) {\n var tickCount = props.tickCount;\n var tickValues = getTickArray(props);\n\n if (tickValues) {\n return downsampleTicks(tickValues, tickCount);\n } else if (scale.ticks && _isFunction(scale.ticks)) {\n // eslint-disable-next-line no-magic-numbers\n var defaultTickCount = tickCount || 5;\n var scaleTicks = scale.ticks(defaultTickCount);\n var tickArray = Array.isArray(scaleTicks) && scaleTicks.length ? scaleTicks : scale.domain();\n var ticks = downsampleTicks(tickArray, tickCount);\n\n if (filterZero) {\n var filteredTicks = _includes(ticks, 0) ? _without(ticks, 0) : ticks;\n return filteredTicks.length ? filteredTicks : ticks;\n }\n\n return ticks;\n }\n\n return scale.domain();\n}\n/**\n * Returns a domain based tickValues\n * @param {Object} props: the props object\n * @param {String} axis: either x or y\n * @returns {Array} returns a domain from tickValues\n */\n//eslint-disable-next-line max-statements\n\n\nfunction getDomainFromData(props, axis) {\n var polar = props.polar,\n _props$startAngle = props.startAngle,\n startAngle = _props$startAngle === void 0 ? 0 : _props$startAngle,\n _props$endAngle = props.endAngle,\n endAngle = _props$endAngle === void 0 ? 360 : _props$endAngle;\n var tickValues = getTickArray(props);\n\n if (!Array.isArray(tickValues)) {\n return undefined;\n }\n\n var minDomain = Domain.getMinFromProps(props, axis);\n var maxDomain = Domain.getMaxFromProps(props, axis);\n var tickStrings = stringTicks(props);\n var ticks = tickValues.map(function (value) {\n return +value;\n });\n var defaultMin = tickStrings ? 1 : Collection.getMinValue(ticks);\n var defaultMax = tickStrings ? tickValues.length : Collection.getMaxValue(ticks);\n var min = minDomain !== undefined ? minDomain : defaultMin;\n var max = maxDomain !== undefined ? maxDomain : defaultMax;\n var initialDomain = Domain.getDomainFromMinMax(min, max);\n var domain = polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? Domain.getSymmetricDomain(initialDomain, ticks) : initialDomain;\n\n if (isVertical(props) && !polar) {\n domain.reverse();\n }\n\n return domain;\n} // exposed for use by VictoryChart\n\n\nfunction getDomain(props, axis) {\n var inherentAxis = getAxis(props);\n\n if (axis && axis !== inherentAxis) {\n return undefined;\n }\n\n return Domain.createDomainFunction(getDomainFromData)(props, inherentAxis);\n}\n\nfunction getAxisValue(props, axis) {\n if (!props.axisValue) {\n return undefined;\n }\n\n var scaleAxis = axis === \"x\" ? \"y\" : \"x\";\n var scale = _isObject(props.scale) && _isFunction(props.scale[scaleAxis]) ? props.scale[scaleAxis] : undefined;\n\n if (!scale) {\n return undefined;\n }\n\n var stringMapAxis = axis === \"x\" ? \"y\" : \"x\";\n var stringMap = _isObject(props.stringMap) && props.stringMap[stringMapAxis];\n var axisValue = stringMap && typeof props.axisValue === \"string\" ? stringMap[props.axisValue] : props.axisValue;\n return scale(axisValue);\n}\n\nfunction modifyProps(props, fallbackProps) {\n if (!_isObject(props.theme)) {\n return Helpers.modifyProps(props, fallbackProps, \"axis\");\n }\n\n var role = \"axis\";\n\n if (props.dependentAxis && props.theme.dependentAxis) {\n role = \"dependentAxis\";\n } else if (!props.dependentAxis && props.theme.independentAxis) {\n role = \"independentAxis\";\n }\n\n if (role === \"axis\") {\n return Helpers.modifyProps(props, fallbackProps, \"axis\");\n }\n\n var axisTheme = _defaults({}, props.theme[role], props.theme.axis);\n\n var theme = _assign({}, props.theme, {\n axis: axisTheme\n });\n\n return Helpers.modifyProps(_assign({}, props, {\n theme: theme\n }), fallbackProps, \"axis\");\n}\n\nexport default {\n getTicks: getTicks,\n getTickFormat: getTickFormat,\n getAxis: getAxis,\n getAxisComponent: getAxisComponent,\n getAxisComponentsWithParent: getAxisComponentsWithParent,\n getAxisValue: getAxisValue,\n findAxisComponents: findAxisComponents,\n getOrigin: getOrigin,\n getOriginSign: getOriginSign,\n getDomain: getDomain,\n isVertical: isVertical,\n modifyProps: modifyProps,\n stringTicks: stringTicks\n};","import _isPlainObject from \"lodash/isPlainObject\";\nimport _values from \"lodash/values\";\nimport _uniqBy from \"lodash/uniqBy\";\nimport _groupBy from \"lodash/groupBy\";\nimport _some from \"lodash/some\";\nimport _uniq from \"lodash/uniq\";\nimport _isFunction from \"lodash/isFunction\";\nimport _flatten from \"lodash/flatten\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport React from \"react\";\nimport Axis from \"./axis\";\nimport Style from \"./style\";\nimport Transitions from \"./transitions\";\nimport Data from \"./data\";\nimport Domain from \"./domain\";\nimport Events from \"./events\";\nimport Collection from \"./collection\";\nimport Helpers from \"./helpers\";\nimport Scale from \"./scale\";\nexport default {\n getData: function (props, childComponents) {\n if (props.data) {\n return Data.getData(props);\n }\n\n childComponents = childComponents || React.Children.toArray(props.children);\n return this.getDataFromChildren(childComponents);\n },\n getDefaultDomainPadding: function (props, axis, childComponents) {\n if (props.polar || axis !== \"x\") {\n return undefined;\n }\n\n var groupComponent = childComponents.filter(function (child) {\n return child.type && child.type.role && child.type.role === \"group\";\n });\n\n if (groupComponent.length < 1) {\n return undefined;\n }\n\n var _groupComponent$0$pro = groupComponent[0].props,\n offset = _groupComponent$0$pro.offset,\n children = _groupComponent$0$pro.children;\n return {\n x: offset * children.length / 2\n };\n },\n getDomain: function (props, axis, childComponents) {\n childComponents = childComponents || React.Children.toArray(props.children);\n var propsDomain = Domain.getDomainFromProps(props, axis);\n var minDomain = Domain.getMinFromProps(props, axis);\n var maxDomain = Domain.getMaxFromProps(props, axis);\n var domainPadding = this.getDefaultDomainPadding(props, axis, childComponents);\n var domain;\n\n if (propsDomain) {\n domain = propsDomain;\n } else {\n var dataset = (props.data || props.y) && Data.getData(props);\n var dataDomain = dataset ? Domain.getDomainFromData(props, axis, dataset) : [];\n var childDomain = this.getDomainFromChildren(props, axis, childComponents);\n var min = minDomain || Collection.getMinValue(_toConsumableArray(dataDomain).concat(_toConsumableArray(childDomain)));\n var max = maxDomain || Collection.getMaxValue(_toConsumableArray(dataDomain).concat(_toConsumableArray(childDomain)));\n domain = Domain.getDomainFromMinMax(min, max);\n }\n\n return Domain.formatDomain(domain, _assign({\n domainPadding: domainPadding\n }, props), axis);\n },\n getScale: function (props, axis, childComponents) {\n if (props.data) {\n return Scale.getBaseScale(props, axis);\n }\n\n var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n\n var iteratee = function (child) {\n var sharedProps = _assign({}, child.props, {\n horizontal: props.horizontal\n });\n\n return Scale.getScaleType(sharedProps, axis);\n };\n\n var childScale = _uniq(Helpers.reduceChildren(children, iteratee, props)); // default to linear scale if more than one uniq scale type is given by children\n\n\n return childScale.length > 1 ? Scale.getScaleFromName(\"linear\") : Scale.getScaleFromName(childScale[0]);\n },\n setAnimationState: function (props, nextProps) {\n if (!props.animate) {\n return;\n }\n\n if (props.animate.parentState) {\n var nodesWillExit = props.animate.parentState.nodesWillExit;\n var oldProps = nodesWillExit ? props : null;\n this.setState(_defaults({\n oldProps: oldProps,\n nextProps: nextProps\n }, props.animate.parentState));\n } else {\n var oldChildren = React.Children.toArray(props.children);\n var nextChildren = React.Children.toArray(nextProps.children);\n\n var isContinuous = function (child) {\n var check = function (c) {\n return c.type && c.type.continuous;\n };\n\n return Array.isArray(child) ? _some(child, check) : check(child);\n };\n\n var continuous = !props.polar && _some(oldChildren, function (child) {\n return isContinuous(child) || child.props.children && isContinuous(child.props.children);\n });\n\n var _Transitions$getIniti = Transitions.getInitialTransitionState(oldChildren, nextChildren),\n _nodesWillExit = _Transitions$getIniti.nodesWillExit,\n nodesWillEnter = _Transitions$getIniti.nodesWillEnter,\n childrenTransitions = _Transitions$getIniti.childrenTransitions,\n nodesShouldEnter = _Transitions$getIniti.nodesShouldEnter;\n\n this.setState({\n nodesWillExit: _nodesWillExit,\n nodesWillEnter: nodesWillEnter,\n nodesShouldEnter: nodesShouldEnter,\n childrenTransitions: Collection.isArrayOfArrays(childrenTransitions) ? childrenTransitions[0] : childrenTransitions,\n oldProps: _nodesWillExit ? props : null,\n nextProps: nextProps,\n continuous: continuous\n });\n }\n },\n getAllEvents: function (props) {\n var components = [\"groupComponent\", \"containerComponent\", \"labelComponent\"];\n this.componentEvents = Events.getComponentEvents(props, components);\n var events = props.events;\n\n if (Array.isArray(this.componentEvents)) {\n var _componentEvents;\n\n events = Array.isArray(props.events) ? (_componentEvents = this.componentEvents).concat.apply(_componentEvents, _toConsumableArray(props.events)) : this.componentEvents;\n }\n\n return events || [];\n },\n getAnimationProps: function (props, child, index) {\n var _this = this;\n\n if (!props.animate) {\n return child.props.animate;\n }\n\n var getFilteredState = function () {\n var childrenTransitions = _this.state && _this.state.childrenTransitions;\n childrenTransitions = Collection.isArrayOfArrays(childrenTransitions) ? childrenTransitions[index] : childrenTransitions;\n return _defaults({\n childrenTransitions: childrenTransitions\n }, _this.state);\n };\n\n var getTransitions = props.animate && props.animate.getTransitions;\n var state = getFilteredState();\n var parentState = props.animate && props.animate.parentState || state;\n\n if (!getTransitions) {\n var getTransitionProps = Transitions.getTransitionPropsFactory(props, state, function (newState) {\n return _this.setState(newState);\n });\n\n getTransitions = function (childComponent) {\n return getTransitionProps(childComponent, index);\n };\n }\n\n return _defaults({\n getTransitions: getTransitions,\n parentState: parentState\n }, props.animate, child.props.animate);\n },\n getDomainFromChildren: function (props, axis, childComponents) {\n // eslint-disable-line max-statements, complexity, max-len\n var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n var parentData = props.data ? Data.getData(props, axis) : undefined;\n var polar = props.polar,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n categories = props.categories,\n minDomain = props.minDomain,\n maxDomain = props.maxDomain,\n horizontal = props.horizontal;\n var baseParentProps = {\n horizontal: horizontal,\n polar: polar,\n startAngle: startAngle,\n endAngle: endAngle,\n minDomain: minDomain,\n maxDomain: maxDomain,\n categories: categories\n };\n var parentProps = parentData ? _assign(baseParentProps, {\n data: parentData\n }) : baseParentProps;\n\n var iteratee = function (child) {\n var sharedProps = _assign({}, child.props, parentProps);\n\n if (!Domain.isDomainComponent(child)) {\n return null;\n } else if (child.type && _isFunction(child.type.getDomain)) {\n return child.props && child.type.getDomain(sharedProps, axis);\n } else {\n return Domain.getDomain(sharedProps, axis);\n }\n };\n\n var childDomains = Helpers.reduceChildren(children, iteratee, props);\n var min = childDomains.length === 0 ? 0 : Collection.getMinValue(childDomains);\n var max = childDomains.length === 0 ? 1 : Collection.getMaxValue(childDomains);\n return [min, max];\n },\n getDataFromChildren: function (props, childComponents) {\n var polar = props.polar,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n categories = props.categories,\n minDomain = props.minDomain,\n maxDomain = props.maxDomain;\n var parentProps = {\n polar: polar,\n startAngle: startAngle,\n endAngle: endAngle,\n categories: categories,\n minDomain: minDomain,\n maxDomain: maxDomain\n };\n var stack = 0;\n\n var iteratee = function (child, childName, parent) {\n var childProps = _assign({}, child.props, parentProps);\n\n var childData;\n\n if (!Data.isDataComponent(child)) {\n return null;\n } else if (child.type && _isFunction(child.type.getData)) {\n child = parent ? React.cloneElement(child, parent.props) : child;\n childData = child.type.getData(childProps);\n } else {\n childData = Data.getData(childProps);\n }\n\n stack += 1;\n return childData.map(function (datum, index) {\n return _assign({\n _stack: stack,\n _group: index\n }, datum);\n });\n };\n\n var children = childComponents ? childComponents.slice(0) : React.Children.toArray(props.children);\n var stacked = children.filter(function (c) {\n return c.type && c.type.role === \"stack\";\n }).length;\n\n var combine = function (memo, val) {\n return memo.concat(_uniqBy(val, \"_group\"));\n };\n\n var datasets = Helpers.reduceChildren(children, iteratee, props, [], combine);\n var group = stacked ? \"_group\" : \"_stack\";\n return _values(_groupBy(datasets, group));\n },\n getColor: function (calculatedProps, child, index) {\n // check for styles first\n var style = calculatedProps.style;\n var colorScale = calculatedProps.colorScale,\n color = calculatedProps.color;\n\n if (style && style.data && style.data.fill) {\n return style.data.fill;\n }\n\n colorScale = child.props && child.props.colorScale ? child.props.colorScale : colorScale;\n color = child.props && child.props.color ? child.props.color : color;\n\n if (!colorScale && !color) {\n return undefined;\n }\n\n var colors = Array.isArray(colorScale) ? colorScale : Style.getColorScale(colorScale);\n return color || colors[index % colors.length];\n },\n getWidth: function (props) {\n var datasets = props.datasets,\n scale = props.scale,\n horizontal = props.horizontal;\n var range = horizontal ? scale.y.range() : scale.x.range();\n var extent = Math.abs(range[1] - range[0]);\n var seriesLength = Array.isArray(datasets[0]) ? datasets[0].length : 1;\n var bars = datasets.length * seriesLength + 2;\n var barRatio = 0.5;\n return {\n width: Math.round(barRatio * extent / bars)\n };\n },\n getStyle: function (theme, style, role) {\n var defaultStyle = theme && theme[role] && theme[role].style ? theme[role].style : {};\n return Helpers.getStyles(style, defaultStyle);\n },\n getChildStyle: function (child, index, calculatedProps) {\n var style = calculatedProps.style,\n role = calculatedProps.role;\n var childStyle = child.props.style || {};\n\n if (Array.isArray(childStyle)) {\n return childStyle;\n }\n\n var childRole = child.type && child.type.role;\n var defaultFill = childRole === \"stack\" ? undefined : this.getColor(calculatedProps, child, index);\n var defaultColor = childRole === \"line\" ? {\n fill: \"none\",\n stroke: defaultFill\n } : {\n fill: defaultFill\n };\n var dataWidth = role === \"stack\" ? {} : this.getWidth(calculatedProps);\n\n var dataStyle = _defaults({}, childStyle.data, _assign({}, dataWidth, style.data, defaultColor));\n\n var labelsStyle = _defaults({}, childStyle.labels, style.labels);\n\n return {\n parent: style.parent,\n data: dataStyle,\n labels: labelsStyle\n };\n },\n getStringsFromCategories: function (childComponents, axis) {\n var iteratee = function (child) {\n var childProps = child.props || {};\n\n if (!Domain.isDomainComponent(child) || !childProps.categories) {\n return null;\n } else {\n var categories = childProps.categories && !Array.isArray(childProps.categories) ? childProps.categories[axis] : childProps.props.categories;\n var categoryStrings = categories && categories.filter(function (val) {\n return typeof val === \"string\";\n });\n return categoryStrings ? Collection.removeUndefined(categoryStrings) : [];\n }\n };\n\n return Helpers.reduceChildren(childComponents.slice(0), iteratee);\n },\n getStringsFromData: function (childComponents) {\n var iteratee = function (child) {\n var childProps = child.props || {};\n var data;\n\n if (!Data.isDataComponent(child)) {\n return null;\n } else if (child.type && _isFunction(child.type.getData)) {\n data = child.type.getData(childProps);\n } else {\n data = Data.getData(childProps);\n }\n\n return data.map(function (d) {\n return {\n x: d.xName,\n y: d.yName\n };\n });\n };\n\n var initialMemo = {\n x: [],\n y: []\n };\n\n var combine = function (memo, datum) {\n var x = Array.isArray(datum) ? datum.map(function (d) {\n return d.x;\n }).filter(Boolean) : datum.x;\n var y = Array.isArray(datum) ? datum.map(function (d) {\n return d.y;\n }).filter(Boolean) : datum.y;\n return {\n x: x !== undefined ? memo.x.concat(x) : memo.x,\n y: y !== undefined ? memo.y.concat(y) : memo.y\n };\n };\n\n return Helpers.reduceChildren(childComponents.slice(0), iteratee, {}, initialMemo, combine);\n },\n getCategoryAndAxisStringsFromChildren: function (props, axis, childComponents) {\n var categories = _isPlainObject(props.categories) ? props.categories[axis] : props.categories;\n var axisComponent = Axis.getAxisComponent(childComponents, axis);\n var axisStrings = axisComponent ? Data.getStringsFromAxes(axisComponent.props, axis) : [];\n var categoryStrings = categories || this.getStringsFromCategories(childComponents, axis);\n return _uniq(_flatten(_toConsumableArray(categoryStrings).concat(_toConsumableArray(axisStrings))));\n },\n getStringsFromChildren: function (props, childComponents) {\n childComponents = childComponents || React.Children.toArray(props.children);\n var xStrings = this.getCategoryAndAxisStringsFromChildren(props, \"x\", childComponents);\n var yStrings = this.getCategoryAndAxisStringsFromChildren(props, \"y\", childComponents);\n var dataStrings = this.getStringsFromData(childComponents);\n return {\n x: _uniq(_flatten(_toConsumableArray(xStrings).concat(_toConsumableArray(dataStrings.x)))),\n y: _uniq(_flatten(_toConsumableArray(yStrings).concat(_toConsumableArray(dataStrings.y))))\n };\n },\n getCategories: function (props) {\n var xPropCategories = props.categories && !Array.isArray(props.categories) ? props.categories.x : props.categories;\n var yPropCategories = props.categories && !Array.isArray(props.categories) ? props.categories.y : props.categories;\n var fallbackRequired = !xPropCategories || !yPropCategories;\n var fallbackProps = fallbackRequired ? this.getStringsFromChildren(props) : {};\n var xCategories = xPropCategories || fallbackProps.x;\n var yCategories = yPropCategories || fallbackProps.y;\n return {\n x: xCategories.length > 0 ? xCategories : undefined,\n y: yCategories.length > 0 ? yCategories : undefined\n };\n }\n};","import _fromPairs from \"lodash/fromPairs\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _defaults from \"lodash/defaults\";\nimport _isFunction from \"lodash/isFunction\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, Events, Helpers, Timer } from \"victory-core\";\nimport isEqual from \"react-fast-compare\";\n\nvar VictorySharedEvents =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictorySharedEvents, _React$Component);\n\n function VictorySharedEvents(props) {\n var _this;\n\n _classCallCheck(this, VictorySharedEvents);\n\n _this = _possibleConstructorReturn(this, (VictorySharedEvents.__proto__ || Object.getPrototypeOf(VictorySharedEvents)).call(this, props));\n _this.state = _this.state || {};\n _this.getScopedEvents = Events.getScopedEvents.bind(_assertThisInitialized(_this));\n _this.getEventState = Events.getEventState.bind(_assertThisInitialized(_this));\n _this.getTimer = _this.getTimer.bind(_assertThisInitialized(_this));\n _this.baseProps = _this.getBaseProps(props);\n return _this;\n }\n\n _createClass(VictorySharedEvents, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n getTimer: this.getTimer\n };\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n if (!isEqual(this.props, nextProps)) {\n this.baseProps = this.getBaseProps(nextProps);\n var externalMutations = this.getExternalMutations(nextProps, this.baseProps);\n this.applyExternalMutations(nextProps, externalMutations);\n }\n\n return true;\n }\n }, {\n key: \"getTimer\",\n value: function getTimer() {\n if (this.context.getTimer) {\n return this.context.getTimer();\n }\n\n if (!this.timer) {\n this.timer = new Timer();\n }\n\n return this.timer;\n }\n }, {\n key: \"getAllEvents\",\n value: function getAllEvents(props) {\n var components = [\"container\", \"groupComponent\"];\n var componentEvents = Events.getComponentEvents(props, components);\n\n if (Array.isArray(componentEvents)) {\n return Array.isArray(props.events) ? componentEvents.concat.apply(componentEvents, _toConsumableArray(props.events)) : componentEvents;\n }\n\n return props.events;\n }\n }, {\n key: \"applyExternalMutations\",\n value: function applyExternalMutations(props, externalMutations) {\n if (!_isEmpty(externalMutations)) {\n var callbacks = props.externalEventMutations.reduce(function (memo, mutation) {\n memo = _isFunction(mutation.callback) ? memo.concat(mutation.callback) : memo;\n return memo;\n }, []);\n var compiledCallbacks = callbacks.length ? function () {\n callbacks.forEach(function (c) {\n return c();\n });\n } : undefined;\n this.setState(externalMutations, compiledCallbacks);\n }\n }\n }, {\n key: \"getExternalMutations\",\n value: function getExternalMutations(props, baseProps) {\n return !_isEmpty(props.externalEventMutations) ? Events.getExternalMutationsWithChildren(props.externalEventMutations, baseProps, this.state, Object.keys(baseProps)) : undefined;\n }\n }, {\n key: \"getBaseProps\",\n value: function getBaseProps(props) {\n var container = props.container;\n var children = React.Children.toArray(this.props.children);\n var childBaseProps = this.getBasePropsFromChildren(children);\n var parentBaseProps = container ? container.props : {};\n return _assign({}, childBaseProps, {\n parent: parentBaseProps\n });\n }\n }, {\n key: \"getBasePropsFromChildren\",\n value: function getBasePropsFromChildren(childComponents) {\n var iteratee = function (child, childName) {\n if (child.type && _isFunction(child.type.getBaseProps)) {\n var _baseProps = child.props && child.type.getBaseProps(child.props);\n\n return _baseProps ? [[childName, _baseProps]] : null;\n } else {\n return null;\n }\n };\n\n var baseProps = Helpers.reduceChildren(childComponents, iteratee);\n return _fromPairs(baseProps);\n }\n }, {\n key: \"getNewChildren\",\n value: function getNewChildren(props, baseProps) {\n var _this2 = this;\n\n var events = props.events,\n eventKey = props.eventKey;\n\n var alterChildren = function (children, childNames) {\n return children.reduce(function (memo, child, index) {\n if (child.props.children) {\n var newChildren = React.Children.toArray(child.props.children);\n var names = childNames.slice(index, index + newChildren.length);\n var results = React.cloneElement(child, child.props, alterChildren(newChildren, names));\n return memo.concat(results);\n } else if (child.type && _isFunction(child.type.getBaseProps)) {\n var name = child.props.name || childNames[index];\n var childEvents = Array.isArray(events) && events.filter(function (event) {\n if (event.target === \"parent\") {\n return false;\n }\n\n return Array.isArray(event.childName) ? event.childName.indexOf(name) > -1 : event.childName === name || event.childName === \"all\";\n });\n var sharedEvents = {\n events: childEvents,\n // partially apply child name and baseProps,\n getEvents: function (evts, target) {\n return _this2.getScopedEvents(evts, target, name, baseProps);\n },\n // partially apply child name\n getEventState: function (key, target) {\n return _this2.getEventState(key, target, name);\n }\n };\n return memo.concat(React.cloneElement(child, _assign({\n key: \"events-\".concat(name),\n sharedEvents: sharedEvents,\n eventKey: eventKey,\n name: name\n }, child.props)));\n } else {\n return memo.concat(child);\n }\n }, []);\n };\n\n var childNames = Object.keys(baseProps);\n var childComponents = React.Children.toArray(props.children);\n return alterChildren(childComponents, childNames);\n }\n }, {\n key: \"getContainer\",\n value: function getContainer(props, baseProps, events) {\n var _this3 = this;\n\n var children = this.getNewChildren(props, baseProps);\n var parents = Array.isArray(events) && events.filter(function (event) {\n return event.target === \"parent\";\n });\n var sharedEvents = parents.length > 0 ? {\n events: parents,\n // partially apply childName (null) and baseProps,\n getEvents: function (evts, target) {\n return _this3.getScopedEvents(evts, target, null, baseProps);\n },\n getEventState: this.getEventState\n } : null;\n var container = props.container || props.groupComponent;\n var role = container.type && container.type.role;\n var containerProps = container.props || {};\n var boundGetEvents = Events.getEvents.bind(this);\n var parentEvents = sharedEvents && boundGetEvents({\n sharedEvents: sharedEvents\n }, \"parent\");\n\n var parentProps = _defaults({}, this.getEventState(\"parent\", \"parent\"), containerProps, baseProps.parent, {\n children: children\n });\n\n var containerEvents = _defaults({}, Events.getPartialEvents(parentEvents, \"parent\", parentProps), containerProps.events);\n\n return role === \"container\" ? React.cloneElement(container, _assign({}, parentProps, {\n events: containerEvents\n })) : React.cloneElement(container, containerEvents, children);\n }\n }, {\n key: \"render\",\n value: function render() {\n var events = this.getAllEvents(this.props);\n\n if (events) {\n return this.getContainer(this.props, this.baseProps, events);\n }\n\n return React.cloneElement(this.props.container, {\n children: this.props.children\n });\n }\n }]);\n\n return VictorySharedEvents;\n}(React.Component);\n\nObject.defineProperty(VictorySharedEvents, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictorySharedEvents\"\n});\nObject.defineProperty(VictorySharedEvents, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"shared-event-wrapper\"\n});\nObject.defineProperty(VictorySharedEvents, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n container: PropTypes.node,\n eventKey: PropTypes.oneOfType([PropTypes.array, PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n events: PropTypes.arrayOf(PropTypes.shape({\n childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n eventHandlers: PropTypes.object,\n eventKey: PropTypes.oneOfType([PropTypes.array, PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n target: PropTypes.string\n })),\n externalEventMutations: PropTypes.arrayOf(PropTypes.shape({\n callback: PropTypes.function,\n childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n mutation: PropTypes.function,\n target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\n })),\n groupComponent: PropTypes.node\n }\n});\nObject.defineProperty(VictorySharedEvents, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n groupComponent: React.createElement(\"g\", null)\n }\n});\nObject.defineProperty(VictorySharedEvents, \"contextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n getTimer: PropTypes.func\n }\n});\nObject.defineProperty(VictorySharedEvents, \"childContextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n getTimer: PropTypes.func\n }\n});\nexport { VictorySharedEvents as default };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nimport React from \"react\";\n\nvar Line = function (props) {\n // eslint-disable-next-line react/prop-types\n var desc = props.desc,\n rest = _objectWithoutProperties(props, [\"desc\"]);\n\n return desc ? React.createElement(\"line\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest), React.createElement(\"desc\", null, desc)) : React.createElement(\"line\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest));\n};\n\nexport default Line;","import _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Helpers from \"../victory-util/helpers\";\nimport CommonProps from \"../victory-util/common-props\";\nimport Line from \"./line\";\n\nvar LineSegment = function (props) {\n return React.cloneElement(props.lineComponent, _objectSpread({}, props.events, {\n style: Helpers.evaluateStyle(_assign({\n stroke: \"black\"\n }, props.style), props),\n desc: Helpers.evaluateProp(props.desc, props),\n tabIndex: Helpers.evaluateProp(props.tabIndex, props),\n className: props.className,\n role: props.role,\n shapeRendering: props.shapeRendering,\n x1: props.x1,\n x2: props.x2,\n y1: props.y1,\n y2: props.y2,\n transform: props.transform,\n clipPath: props.clipPath\n }));\n};\n\nLineSegment.propTypes = _objectSpread({}, CommonProps.primitiveProps, {\n datum: PropTypes.any,\n lineComponent: PropTypes.element,\n x1: PropTypes.number,\n x2: PropTypes.number,\n y1: PropTypes.number,\n y2: PropTypes.number\n});\nLineSegment.defaultProps = {\n lineComponent: React.createElement(Line, null),\n role: \"presentation\",\n shapeRendering: \"auto\"\n};\nexport default LineSegment;","import _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { Helpers, Scale, Axis } from \"victory-core\";\nvar orientationSign = {\n top: -1,\n left: -1,\n right: 1,\n bottom: 1\n};\n\nvar getCurrentAxis = function (props, axis) {\n var orientation = props.orientation,\n horizontal = props.horizontal;\n\n if (orientation) {\n var dimensions = {\n top: \"x\",\n bottom: \"x\",\n left: \"y\",\n right: \"y\"\n };\n return dimensions[orientation];\n }\n\n var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n return horizontal ? otherAxis : axis;\n};\n\nvar getScale = function (props) {\n var axis = Axis.getAxis(props);\n var currentAxis = getCurrentAxis(props, axis);\n var scale = Scale.getBaseScale(props, axis);\n var propsDomain = props.domain && props.domain[axis];\n var domain = propsDomain || Axis.getDomain(props) || scale.domain();\n scale.range(Helpers.getRange(props, currentAxis));\n scale.domain(domain);\n return scale;\n};\n\nvar getStyleObject = function (props) {\n var theme = props.theme,\n dependentAxis = props.dependentAxis;\n var generalAxisStyle = theme && theme.axis && theme.axis.style;\n var axisType = dependentAxis ? \"dependentAxis\" : \"independentAxis\";\n var specificAxisStyle = theme && theme[axisType] && theme[axisType].style;\n\n var mergeStyles = function () {\n var styleNamespaces = [\"axis\", \"axisLabel\", \"grid\", \"parent\", \"tickLabels\", \"ticks\"];\n return styleNamespaces.reduce(function (memo, curr) {\n memo[curr] = _defaults({}, specificAxisStyle[curr], generalAxisStyle[curr]);\n return memo;\n }, {});\n };\n\n return generalAxisStyle && specificAxisStyle ? mergeStyles() : specificAxisStyle || generalAxisStyle;\n};\n\nvar getStyles = function (props, styleObject) {\n var style = props.style || {};\n styleObject = styleObject || {};\n var parentStyleProps = {\n height: \"100%\",\n width: \"100%\"\n };\n return {\n parent: _defaults(style.parent, styleObject.parent, parentStyleProps),\n axis: _defaults({}, style.axis, styleObject.axis),\n axisLabel: _defaults({}, style.axisLabel, styleObject.axisLabel),\n grid: _defaults({}, style.grid, styleObject.grid),\n ticks: _defaults({}, style.ticks, styleObject.ticks),\n tickLabels: _defaults({}, style.tickLabels, styleObject.tickLabels)\n };\n};\n\nvar getTickProps = function (layout, style, datum) {\n var position = layout.position,\n transform = layout.transform;\n return {\n x1: transform.x,\n y1: transform.y,\n x2: transform.x + position.x2,\n y2: transform.y + position.y2,\n style: style,\n datum: datum\n };\n}; // eslint-disable-next-line max-params\n\n\nvar getTickLabelProps = function (layout, style, anchors, datum, text) {\n var position = layout.position,\n transform = layout.transform;\n return {\n style: style,\n x: transform.x + position.x,\n y: transform.y + position.y,\n verticalAnchor: anchors.verticalAnchor,\n textAnchor: anchors.textAnchor,\n angle: style.angle,\n text: text,\n datum: datum\n };\n};\n\nvar getGridProps = function (layout, style, datum) {\n var edge = layout.edge,\n transform = layout.transform;\n return {\n type: \"grid\",\n x1: transform.x,\n y1: transform.y,\n x2: edge.x + transform.x,\n y2: edge.y + transform.y,\n style: style,\n datum: datum\n };\n};\n\nvar getAxisProps = function (modifiedProps, calculatedValues, globalTransform) {\n var style = calculatedValues.style,\n padding = calculatedValues.padding,\n isVertical = calculatedValues.isVertical;\n var width = modifiedProps.width,\n height = modifiedProps.height;\n return {\n type: \"axis\",\n style: style.axis,\n x1: isVertical ? globalTransform.x : padding.left + globalTransform.x,\n x2: isVertical ? globalTransform.x : width - padding.right + globalTransform.x,\n y1: isVertical ? padding.top + globalTransform.y : globalTransform.y,\n y2: isVertical ? height - padding.bottom + globalTransform.y : globalTransform.y\n };\n};\n\nvar getEvaluatedStyles = function (style, props) {\n return {\n tickStyle: Helpers.evaluateStyle(style.ticks, props),\n labelStyle: Helpers.evaluateStyle(style.tickLabels, props),\n gridStyle: Helpers.evaluateStyle(style.grid, props)\n };\n};\n\nvar getAxisLabelProps = function (props, calculatedValues, globalTransform) {\n var style = calculatedValues.style,\n orientation = calculatedValues.orientation,\n padding = calculatedValues.padding,\n labelPadding = calculatedValues.labelPadding,\n isVertical = calculatedValues.isVertical;\n var sign = orientationSign[orientation];\n var hPadding = padding.left + padding.right;\n var vPadding = padding.top + padding.bottom;\n var verticalAnchor = sign < 0 ? \"end\" : \"start\";\n var labelStyle = style.axisLabel;\n var angle = isVertical ? -90 : 0; // eslint-disable-line no-magic-numbers\n\n var x = isVertical ? globalTransform.x + sign * labelPadding : (props.width - hPadding) / 2 + padding.left + globalTransform.x;\n var y = isVertical ? (props.height - vPadding) / 2 + padding.top + globalTransform.y : sign * labelPadding + globalTransform.y;\n return {\n x: x,\n y: y,\n verticalAnchor: labelStyle.verticalAnchor || verticalAnchor,\n textAnchor: labelStyle.textAnchor || \"middle\",\n angle: labelStyle.angle === undefined ? angle : labelStyle.angle,\n style: labelStyle,\n text: props.label\n };\n};\n\nvar getAnchors = function (orientation, isVertical) {\n var anchorOrientation = {\n top: \"end\",\n left: \"end\",\n right: \"start\",\n bottom: \"start\"\n };\n var anchor = anchorOrientation[orientation];\n return {\n textAnchor: isVertical ? anchor : \"middle\",\n verticalAnchor: isVertical ? \"middle\" : anchor\n };\n};\n\nvar getLabelPadding = function (props, style) {\n var labelStyle = style.axisLabel || {};\n\n if (labelStyle.padding !== undefined && labelStyle.padding !== null) {\n return labelStyle.padding;\n }\n\n var isVertical = Axis.isVertical(props); // TODO: magic numbers\n\n /*eslint-disable no-magic-numbers*/\n\n var fontSize = labelStyle.fontSize || 14;\n return props.label ? fontSize * (isVertical ? 2.3 : 1.6) : 0;\n /*eslint-enable no-magic-numbers*/\n};\n\nvar getOffset = function (props, calculatedValues) {\n var style = calculatedValues.style,\n padding = calculatedValues.padding,\n isVertical = calculatedValues.isVertical,\n orientation = calculatedValues.orientation,\n labelPadding = calculatedValues.labelPadding,\n stringTicks = calculatedValues.stringTicks,\n ticks = calculatedValues.ticks,\n scale = calculatedValues.scale,\n axis = calculatedValues.axis;\n var polar = props.polar,\n horizontal = props.horizontal;\n var sharedProps = {\n scale: _defineProperty({}, axis, scale),\n polar: polar,\n horizontal: horizontal,\n ticks: ticks,\n stringTicks: stringTicks\n };\n var xPadding = orientation === \"right\" ? padding.right : padding.left;\n var yPadding = orientation === \"top\" ? padding.top : padding.bottom;\n var fontSize = style.axisLabel.fontSize || 14; // eslint-disable-line no-magic-numbers\n\n var offsetX = props.offsetX !== null && props.offsetX !== undefined ? props.offsetX : xPadding;\n var offsetY = props.offsetY !== null && props.offsetY !== undefined ? props.offsetY : yPadding;\n var tickSizes = ticks.map(function (data, index) {\n var tick = stringTicks ? props.tickValues[data - 1] : data;\n var tickStyle = Helpers.evaluateStyle(style.ticks, _assign({}, sharedProps, {\n tick: tick,\n index: index\n }));\n return tickStyle.size || 0;\n });\n var totalPadding = fontSize + 2 * Math.max.apply(Math, _toConsumableArray(tickSizes)) + labelPadding;\n var minimumPadding = 1.2 * fontSize; // eslint-disable-line no-magic-numbers\n\n var x = isVertical ? totalPadding : minimumPadding;\n var y = isVertical ? minimumPadding : totalPadding;\n return {\n x: offsetX !== null && offsetX !== undefined ? offsetX : x,\n y: offsetY !== null && offsetY !== undefined ? offsetY : y\n };\n};\n\nvar getTransform = function (props, calculatedValues, offset) {\n //\n var orientation = calculatedValues.orientation,\n axis = calculatedValues.axis;\n var axisValue = Axis.getAxisValue(props, axis);\n return {\n top: {\n x: 0,\n y: axisValue !== undefined ? axisValue : offset.y\n },\n bottom: {\n x: 0,\n y: axisValue !== undefined ? axisValue : props.height - offset.y\n },\n left: {\n x: axisValue !== undefined ? axisValue : offset.x,\n y: 0\n },\n right: {\n x: axisValue !== undefined ? axisValue : props.width - offset.x,\n y: 0\n }\n }[orientation];\n};\n\nvar getTickPosition = function (style, orientation, isVertical) {\n var tickStyle = style.tickStyle,\n labelStyle = style.labelStyle;\n var size = tickStyle.size || 0;\n var tickPadding = tickStyle.padding || 0;\n var labelPadding = labelStyle.padding || 0;\n var tickSpacing = size + tickPadding + labelPadding;\n var sign = orientationSign[orientation];\n return {\n x: isVertical ? sign * tickSpacing : 0,\n x2: isVertical ? sign * size : 0,\n y: isVertical ? 0 : sign * tickSpacing,\n y2: isVertical ? 0 : sign * size\n };\n};\n\nvar getTickTransform = function (tick, globalTransform, isVertical) {\n return {\n x: isVertical ? globalTransform.x : tick + globalTransform.x,\n y: isVertical ? tick + globalTransform.y : globalTransform.y\n };\n};\n\nvar getGridEdge = function (props, calculatedValues) {\n var orientation = calculatedValues.orientation,\n padding = calculatedValues.padding,\n isVertical = calculatedValues.isVertical;\n var sign = -orientationSign[orientation];\n var x = isVertical ? sign * (props.width - (padding.left + padding.right)) : 0;\n var y = isVertical ? 0 : sign * (props.height - (padding.top + padding.bottom));\n return {\n x: x,\n y: y\n };\n};\n\nvar getGridOffset = function (props, calculatedValues, offset) {\n var padding = calculatedValues.padding,\n orientation = calculatedValues.orientation;\n var xPadding = orientation === \"right\" ? padding.right : padding.left;\n var yPadding = orientation === \"top\" ? padding.top : padding.bottom;\n return {\n x: props.crossAxis ? offset.x - xPadding : 0,\n y: props.crossAxis ? offset.y - yPadding : 0\n };\n};\n\nvar getLayoutProps = function (modifiedProps, calculatedValues) {\n var offset = getOffset(modifiedProps, calculatedValues);\n return {\n globalTransform: getTransform(modifiedProps, calculatedValues, offset),\n gridOffset: getGridOffset(modifiedProps, calculatedValues, offset),\n gridEdge: getGridEdge(modifiedProps, calculatedValues)\n };\n};\n\nvar getOrientation = function (props) {\n if (props.orientation) {\n return props.orientation;\n }\n\n var defaultOrientations = {\n dependent: props.horizontal ? \"bottom\" : \"left\",\n independent: props.horizontal ? \"left\" : \"bottom\"\n };\n return props.dependentAxis ? defaultOrientations.dependent : defaultOrientations.independent;\n};\n\nvar getCalculatedValues = function (props) {\n var defaultStyles = getStyleObject(props);\n var style = getStyles(props, defaultStyles);\n var padding = Helpers.getPadding(props);\n var isVertical = Axis.isVertical(props);\n var labelPadding = getLabelPadding(props, style);\n var stringTicks = Axis.stringTicks(props) ? props.tickValues : undefined;\n var axis = Axis.getAxis(props);\n var orientation = getOrientation(props);\n var scale = getScale(props);\n var domain = Axis.getDomain(props);\n var ticks = Axis.getTicks(props, scale, props.crossAxis);\n var tickFormat = Axis.getTickFormat(props, scale);\n var anchors = getAnchors(orientation, isVertical);\n return {\n axis: axis,\n style: style,\n padding: padding,\n orientation: orientation,\n isVertical: isVertical,\n labelPadding: labelPadding,\n stringTicks: stringTicks,\n anchors: anchors,\n scale: scale,\n ticks: ticks,\n tickFormat: tickFormat,\n domain: domain\n };\n};\n\nvar getBaseProps = function (props, fallbackProps) {\n props = Axis.modifyProps(props, fallbackProps);\n var calculatedValues = getCalculatedValues(props);\n var axis = calculatedValues.axis,\n style = calculatedValues.style,\n orientation = calculatedValues.orientation,\n isVertical = calculatedValues.isVertical,\n scale = calculatedValues.scale,\n ticks = calculatedValues.ticks,\n tickFormat = calculatedValues.tickFormat,\n anchors = calculatedValues.anchors,\n domain = calculatedValues.domain,\n stringTicks = calculatedValues.stringTicks,\n name = calculatedValues.name;\n var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n var _props = props,\n width = _props.width,\n height = _props.height,\n standalone = _props.standalone,\n theme = _props.theme,\n polar = _props.polar,\n padding = _props.padding,\n horizontal = _props.horizontal;\n\n var _getLayoutProps = getLayoutProps(props, calculatedValues),\n globalTransform = _getLayoutProps.globalTransform,\n gridOffset = _getLayoutProps.gridOffset,\n gridEdge = _getLayoutProps.gridEdge;\n\n var sharedProps = {\n scale: _defineProperty({}, axis, scale),\n polar: polar,\n horizontal: horizontal,\n ticks: ticks,\n stringTicks: stringTicks\n };\n var axisProps = getAxisProps(props, calculatedValues, globalTransform);\n var axisLabelProps = getAxisLabelProps(props, calculatedValues, globalTransform);\n var initialChildProps = {\n parent: _assign({\n style: style.parent,\n ticks: ticks,\n standalone: standalone,\n theme: theme,\n width: width,\n height: height,\n padding: padding,\n domain: domain,\n name: name\n }, sharedProps)\n };\n var gridProps = {\n dimension: otherAxis,\n range: _defineProperty({}, otherAxis, Helpers.getRange(props, otherAxis)),\n scale: props.scale && props.scale[otherAxis] ? _defineProperty({}, otherAxis, props.scale[otherAxis]) : undefined\n };\n return ticks.reduce(function (childProps, tickValue, index) {\n var tick = stringTicks ? stringTicks[index] : tickValue;\n var text = tickFormat(tickValue, index, ticks);\n var styles = getEvaluatedStyles(style, _assign({}, sharedProps, {\n tick: tick,\n tickValue: tickValue,\n index: index,\n text: text\n }));\n var tickLayout = {\n position: getTickPosition(styles, orientation, isVertical),\n transform: getTickTransform(scale(tickValue), globalTransform, isVertical)\n };\n var gridLayout = {\n edge: gridEdge,\n transform: {\n x: isVertical ? -gridOffset.x + globalTransform.x : scale(tickValue) + globalTransform.x,\n y: isVertical ? scale(tickValue) + globalTransform.y : gridOffset.y + globalTransform.y\n }\n };\n childProps[index] = {\n axis: _assign({\n dimension: axis\n }, sharedProps, axisProps),\n axisLabel: _assign({}, sharedProps, axisLabelProps),\n ticks: _assign({}, sharedProps, getTickProps(tickLayout, styles.tickStyle, tickValue)),\n tickLabels: _assign({}, sharedProps, getTickLabelProps(tickLayout, styles.labelStyle, anchors, tickValue, text)),\n grid: _assign({}, sharedProps, gridProps, getGridProps(gridLayout, styles.gridStyle, tickValue))\n };\n return childProps;\n }, initialChildProps);\n};\n\nexport { getBaseProps, getStyles };","import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { PropTypes as CustomPropTypes, VictoryLabel, CommonProps, VictoryContainer, VictoryTheme, LineSegment, TextSize, addEvents, Axis } from \"victory-core\";\nimport { getBaseProps, getStyles } from \"./helper-methods\";\nvar fallbackProps = {\n width: 450,\n height: 300,\n padding: 50\n};\nvar options = {\n components: [{\n name: \"axis\",\n index: 0\n }, {\n name: \"axisLabel\",\n index: 0\n }, {\n name: \"grid\"\n }, {\n name: \"parent\",\n index: \"parent\"\n }, {\n name: \"ticks\"\n }, {\n name: \"tickLabels\"\n }]\n};\n\nvar VictoryAxis =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryAxis, _React$Component);\n\n function VictoryAxis() {\n _classCallCheck(this, VictoryAxis);\n\n return _possibleConstructorReturn(this, (VictoryAxis.__proto__ || Object.getPrototypeOf(VictoryAxis)).apply(this, arguments));\n }\n\n _createClass(VictoryAxis, [{\n key: \"renderLine\",\n value: function renderLine(props) {\n var axisComponent = props.axisComponent;\n var axisProps = this.getComponentProps(axisComponent, \"axis\", 0);\n return React.cloneElement(axisComponent, axisProps);\n }\n }, {\n key: \"renderLabel\",\n value: function renderLabel(props) {\n var axisLabelComponent = props.axisLabelComponent,\n label = props.label;\n\n if (!label) {\n return null;\n }\n\n var axisLabelProps = this.getComponentProps(axisLabelComponent, \"axisLabel\", 0);\n return React.cloneElement(axisLabelComponent, axisLabelProps);\n }\n }, {\n key: \"renderGridAndTicks\",\n value: function renderGridAndTicks(props) {\n var _this = this;\n\n var tickComponent = props.tickComponent,\n tickLabelComponent = props.tickLabelComponent,\n gridComponent = props.gridComponent,\n name = props.name;\n\n var shouldRender = function (componentProps) {\n var _componentProps$style = componentProps.style,\n style = _componentProps$style === void 0 ? {} : _componentProps$style,\n _componentProps$event = componentProps.events,\n events = _componentProps$event === void 0 ? {} : _componentProps$event;\n var visible = style.stroke !== \"transparent\" && style.stroke !== \"none\" && style.strokeWidth !== 0;\n return visible || !_isEmpty(events);\n };\n\n return this.dataKeys.map(function (key, index) {\n var tickProps = _this.getComponentProps(tickComponent, \"ticks\", index);\n\n var BaseTickComponent = React.cloneElement(tickComponent, tickProps);\n var TickComponent = shouldRender(BaseTickComponent.props) ? BaseTickComponent : undefined;\n\n var gridProps = _this.getComponentProps(gridComponent, \"grid\", index);\n\n var BaseGridComponent = React.cloneElement(gridComponent, gridProps);\n var GridComponent = shouldRender(BaseGridComponent.props) ? BaseGridComponent : undefined;\n\n var tickLabelProps = _this.getComponentProps(tickLabelComponent, \"tickLabels\", index);\n\n var TickLabel = React.cloneElement(tickLabelComponent, tickLabelProps);\n var children = [GridComponent, TickComponent, TickLabel].filter(Boolean);\n return React.cloneElement(props.groupComponent, {\n key: \"\".concat(name, \"-tick-group-\").concat(key)\n }, children);\n });\n }\n }, {\n key: \"fixLabelOverlap\",\n value: function fixLabelOverlap(gridAndTicks, props) {\n var isVertical = Axis.isVertical(props);\n var size = isVertical ? props.height : props.width;\n\n var isVictoryLabel = function (child) {\n return child.type && child.type.role === \"label\";\n };\n\n var labels = gridAndTicks.map(function (gridAndTick) {\n return gridAndTick.props.children;\n }).reduce(function (accumulator, childArr) {\n return accumulator.concat(childArr);\n }, []).filter(isVictoryLabel).map(function (child) {\n return child.props;\n });\n\n var paddingToObject = function (padding) {\n return typeof padding === \"object\" ? _assign({}, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }, padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n };\n\n var labelsSumSize = labels.reduce(function (sum, label) {\n var padding = paddingToObject(label.style.padding);\n var labelSize = TextSize.approximateTextSize(label.text, {\n angle: label.angle,\n fontSize: label.style.fontSize,\n letterSpacing: label.style.letterSpacing,\n fontFamily: label.style.fontFamily\n });\n return sum + (isVertical ? labelSize.height + padding.top + padding.bottom : labelSize.width + padding.right + padding.left);\n }, 0);\n var availiableLabelCount = Math.floor(size * gridAndTicks.length / labelsSumSize);\n var divider = Math.ceil(gridAndTicks.length / availiableLabelCount) || 1;\n\n var getLabelCoord = function (gridAndTick) {\n return gridAndTick.props.children.filter(isVictoryLabel).reduce(function (prev, child) {\n return (isVertical ? child.props.y : child.props.x) || 0;\n }, 0);\n };\n\n var sorted = gridAndTicks.sort(function (a, b) {\n return isVertical ? getLabelCoord(b) - getLabelCoord(a) //ordinary axis has top-bottom orientation\n : getLabelCoord(a) - getLabelCoord(b);\n } //ordinary axis has left-right orientation\n );\n return sorted.filter(function (gridAndTick, index) {\n return index % divider === 0;\n });\n } // Overridden in native versions\n\n }, {\n key: \"shouldAnimate\",\n value: function shouldAnimate() {\n return !!this.props.animate;\n }\n }, {\n key: \"render\",\n value: function render() {\n var animationWhitelist = VictoryAxis.animationWhitelist;\n var props = Axis.modifyProps(this.props, fallbackProps);\n\n if (this.shouldAnimate()) {\n return this.animateComponent(props, animationWhitelist);\n }\n\n var gridAndTicks = this.renderGridAndTicks(props);\n var modifiedGridAndTicks = props.fixLabelOverlap ? this.fixLabelOverlap(gridAndTicks, props) : gridAndTicks;\n var children = [this.renderLine(props), this.renderLabel(props)].concat(_toConsumableArray(modifiedGridAndTicks));\n return props.standalone ? this.renderContainer(props.containerComponent, children) : React.cloneElement(props.groupComponent, {}, children);\n }\n }]);\n\n return VictoryAxis;\n}(React.Component);\n\nObject.defineProperty(VictoryAxis, \"animationWhitelist\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"style\", \"domain\", \"range\", \"tickCount\", \"tickValues\", \"offsetX\", \"offsetY\", \"padding\", \"width\", \"height\"]\n});\nObject.defineProperty(VictoryAxis, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryAxis\"\n});\nObject.defineProperty(VictoryAxis, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"axis\"\n});\nObject.defineProperty(VictoryAxis, \"defaultTransitions\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n onExit: {\n duration: 500\n },\n onEnter: {\n duration: 500\n }\n }\n});\nObject.defineProperty(VictoryAxis, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, CommonProps.baseProps, {\n axisComponent: PropTypes.element,\n axisLabelComponent: PropTypes.element,\n axisValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object]),\n categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n x: PropTypes.arrayOf(PropTypes.string),\n y: PropTypes.arrayOf(PropTypes.string)\n })]),\n crossAxis: PropTypes.bool,\n dependentAxis: PropTypes.bool,\n events: PropTypes.arrayOf(PropTypes.shape({\n target: PropTypes.oneOf([\"axis\", \"axisLabel\", \"grid\", \"ticks\", \"tickLabels\"]),\n eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n eventHandlers: PropTypes.object\n })),\n fixLabelOverlap: PropTypes.bool,\n gridComponent: PropTypes.element,\n groupComponent: PropTypes.element,\n invertAxis: PropTypes.bool,\n label: PropTypes.any,\n offsetX: PropTypes.number,\n offsetY: PropTypes.number,\n orientation: PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]),\n origin: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n stringMap: PropTypes.object,\n style: PropTypes.shape({\n parent: PropTypes.object,\n axis: PropTypes.object,\n axisLabel: PropTypes.object,\n grid: PropTypes.object,\n ticks: PropTypes.object,\n tickLabels: PropTypes.object\n }),\n tickComponent: PropTypes.element,\n tickCount: CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.greaterThanZero]),\n tickFormat: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.homogeneousArray]),\n tickLabelComponent: PropTypes.element,\n tickValues: CustomPropTypes.homogeneousArray\n })\n});\nObject.defineProperty(VictoryAxis, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n axisComponent: React.createElement(LineSegment, {\n type: \"axis\"\n }),\n axisLabelComponent: React.createElement(VictoryLabel, null),\n tickLabelComponent: React.createElement(VictoryLabel, null),\n tickComponent: React.createElement(LineSegment, {\n type: \"tick\"\n }),\n gridComponent: React.createElement(LineSegment, {\n type: \"grid\"\n }),\n standalone: true,\n theme: VictoryTheme.grayscale,\n containerComponent: React.createElement(VictoryContainer, null),\n groupComponent: React.createElement(\"g\", {\n role: \"presentation\"\n }),\n fixLabelOverlap: false\n }\n});\nObject.defineProperty(VictoryAxis, \"getDomain\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Axis.getDomain\n});\nObject.defineProperty(VictoryAxis, \"getAxis\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Axis.getAxis\n});\nObject.defineProperty(VictoryAxis, \"getStyles\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return getStyles(props, fallbackProps.style);\n }\n});\nObject.defineProperty(VictoryAxis, \"getBaseProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return getBaseProps(props, fallbackProps);\n }\n});\nObject.defineProperty(VictoryAxis, \"expectedComponents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"axisComponent\", \"axisLabelComponent\", \"groupComponent\", \"containerComponent\", \"tickComponent\", \"tickLabelComponent\", \"gridComponent\"]\n});\nexport default addEvents(VictoryAxis, options);","import _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, 2, 180] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Helpers from \"../victory-util/helpers\";\nimport CommonProps from \"../victory-util/common-props\";\nimport Path from \"./path\";\n\nvar getArcPath = function (props) {\n var cx = props.cx,\n cy = props.cy,\n r = props.r,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n closedPath = props.closedPath; // Always draw the path as two arcs so that complete circles may be rendered.\n\n var halfAngle = Math.abs(endAngle - startAngle) / 2 + startAngle;\n var x1 = cx + r * Math.cos(Helpers.degreesToRadians(startAngle));\n var y1 = cy - r * Math.sin(Helpers.degreesToRadians(startAngle));\n var x2 = cx + r * Math.cos(Helpers.degreesToRadians(halfAngle));\n var y2 = cy - r * Math.sin(Helpers.degreesToRadians(halfAngle));\n var x3 = cx + r * Math.cos(Helpers.degreesToRadians(endAngle));\n var y3 = cy - r * Math.sin(Helpers.degreesToRadians(endAngle));\n var largerArcFlag1 = halfAngle - startAngle <= 180 ? 0 : 1;\n var largerArcFlag2 = endAngle - halfAngle <= 180 ? 0 : 1;\n var arcStart = closedPath ? \" M \".concat(cx, \", \").concat(cy, \" L \").concat(x1, \", \").concat(y1) : \"M \".concat(x1, \", \").concat(y1);\n var arc1 = \"A \".concat(r, \", \").concat(r, \", 0, \").concat(largerArcFlag1, \", 0, \").concat(x2, \", \").concat(y2);\n var arc2 = \"A \".concat(r, \", \").concat(r, \", 0, \").concat(largerArcFlag2, \", 0, \").concat(x3, \", \").concat(y3);\n var arcEnd = closedPath ? \"Z\" : \"\";\n return \"\".concat(arcStart, \" \").concat(arc1, \" \").concat(arc2, \" \").concat(arcEnd);\n};\n\nvar Arc = function (props) {\n return React.cloneElement(props.pathComponent, _objectSpread({}, props.events, {\n d: getArcPath(props),\n style: Helpers.evaluateStyle(_assign({\n stroke: \"black\",\n fill: \"none\"\n }, props.style), props),\n desc: Helpers.evaluateProp(props.desc, props),\n tabIndex: Helpers.evaluateProp(props.tabIndex, props),\n className: props.className,\n role: props.role,\n shapeRendering: props.shapeRendering,\n transform: props.transform,\n clipPath: props.clipPath\n }));\n};\n\nArc.propTypes = _objectSpread({}, CommonProps.primitiveProps, {\n closedPath: PropTypes.bool,\n cx: PropTypes.number,\n cy: PropTypes.number,\n datum: PropTypes.any,\n endAngle: PropTypes.number,\n pathComponent: PropTypes.element,\n r: PropTypes.number,\n startAngle: PropTypes.number\n});\nArc.defaultProps = {\n pathComponent: React.createElement(Path, null),\n role: \"presentation\",\n shapeRendering: \"auto\"\n};\nexport default Arc;","import _defaults from \"lodash/defaults\";\nimport _uniqBy from \"lodash/uniqBy\";\nimport _assign from \"lodash/assign\";\nimport { Helpers, LabelHelpers, Scale, Axis } from \"victory-core\";\n\nvar getPosition = function (r, angle, axis) {\n return axis === \"x\" ? r * Math.cos(angle) : -r * Math.sin(angle);\n};\n\nvar getAxisType = function (props) {\n var typicalType = props.dependentAxis ? \"radial\" : \"angular\";\n var invertedType = typicalType === \"angular\" ? \"radial\" : \"angular\";\n return props.horizontal ? invertedType : typicalType;\n};\n\nvar filterTicks = function (ticks, scale) {\n var compareTicks = function (t) {\n return scale(t) % (2 * Math.PI);\n };\n\n return _uniqBy(ticks, compareTicks);\n};\n\nvar getEvaluatedStyles = function (style, props) {\n return {\n tickStyle: Helpers.evaluateStyle(style.ticks, props),\n labelStyle: Helpers.evaluateStyle(style.tickLabels, props),\n gridStyle: Helpers.evaluateStyle(style.grid, props)\n };\n};\n\nvar getStyleObject = function (props) {\n var theme = props.theme,\n dependentAxis = props.dependentAxis;\n var generalAxisStyle = theme && theme.axis && theme.axis.style;\n var axisType = dependentAxis ? \"dependentAxis\" : \"independentAxis\";\n var specificAxisStyle = theme && theme[axisType] && theme[axisType].style;\n\n var mergeStyles = function () {\n var styleNamespaces = [\"axis\", \"axisLabel\", \"grid\", \"parent\", \"tickLabels\", \"ticks\"];\n return styleNamespaces.reduce(function (memo, curr) {\n memo[curr] = _defaults({}, specificAxisStyle[curr], generalAxisStyle[curr]);\n return memo;\n }, {});\n };\n\n return generalAxisStyle && specificAxisStyle ? mergeStyles() : specificAxisStyle || generalAxisStyle;\n};\n\nvar getRadius = function (props) {\n var _Helpers$getPadding = Helpers.getPadding(props),\n left = _Helpers$getPadding.left,\n right = _Helpers$getPadding.right,\n top = _Helpers$getPadding.top,\n bottom = _Helpers$getPadding.bottom;\n\n var width = props.width,\n height = props.height;\n return Math.min(width - left - right, height - top - bottom) / 2;\n};\n\nvar getRange = function (props, axis) {\n // Return the range from props if one is given.\n if (props.range && props.range[axis]) {\n return props.range[axis];\n } else if (props.range && Array.isArray(props.range)) {\n return props.range;\n }\n\n var axisType = getAxisType(props);\n\n if (axisType === \"angular\") {\n var startAngle = Helpers.degreesToRadians(props.startAngle);\n var endAngle = Helpers.degreesToRadians(props.endAngle);\n return [startAngle, endAngle];\n }\n\n var radius = getRadius(props);\n return [props.innerRadius || 0, radius];\n}; // exposed for use by VictoryChart (necessary?)\n\n\nvar getScale = function (props) {\n var axis = Axis.getAxis(props);\n var scale = Scale.getBaseScale(props, axis);\n var domain = Axis.getDomain(props, axis) || scale.domain();\n var range = getRange(props, axis);\n scale.range(range);\n scale.domain(domain);\n return scale;\n};\n\nvar getStyles = function (props, styleObject) {\n var style = props.style || {};\n styleObject = styleObject || {};\n var parentStyleProps = {\n height: \"auto\",\n width: \"100%\"\n };\n return {\n parent: _defaults(parentStyleProps, style.parent, styleObject.parent),\n axis: _defaults({}, style.axis, styleObject.axis),\n axisLabel: _defaults({}, style.axisLabel, styleObject.axisLabel),\n grid: _defaults({}, style.grid, styleObject.grid),\n ticks: _defaults({}, style.ticks, styleObject.ticks),\n tickLabels: _defaults({}, style.tickLabels, styleObject.tickLabels)\n };\n};\n\nvar getAxisAngle = function (props) {\n var axisAngle = props.axisAngle,\n startAngle = props.startAngle,\n dependentAxis = props.dependentAxis;\n var axis = Axis.getAxis(props);\n var axisValue = Axis.getAxisValue(props, axis);\n\n if (axisValue === undefined || !dependentAxis) {\n return axisAngle === undefined ? startAngle : axisAngle;\n }\n\n return Helpers.radiansToDegrees(axisValue);\n}; //eslint-disable-next-line max-params\n\n\nvar getTickProps = function (props, calculatedValues, tickValue, index) {\n var axisType = calculatedValues.axisType,\n radius = calculatedValues.radius,\n scale = calculatedValues.scale,\n style = calculatedValues.style,\n stringTicks = calculatedValues.stringTicks,\n ticks = calculatedValues.ticks,\n tickFormat = calculatedValues.tickFormat;\n var text = tickFormat(tickValue, index, ticks);\n var tick = stringTicks ? stringTicks[index] : tickValue;\n\n var _getEvaluatedStyles = getEvaluatedStyles(style, {\n tick: tick,\n tickValue: tickValue,\n index: index,\n ticks: ticks,\n stringTicks: stringTicks,\n radius: radius,\n scale: scale,\n axisType: axisType,\n text: text\n }),\n tickStyle = _getEvaluatedStyles.tickStyle;\n\n var tickPadding = tickStyle.padding || 0;\n var angularPadding = tickPadding; // TODO: do some geometry\n\n var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n return axisType === \"angular\" ? {\n index: index,\n datum: tick,\n style: tickStyle,\n x1: radius * Math.cos(scale(tickValue)),\n y1: -radius * Math.sin(scale(tickValue)),\n x2: (radius + tickPadding) * Math.cos(scale(tickValue)),\n y2: -(radius + tickPadding) * Math.sin(scale(tickValue))\n } : {\n style: style,\n index: index,\n datum: tick,\n x1: scale(tickValue) / 2 * Math.cos(axisAngle - angularPadding),\n x2: scale(tickValue) / 2 * Math.cos(axisAngle + angularPadding),\n y1: -(scale(tickValue) / 2) * Math.sin(axisAngle - angularPadding),\n y2: -(scale(tickValue) / 2) * Math.sin(axisAngle + angularPadding)\n };\n}; //eslint-disable-next-line max-params\n\n\nvar getTickLabelProps = function (props, calculatedValues, tickValue, index) {\n var axisType = calculatedValues.axisType,\n radius = calculatedValues.radius,\n tickFormat = calculatedValues.tickFormat,\n style = calculatedValues.style,\n scale = calculatedValues.scale,\n ticks = calculatedValues.ticks,\n stringTicks = calculatedValues.stringTicks;\n var text = tickFormat(tickValue, index, ticks);\n var tick = stringTicks ? stringTicks[index] : tickValue;\n\n var _getEvaluatedStyles2 = getEvaluatedStyles(style, {\n text: text,\n tick: tick,\n tickValue: tickValue,\n index: index,\n ticks: ticks,\n stringTicks: stringTicks,\n radius: radius,\n scale: scale,\n axisType: axisType\n }),\n labelStyle = _getEvaluatedStyles2.labelStyle;\n\n var tickLabelComponent = props.tickLabelComponent;\n var labelPlacement = tickLabelComponent.props && tickLabelComponent.props.labelPlacement ? tickLabelComponent.props.labelPlacement : props.labelPlacement;\n var tickPadding = labelStyle.padding || 0;\n var angularPadding = 0; // TODO: do some geometry\n\n var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n var labelAngle = axisType === \"angular\" ? Helpers.radiansToDegrees(scale(tickValue)) : axisAngle + angularPadding;\n var textAngle = labelStyle.angle === undefined ? LabelHelpers.getPolarAngle(_assign({}, props, {\n labelPlacement: labelPlacement\n }), labelAngle) : labelStyle.angle;\n var labelRadius = axisType === \"angular\" ? radius + tickPadding : scale(tickValue);\n var textAnchor = labelStyle.textAnchor || LabelHelpers.getPolarTextAnchor(_assign({}, props, {\n labelPlacement: labelPlacement\n }), labelAngle);\n return {\n index: index,\n datum: tick,\n style: labelStyle,\n angle: textAngle,\n textAnchor: textAnchor,\n text: text,\n x: labelRadius * Math.cos(Helpers.degreesToRadians(labelAngle)),\n y: -labelRadius * Math.sin(Helpers.degreesToRadians(labelAngle))\n };\n}; //eslint-disable-next-line max-params\n\n\nvar getGridProps = function (props, calculatedValues, tickValue, index) {\n var axisType = calculatedValues.axisType,\n radius = calculatedValues.radius,\n style = calculatedValues.style,\n scale = calculatedValues.scale,\n stringTicks = calculatedValues.stringTicks,\n ticks = calculatedValues.ticks,\n tickFormat = calculatedValues.tickFormat;\n var text = tickFormat(tickValue, index, ticks);\n var startAngle = props.startAngle,\n endAngle = props.endAngle,\n _props$innerRadius = props.innerRadius,\n innerRadius = _props$innerRadius === void 0 ? 0 : _props$innerRadius;\n var tick = stringTicks ? stringTicks[index] : tickValue;\n\n var _getEvaluatedStyles3 = getEvaluatedStyles(style, {\n tick: tick,\n tickValue: tickValue,\n index: index,\n ticks: ticks,\n stringTicks: stringTicks,\n radius: radius,\n scale: scale,\n axisType: axisType,\n text: text\n }),\n gridStyle = _getEvaluatedStyles3.gridStyle;\n\n var angle = scale(tickValue);\n return axisType === \"angular\" ? {\n index: index,\n datum: tick,\n style: gridStyle,\n x1: getPosition(radius, angle, \"x\"),\n y1: getPosition(radius, angle, \"y\"),\n x2: getPosition(innerRadius, angle, \"x\"),\n y2: getPosition(innerRadius, angle, \"y\")\n } : {\n style: gridStyle,\n index: index,\n datum: tick,\n cx: 0,\n cy: 0,\n r: scale(tickValue),\n startAngle: startAngle,\n endAngle: endAngle\n };\n};\n\nvar getAxisLabelProps = function (props, calculatedValues) {\n var axisType = calculatedValues.axisType,\n radius = calculatedValues.radius,\n style = calculatedValues.style,\n scale = calculatedValues.scale;\n var axisLabelComponent = props.axisLabelComponent;\n\n if (axisType !== \"radial\") {\n return {};\n }\n\n var labelPlacement = axisLabelComponent.props && axisLabelComponent.props.labelPlacement ? axisLabelComponent.props.labelPlacement : props.labelPlacement;\n var labelStyle = style && style.axisLabel || {};\n var axisAngle = axisType === \"radial\" ? getAxisAngle(props, scale) : undefined;\n var textAngle = labelStyle.angle === undefined ? LabelHelpers.getPolarAngle(_assign({}, props, {\n labelPlacement: labelPlacement\n }), axisAngle) : labelStyle.angle;\n var labelRadius = radius + (labelStyle.padding || 0);\n var textAnchor = labelStyle.textAnchor || LabelHelpers.getTextPolarAnchor(_assign({}, props, {\n labelPlacement: labelPlacement\n }), axisAngle);\n var verticalAnchor = labelStyle.verticalAnchor || LabelHelpers.getPolarVerticalAnchor(_assign({}, props, {\n labelPlacement: labelPlacement\n }), axisAngle);\n return {\n style: labelStyle,\n angle: textAngle,\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor,\n text: props.label,\n x: getPosition(labelRadius, Helpers.degreesToRadians(axisAngle), \"x\"),\n y: getPosition(labelRadius, Helpers.degreesToRadians(axisAngle), \"y\")\n };\n};\n\nvar getAxisProps = function (modifiedProps, calculatedValues) {\n var style = calculatedValues.style,\n axisType = calculatedValues.axisType,\n radius = calculatedValues.radius,\n scale = calculatedValues.scale;\n var startAngle = modifiedProps.startAngle,\n endAngle = modifiedProps.endAngle,\n _modifiedProps$innerR = modifiedProps.innerRadius,\n innerRadius = _modifiedProps$innerR === void 0 ? 0 : _modifiedProps$innerR;\n var axisAngle = axisType === \"radial\" ? Helpers.degreesToRadians(getAxisAngle(modifiedProps, scale)) : undefined;\n return axisType === \"radial\" ? {\n style: style.axis,\n x1: getPosition(innerRadius, axisAngle, \"x\"),\n x2: getPosition(radius, axisAngle, \"x\"),\n y1: getPosition(innerRadius, axisAngle, \"y\"),\n y2: getPosition(radius, axisAngle, \"y\")\n } : {\n style: style.axis,\n cx: 0,\n cy: 0,\n r: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n};\n\nvar getCalculatedValues = function (props) {\n props = _assign({\n polar: true\n }, props);\n var defaultStyles = getStyleObject(props);\n var style = getStyles(props, defaultStyles);\n var padding = Helpers.getPadding(props);\n var axis = Axis.getAxis(props);\n var axisType = getAxisType(props);\n var stringTicks = Axis.stringTicks(props) ? props.tickValues : undefined;\n var domain = Axis.getDomain(props, axis);\n var range = getRange(props, axis);\n var scale = getScale(props);\n var initialTicks = Axis.getTicks(props, scale);\n var ticks = axisType === \"angular\" ? filterTicks(initialTicks, scale) : initialTicks;\n var tickFormat = Axis.getTickFormat(props, scale);\n var radius = getRadius(props);\n return {\n axis: axis,\n style: style,\n padding: padding,\n stringTicks: stringTicks,\n axisType: axisType,\n scale: scale,\n ticks: ticks,\n tickFormat: tickFormat,\n domain: domain,\n range: range,\n radius: radius\n };\n};\n\nvar getBaseProps = function (props, fallbackProps) {\n props = Axis.modifyProps(props, fallbackProps);\n var calculatedValues = getCalculatedValues(props);\n var style = calculatedValues.style,\n scale = calculatedValues.scale,\n ticks = calculatedValues.ticks,\n domain = calculatedValues.domain;\n var _props = props,\n width = _props.width,\n height = _props.height,\n standalone = _props.standalone,\n theme = _props.theme,\n name = _props.name;\n var axisProps = getAxisProps(props, calculatedValues);\n var axisLabelProps = getAxisLabelProps(props, calculatedValues);\n var initialChildProps = {\n parent: {\n style: style.parent,\n ticks: ticks,\n scale: scale,\n width: width,\n height: height,\n domain: domain,\n standalone: standalone,\n theme: theme,\n name: name\n }\n };\n return ticks.reduce(function (childProps, tick, index) {\n childProps[index] = {\n axis: axisProps,\n axisLabel: axisLabelProps,\n ticks: getTickProps(props, calculatedValues, tick, index),\n tickLabels: getTickLabelProps(props, calculatedValues, tick, index),\n grid: getGridProps(props, calculatedValues, tick, index)\n };\n return childProps;\n }, initialChildProps);\n};\n\nexport { getScale, getStyles, getBaseProps };","import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, Helpers, VictoryLabel, CommonProps, VictoryContainer, VictoryTheme, LineSegment, addEvents, Arc, Axis } from \"victory-core\";\nimport { getScale, getStyles, getBaseProps } from \"./helper-methods\";\nvar fallbackProps = {\n width: 450,\n height: 300,\n padding: 50\n};\nvar options = {\n components: [{\n name: \"axis\",\n index: 0\n }, {\n name: \"axisLabel\",\n index: 0\n }, {\n name: \"grid\"\n }, {\n name: \"parent\",\n index: \"parent\"\n }, {\n name: \"ticks\"\n }, {\n name: \"tickLabels\"\n }]\n};\n\nvar VictoryPolarAxis =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryPolarAxis, _React$Component);\n\n function VictoryPolarAxis() {\n _classCallCheck(this, VictoryPolarAxis);\n\n return _possibleConstructorReturn(this, (VictoryPolarAxis.__proto__ || Object.getPrototypeOf(VictoryPolarAxis)).apply(this, arguments));\n }\n\n _createClass(VictoryPolarAxis, [{\n key: \"renderAxisLine\",\n value: function renderAxisLine(props) {\n var dependentAxis = props.dependentAxis;\n var axisComponent = dependentAxis ? props.axisComponent : props.circularAxisComponent;\n var axisProps = this.getComponentProps(axisComponent, \"axis\", 0);\n return React.cloneElement(axisComponent, axisProps);\n }\n }, {\n key: \"renderLabel\",\n value: function renderLabel(props) {\n var axisLabelComponent = props.axisLabelComponent,\n dependentAxis = props.dependentAxis,\n label = props.label;\n\n if (!label || !dependentAxis) {\n return null;\n }\n\n var axisLabelProps = this.getComponentProps(axisLabelComponent, \"axisLabel\", 0);\n return React.cloneElement(axisLabelComponent, axisLabelProps);\n }\n }, {\n key: \"renderAxis\",\n value: function renderAxis(props) {\n var _this = this;\n\n var tickComponent = props.tickComponent,\n tickLabelComponent = props.tickLabelComponent,\n name = props.name;\n\n var shouldRender = function (componentProps) {\n var _componentProps$style = componentProps.style,\n style = _componentProps$style === void 0 ? {} : _componentProps$style,\n _componentProps$event = componentProps.events,\n events = _componentProps$event === void 0 ? {} : _componentProps$event;\n var visible = style.stroke !== \"transparent\" && style.stroke !== \"none\" && style.strokeWidth !== 0;\n return visible || !_isEmpty(events);\n };\n\n var axisType = props.dependentAxis ? \"radial\" : \"angular\";\n var gridComponent = axisType === \"radial\" ? props.circularGridComponent : props.gridComponent;\n var tickComponents = this.dataKeys.map(function (key, index) {\n var tickProps = _assign({\n key: \"\".concat(name, \"-tick-\").concat(key)\n }, _this.getComponentProps(tickComponent, \"ticks\", index));\n\n var TickComponent = React.cloneElement(tickComponent, tickProps);\n return shouldRender(TickComponent.props) ? TickComponent : undefined;\n }).filter(Boolean);\n var gridComponents = this.dataKeys.map(function (key, index) {\n var gridProps = _assign({\n key: \"\".concat(name, \"-grid-\").concat(key)\n }, _this.getComponentProps(gridComponent, \"grid\", index));\n\n var GridComponent = React.cloneElement(gridComponent, gridProps);\n return shouldRender(GridComponent.props) ? GridComponent : undefined;\n }).filter(Boolean);\n var tickLabelComponents = this.dataKeys.map(function (key, index) {\n var tickLabelProps = _assign({\n key: \"\".concat(name, \"-tick-\").concat(key)\n }, _this.getComponentProps(tickLabelComponent, \"tickLabels\", index));\n\n return React.cloneElement(tickLabelComponent, tickLabelProps);\n });\n var axis = this.renderAxisLine(props);\n var axisLabel = this.renderLabel(props);\n var children = [axis, axisLabel].concat(_toConsumableArray(tickComponents), _toConsumableArray(gridComponents), _toConsumableArray(tickLabelComponents));\n return this.renderGroup(props, children);\n } // Overridden in victory-native\n\n }, {\n key: \"renderGroup\",\n value: function renderGroup(props, children) {\n var groupComponent = props.groupComponent;\n var groupComponentProps = groupComponent.props || {};\n var origin = Helpers.getPolarOrigin(props);\n var transform = groupComponentProps.transform || \"translate(\".concat(origin.x, \", \").concat(origin.y, \")\");\n return React.cloneElement(groupComponent, {\n transform: transform\n }, children);\n }\n }, {\n key: \"shouldAnimate\",\n value: function shouldAnimate() {\n return !!this.props.animate;\n }\n }, {\n key: \"render\",\n value: function render() {\n var animationWhitelist = VictoryPolarAxis.animationWhitelist;\n var props = Axis.modifyProps(this.props, fallbackProps);\n\n if (this.shouldAnimate()) {\n return this.animateComponent(props, animationWhitelist);\n }\n\n var children = this.renderAxis(props);\n return props.standalone ? this.renderContainer(props.containerComponent, children) : children;\n }\n }]);\n\n return VictoryPolarAxis;\n}(React.Component);\n\nObject.defineProperty(VictoryPolarAxis, \"animationWhitelist\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"style\", \"domain\", \"range\", \"tickCount\", \"tickValues\", \"padding\", \"width\", \"height\"]\n});\nObject.defineProperty(VictoryPolarAxis, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryAxis\"\n});\nObject.defineProperty(VictoryPolarAxis, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"axis\"\n});\nObject.defineProperty(VictoryPolarAxis, \"defaultTransitions\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n onExit: {\n duration: 500\n },\n onEnter: {\n duration: 500\n }\n }\n});\nObject.defineProperty(VictoryPolarAxis, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, CommonProps.baseProps, {\n axisAngle: PropTypes.number,\n axisComponent: PropTypes.element,\n axisLabelComponent: PropTypes.element,\n axisValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object]),\n categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n x: PropTypes.arrayOf(PropTypes.string),\n y: PropTypes.arrayOf(PropTypes.string)\n })]),\n circularAxisComponent: PropTypes.element,\n circularGridComponent: PropTypes.element,\n containerComponent: PropTypes.element,\n dependentAxis: PropTypes.bool,\n endAngle: PropTypes.number,\n events: PropTypes.arrayOf(PropTypes.shape({\n target: PropTypes.oneOf([\"axis\", \"axisLabel\", \"grid\", \"ticks\", \"tickLabels\"]),\n eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n eventHandlers: PropTypes.object\n })),\n gridComponent: PropTypes.element,\n innerRadius: CustomPropTypes.nonNegative,\n labelPlacement: PropTypes.oneOf([\"parallel\", \"perpendicular\", \"vertical\"]),\n startAngle: PropTypes.number,\n stringMap: PropTypes.object,\n style: PropTypes.shape({\n parent: PropTypes.object,\n axis: PropTypes.object,\n axisLabel: PropTypes.object,\n grid: PropTypes.object,\n ticks: PropTypes.object,\n tickLabels: PropTypes.object\n }),\n tickComponent: PropTypes.element,\n tickCount: CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.greaterThanZero]),\n tickFormat: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.homogeneousArray]),\n tickLabelComponent: PropTypes.element,\n tickValues: CustomPropTypes.homogeneousArray\n })\n});\nObject.defineProperty(VictoryPolarAxis, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n axisComponent: React.createElement(LineSegment, {\n type: \"axis\"\n }),\n axisLabelComponent: React.createElement(VictoryLabel, null),\n circularAxisComponent: React.createElement(Arc, {\n type: \"axis\"\n }),\n circularGridComponent: React.createElement(Arc, {\n type: \"grid\"\n }),\n containerComponent: React.createElement(VictoryContainer, null),\n endAngle: 360,\n gridComponent: React.createElement(LineSegment, {\n type: \"grid\"\n }),\n groupComponent: React.createElement(\"g\", {\n role: \"presentation\"\n }),\n labelPlacement: \"parallel\",\n startAngle: 0,\n standalone: true,\n theme: VictoryTheme.grayscale,\n tickComponent: React.createElement(LineSegment, {\n type: \"tick\"\n }),\n tickLabelComponent: React.createElement(VictoryLabel, null)\n }\n});\nObject.defineProperty(VictoryPolarAxis, \"getDomain\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Axis.getDomain\n});\nObject.defineProperty(VictoryPolarAxis, \"getAxis\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Axis.getAxis\n});\nObject.defineProperty(VictoryPolarAxis, \"getScale\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: getScale\n});\nObject.defineProperty(VictoryPolarAxis, \"getStyles\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return getStyles(props, fallbackProps.style);\n }\n});\nObject.defineProperty(VictoryPolarAxis, \"getBaseProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return getBaseProps(props, fallbackProps);\n }\n});\nObject.defineProperty(VictoryPolarAxis, \"expectedComponents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"axisComponent\", \"circularAxisComponent\", \"groupComponent\", \"containerComponent\", \"tickComponent\", \"tickLabelComponent\", \"gridComponent\", \"circularGridComponent\"]\n});\nexport default addEvents(VictoryPolarAxis, options);","import _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\n/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport { Helpers, Scale, Axis, Wrapper } from \"victory-core\";\nvar fallbackProps = {\n width: 450,\n height: 300,\n padding: 50\n};\n\nfunction getAxisProps(child, props, calculatedProps) {\n var domain = calculatedProps.domain,\n scale = calculatedProps.scale,\n stringMap = calculatedProps.stringMap,\n categories = calculatedProps.categories,\n horizontal = calculatedProps.horizontal,\n orientations = calculatedProps.orientations;\n var childProps = Axis.modifyProps(_defaults({\n horizontal: horizontal,\n theme: props.theme\n }, child.props));\n var axis = child.type.getAxis(childProps);\n var axisOffset = horizontal ? getHorizontalAxisOffset(props, calculatedProps) : getAxisOffset(props, calculatedProps);\n var crossAxis = childProps.crossAxis === false ? false : true;\n var orientation = childProps.orientation || orientations[axis];\n return {\n stringMap: stringMap,\n horizontal: horizontal,\n categories: categories,\n startAngle: props.startAngle,\n endAngle: props.endAngle,\n innerRadius: props.innerRadius,\n domain: domain,\n scale: scale,\n offsetY: childProps.offsetY !== undefined ? childProps.offsetY : axisOffset.y,\n offsetX: childProps.offsetX !== undefined ? childProps.offsetX : axisOffset.x,\n crossAxis: crossAxis,\n orientation: orientation\n };\n}\n\nfunction getChildProps(child, props, calculatedProps) {\n var axisChild = Axis.findAxisComponents([child]);\n\n if (axisChild.length > 0) {\n return getAxisProps(axisChild[0], props, calculatedProps);\n }\n\n var categories = calculatedProps.categories,\n domain = calculatedProps.domain,\n range = calculatedProps.range,\n scale = calculatedProps.scale,\n stringMap = calculatedProps.stringMap,\n horizontal = calculatedProps.horizontal;\n return {\n categories: categories,\n domain: domain,\n range: range,\n scale: scale,\n stringMap: stringMap,\n horizontal: horizontal\n };\n}\n\nfunction getStyles(props) {\n var styleProps = props.style && props.style.parent;\n return {\n parent: _defaults({}, styleProps, {\n height: \"100%\",\n width: \"100%\",\n userSelect: \"none\"\n })\n };\n}\n\nfunction getOrientation(axis, originSign, horizontal) {\n var sign = originSign || \"positive\";\n var orientations = {\n positive: {\n x: \"bottom\",\n y: \"left\"\n },\n negative: {\n x: \"top\",\n y: \"right\"\n }\n };\n var horizontalOrientations = {\n positive: {\n x: \"left\",\n y: \"bottom\"\n },\n negative: {\n x: \"right\",\n y: \"top\"\n }\n };\n return horizontal ? horizontalOrientations[sign][axis] : orientations[sign][axis];\n}\n\nfunction getCalculatedProps(props, childComponents) {\n var style = getStyles(props);\n props = Helpers.modifyProps(props, fallbackProps, \"chart\");\n var _props = props,\n horizontal = _props.horizontal,\n polar = _props.polar;\n var categories = Wrapper.getCategories(props, childComponents);\n var stringMap = createStringMap(props, childComponents);\n var domain = {\n x: getDomain(_assign({}, props, {\n categories: categories\n }), \"x\", childComponents),\n y: getDomain(_assign({}, props, {\n categories: categories\n }), \"y\", childComponents)\n };\n var range = {\n x: Helpers.getRange(props, \"x\"),\n y: Helpers.getRange(props, \"y\")\n };\n var baseScale = {\n x: Scale.getScaleFromProps(props, \"x\") || Wrapper.getScale(props, \"x\"),\n y: Scale.getScaleFromProps(props, \"y\") || Wrapper.getScale(props, \"y\")\n };\n var scale = {\n x: baseScale.x.domain(domain.x).range(horizontal ? range.y : range.x),\n y: baseScale.y.domain(domain.y).range(horizontal ? range.x : range.y)\n };\n var origin = polar ? Helpers.getPolarOrigin(props) : Axis.getOrigin(domain);\n var originSign = {\n x: Axis.getOriginSign(origin.x, domain.x),\n y: Axis.getOriginSign(origin.y, domain.y)\n };\n var orientations = {\n x: getOrientation(\"x\", originSign.y, horizontal),\n y: getOrientation(\"y\", originSign.x, horizontal)\n };\n var padding = Helpers.getPadding(props);\n return {\n categories: categories,\n domain: domain,\n range: range,\n horizontal: horizontal,\n scale: scale,\n stringMap: stringMap,\n style: style,\n origin: origin,\n padding: padding,\n orientations: orientations\n };\n}\n\nfunction getChildren(props, childComponents, calculatedProps) {\n childComponents = childComponents || getChildComponents(props);\n calculatedProps = calculatedProps || getCalculatedProps(props, childComponents);\n var baseStyle = calculatedProps.style.parent;\n var height = props.height,\n polar = props.polar,\n theme = props.theme,\n width = props.width;\n var _calculatedProps = calculatedProps,\n origin = _calculatedProps.origin,\n horizontal = _calculatedProps.horizontal;\n var parentName = props.name || \"chart\";\n return childComponents.map(function (child, index) {\n var role = child.type && child.type.role;\n var style = Array.isArray(child.props.style) ? child.props.style : _defaults({}, child.props.style, {\n parent: baseStyle\n });\n var childProps = getChildProps(child, props, calculatedProps);\n var name = child.props.name || \"\".concat(parentName, \"-\").concat(role, \"-\").concat(index);\n\n var newProps = _defaults({\n horizontal: horizontal,\n height: height,\n polar: polar,\n theme: theme,\n width: width,\n style: style,\n name: name,\n origin: polar ? origin : undefined,\n padding: calculatedProps.padding,\n key: \"\".concat(name, \"-key-\").concat(index),\n standalone: false\n }, childProps);\n\n return React.cloneElement(child, newProps);\n });\n}\n\nvar getChildComponents = function (props, defaultAxes) {\n var childComponents = React.Children.toArray(props.children);\n\n if (childComponents.length === 0) {\n return [defaultAxes.independent, defaultAxes.dependent];\n }\n\n var axisComponents = {\n dependent: Axis.getAxisComponentsWithParent(childComponents, \"dependent\"),\n independent: Axis.getAxisComponentsWithParent(childComponents, \"independent\")\n };\n\n if (axisComponents.dependent.length === 0 && axisComponents.independent.length === 0) {\n return props.prependDefaultAxes ? [defaultAxes.independent, defaultAxes.dependent].concat(childComponents) : childComponents.concat([defaultAxes.independent, defaultAxes.dependent]);\n }\n\n return childComponents;\n};\n\nvar getDomain = function (props, axis, childComponents) {\n childComponents = childComponents || React.Children.toArray(props.children);\n var domain = Wrapper.getDomain(props, axis, childComponents);\n var axisComponent = Axis.getAxisComponent(childComponents, axis);\n var invertDomain = axisComponent && axisComponent.props && axisComponent.props.invertAxis;\n return invertDomain ? domain.concat().reverse() : domain;\n};\n\nvar getAxisOffset = function (props, calculatedProps) {\n var scale = calculatedProps.scale,\n origin = calculatedProps.origin,\n domain = calculatedProps.domain,\n padding = calculatedProps.padding,\n orientations = calculatedProps.orientations;\n var top = padding.top,\n bottom = padding.bottom,\n left = padding.left,\n right = padding.right; // make the axes line up, and cross when appropriate\n\n var orientationOffset = {\n y: orientations.x === \"bottom\" ? bottom : top,\n x: orientations.y === \"left\" ? left : right\n };\n var originOffset = {\n x: orientations.y === \"left\" ? 0 : props.width,\n y: orientations.x === \"bottom\" ? props.height : 0\n };\n var originPosition = {\n x: origin.x === domain.x[0] || origin.x === domain.x[1] ? 0 : scale.x(origin.x),\n y: origin.y === domain.y[0] || origin.y === domain.y[1] ? 0 : scale.y(origin.y)\n };\n return {\n x: originPosition.x ? Math.abs(originOffset.x - originPosition.x) : orientationOffset.x,\n y: originPosition.y ? Math.abs(originOffset.y - originPosition.y) : orientationOffset.y\n };\n};\n\nvar getHorizontalAxisOffset = function (props, calculatedProps) {\n var scale = calculatedProps.scale,\n origin = calculatedProps.origin,\n domain = calculatedProps.domain,\n padding = calculatedProps.padding,\n orientations = calculatedProps.orientations;\n var top = padding.top,\n bottom = padding.bottom,\n left = padding.left,\n right = padding.right; // make the axes line up, and cross when appropriate\n\n var orientationOffset = {\n x: orientations.y === \"bottom\" ? bottom : top,\n y: orientations.x === \"left\" ? left : right\n };\n var originOffset = {\n y: orientations.x === \"left\" ? 0 : props.width,\n x: orientations.y === \"bottom\" ? props.height : 0\n };\n var originPosition = {\n x: origin.x === domain.x[0] || origin.x === domain.x[1] ? 0 : scale.x(origin.x),\n y: origin.y === domain.y[0] || origin.y === domain.y[1] ? 0 : scale.y(origin.y)\n };\n return {\n y: originPosition.x ? Math.abs(originOffset.x - originPosition.x) : orientationOffset.x,\n x: originPosition.y ? Math.abs(originOffset.y - originPosition.y) : orientationOffset.y\n };\n};\n\nvar createStringMap = function (props, childComponents) {\n var allStrings = Wrapper.getStringsFromChildren(props, childComponents);\n var x = !allStrings.x || allStrings.x.length === 0 ? null : allStrings.x.reduce(function (memo, string, index) {\n memo[string] = index + 1;\n return memo;\n }, {});\n var y = !allStrings.y || allStrings.y.length === 0 ? null : allStrings.y.reduce(function (memo, string, index) {\n memo[string] = index + 1;\n return memo;\n }, {});\n return {\n x: x,\n y: y\n };\n};\n\nexport { getChildren, getCalculatedProps, getChildComponents };","import _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { Helpers, VictoryContainer, VictoryTheme, CommonProps, PropTypes as CustomPropTypes, Wrapper } from \"victory-core\";\nimport { VictorySharedEvents } from \"victory-shared-events\";\nimport { VictoryAxis } from \"victory-axis\";\nimport { VictoryPolarAxis } from \"victory-polar-axis\";\nimport { getChildComponents, getCalculatedProps, getChildren } from \"./helper-methods\";\nimport isEqual from \"react-fast-compare\";\nvar fallbackProps = {\n width: 450,\n height: 300,\n padding: 50\n};\n\nvar VictoryChart =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryChart, _React$Component);\n\n function VictoryChart(props) {\n var _this;\n\n _classCallCheck(this, VictoryChart);\n\n _this = _possibleConstructorReturn(this, (VictoryChart.__proto__ || Object.getPrototypeOf(VictoryChart)).call(this, props));\n _this.state = {};\n\n if (props.animate) {\n _this.state = {\n nodesShouldLoad: false,\n nodesDoneLoad: false,\n animating: true\n };\n _this.setAnimationState = Wrapper.setAnimationState.bind(_assertThisInitialized(_this));\n }\n\n return _this;\n }\n\n _createClass(VictoryChart, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n if (this.props.animate) {\n if (!isEqual(this.props, nextProps)) {\n this.setAnimationState(this.props, nextProps);\n return false;\n }\n }\n\n return true;\n }\n }, {\n key: \"getNewChildren\",\n value: function getNewChildren(props, childComponents, calculatedProps) {\n var children = getChildren(props, childComponents, calculatedProps);\n var getAnimationProps = Wrapper.getAnimationProps.bind(this);\n return children.map(function (child, index) {\n var childProps = _assign({\n animate: getAnimationProps(props, child, index)\n }, child.props);\n\n return React.cloneElement(child, childProps);\n });\n }\n }, {\n key: \"renderContainer\",\n value: function renderContainer(containerComponent, props) {\n var containerProps = _defaults({}, containerComponent.props, props);\n\n return React.cloneElement(containerComponent, containerProps);\n }\n }, {\n key: \"getContainerProps\",\n value: function getContainerProps(props, calculatedProps) {\n var width = props.width,\n height = props.height,\n standalone = props.standalone,\n theme = props.theme,\n polar = props.polar,\n name = props.name;\n var domain = calculatedProps.domain,\n scale = calculatedProps.scale,\n style = calculatedProps.style,\n origin = calculatedProps.origin,\n radius = calculatedProps.radius,\n horizontal = calculatedProps.horizontal;\n return {\n domain: domain,\n scale: scale,\n width: width,\n height: height,\n standalone: standalone,\n theme: theme,\n style: style.parent,\n horizontal: horizontal,\n name: name,\n polar: polar,\n radius: radius,\n origin: polar ? origin : undefined\n };\n }\n }, {\n key: \"render\",\n value: function render() {\n var props = this.state && this.state.nodesWillExit ? this.state.oldProps || this.props : this.props;\n var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"chart\");\n var eventKey = modifiedProps.eventKey,\n containerComponent = modifiedProps.containerComponent,\n groupComponent = modifiedProps.groupComponent,\n standalone = modifiedProps.standalone,\n externalEventMutations = modifiedProps.externalEventMutations;\n var axes = props.polar ? modifiedProps.defaultPolarAxes : modifiedProps.defaultAxes;\n var childComponents = getChildComponents(modifiedProps, axes);\n var calculatedProps = getCalculatedProps(modifiedProps, childComponents);\n var newChildren = this.getNewChildren(modifiedProps, childComponents, calculatedProps);\n var containerProps = standalone ? this.getContainerProps(modifiedProps, calculatedProps) : {};\n var container = standalone ? this.renderContainer(containerComponent, containerProps) : groupComponent;\n var events = Wrapper.getAllEvents(props);\n\n if (!_isEmpty(events)) {\n return React.createElement(VictorySharedEvents, {\n container: container,\n eventKey: eventKey,\n events: events,\n externalEventMutations: externalEventMutations\n }, newChildren);\n }\n\n return React.cloneElement(container, container.props, newChildren);\n }\n }]);\n\n return VictoryChart;\n}(React.Component);\n\nObject.defineProperty(VictoryChart, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryChart\"\n});\nObject.defineProperty(VictoryChart, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, CommonProps.baseProps, {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultAxes: PropTypes.shape({\n independent: PropTypes.element,\n dependent: PropTypes.element\n }),\n defaultPolarAxes: PropTypes.shape({\n independent: PropTypes.element,\n dependent: PropTypes.element\n }),\n endAngle: PropTypes.number,\n innerRadius: CustomPropTypes.nonNegative,\n prependDefaultAxes: PropTypes.bool,\n startAngle: PropTypes.number\n })\n});\nObject.defineProperty(VictoryChart, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n containerComponent: React.createElement(VictoryContainer, null),\n defaultAxes: {\n independent: React.createElement(VictoryAxis, null),\n dependent: React.createElement(VictoryAxis, {\n dependentAxis: true\n })\n },\n defaultPolarAxes: {\n independent: React.createElement(VictoryPolarAxis, null),\n dependent: React.createElement(VictoryPolarAxis, {\n dependentAxis: true\n })\n },\n groupComponent: React.createElement(\"g\", null),\n standalone: true,\n theme: VictoryTheme.grayscale\n }\n});\nObject.defineProperty(VictoryChart, \"expectedComponents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"groupComponent\", \"containerComponent\"]\n});\nexport { VictoryChart as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CustomPropTypes from \"../victory-util/prop-types\";\n\nvar Portal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal(props) {\n var _this;\n\n _classCallCheck(this, Portal);\n\n _this = _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).call(this, props));\n _this.map = {};\n _this.index = 1;\n _this.portalUpdate = _this.portalUpdate.bind(_assertThisInitialized(_this));\n _this.portalRegister = _this.portalRegister.bind(_assertThisInitialized(_this));\n _this.portalDeregister = _this.portalDeregister.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Portal, [{\n key: \"portalRegister\",\n value: function portalRegister() {\n return ++this.index;\n }\n }, {\n key: \"portalUpdate\",\n value: function portalUpdate(key, element) {\n this.map[key] = element;\n this.forceUpdate();\n }\n }, {\n key: \"portalDeregister\",\n value: function portalDeregister(key) {\n delete this.map[key];\n this.forceUpdate();\n }\n }, {\n key: \"getChildren\",\n value: function getChildren() {\n var _this2 = this;\n\n return Object.keys(this.map).map(function (key) {\n var el = _this2.map[key];\n return el ? React.cloneElement(el, {\n key: key\n }) : el;\n });\n } // Overridden in victory-core-native\n\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"svg\", this.props, this.getChildren());\n }\n }]);\n\n return Portal;\n}(React.Component);\n\nObject.defineProperty(Portal, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"Portal\"\n});\nObject.defineProperty(Portal, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n className: PropTypes.string,\n height: CustomPropTypes.nonNegative,\n style: PropTypes.object,\n viewBox: PropTypes.string,\n width: CustomPropTypes.nonNegative\n }\n});\nexport { Portal as default };","import _isFunction from \"lodash/isFunction\";\nimport _isObject from \"lodash/isObject\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CustomPropTypes from \"../victory-util/prop-types\";\nimport Portal from \"../victory-portal/portal\";\nimport Timer from \"../victory-util/timer\";\nimport Helpers from \"../victory-util/helpers\";\n\nvar VictoryContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryContainer, _React$Component);\n\n function VictoryContainer(props) {\n var _this;\n\n _classCallCheck(this, VictoryContainer);\n\n _this = _possibleConstructorReturn(this, (VictoryContainer.__proto__ || Object.getPrototypeOf(VictoryContainer)).call(this, props));\n _this.getTimer = _this.getTimer.bind(_assertThisInitialized(_this));\n _this.containerId = !_isObject(props) || props.containerId === undefined ? _uniqueId(\"victory-container-\") : props.containerId;\n\n _this.savePortalRef = function (portal) {\n _this.portalRef = portal;\n return portal;\n };\n\n _this.portalUpdate = function (key, el) {\n return _this.portalRef.portalUpdate(key, el);\n };\n\n _this.portalRegister = function () {\n return _this.portalRef.portalRegister();\n };\n\n _this.portalDeregister = function (key) {\n return _this.portalRef.portalDeregister(key);\n };\n\n _this.saveContainerRef = props && _isFunction(props.containerRef) ? props.containerRef : function (container) {\n _this.containerRef = container;\n return container;\n };\n _this.shouldHandleWheel = props && props.events && props.events.onWheel;\n\n if (_this.shouldHandleWheel) {\n _this.handleWheel = function (e) {\n return e.preventDefault();\n };\n }\n\n return _this;\n }\n\n _createClass(VictoryContainer, [{\n key: \"getChildContext\",\n value: function getChildContext() {\n return {\n portalUpdate: this.portalUpdate,\n portalRegister: this.portalRegister,\n portalDeregister: this.portalDeregister,\n getTimer: this.getTimer\n };\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.shouldHandleWheel && this.containerRef) {\n this.containerRef.addEventListener(\"wheel\", this.handleWheel);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!this.context.getTimer) {\n this.getTimer().stop();\n }\n\n if (this.shouldHandleWheel && this.containerRef) {\n this.containerRef.removeEventListener(\"wheel\", this.handleWheel);\n }\n }\n }, {\n key: \"getTimer\",\n value: function getTimer() {\n if (this.context.getTimer) {\n return this.context.getTimer();\n }\n\n if (!this.timer) {\n this.timer = new Timer();\n }\n\n return this.timer;\n }\n }, {\n key: \"getIdForElement\",\n value: function getIdForElement(elementName) {\n return \"\".concat(this.containerId, \"-\").concat(elementName);\n } // overridden in custom containers\n\n }, {\n key: \"getChildren\",\n value: function getChildren(props) {\n return props.children;\n }\n }, {\n key: \"renderContainer\",\n value: function renderContainer(props, svgProps, style) {\n var title = props.title,\n desc = props.desc,\n portalComponent = props.portalComponent,\n className = props.className,\n width = props.width,\n height = props.height,\n portalZIndex = props.portalZIndex,\n responsive = props.responsive;\n var children = this.getChildren(props);\n var dimensions = responsive ? {\n width: \"100%\",\n height: \"auto\"\n } : {\n width: width,\n height: height\n };\n\n var divStyle = _assign({\n pointerEvents: \"none\",\n touchAction: \"none\",\n position: \"relative\"\n }, dimensions);\n\n var portalDivStyle = _assign({\n zIndex: portalZIndex,\n position: \"absolute\",\n top: 0,\n left: 0\n }, dimensions);\n\n var svgStyle = _assign({\n pointerEvents: \"all\"\n }, dimensions);\n\n var portalSvgStyle = _assign({\n overflow: \"visible\"\n }, dimensions);\n\n var portalProps = {\n width: width,\n height: height,\n viewBox: svgProps.viewBox,\n style: portalSvgStyle\n };\n return React.createElement(\"div\", {\n style: _defaults({}, style, divStyle),\n className: className,\n ref: this.saveContainerRef\n }, React.createElement(\"svg\", _extends({}, svgProps, {\n style: svgStyle\n }), title ? React.createElement(\"title\", {\n id: this.getIdForElement(\"title\")\n }, title) : null, desc ? React.createElement(\"desc\", {\n id: this.getIdForElement(\"desc\")\n }, desc) : null, children), React.createElement(\"div\", {\n style: portalDivStyle\n }, React.cloneElement(portalComponent, _objectSpread({}, portalProps, {\n ref: this.savePortalRef\n }))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _props = this.props,\n width = _props.width,\n height = _props.height,\n responsive = _props.responsive,\n events = _props.events,\n title = _props.title,\n desc = _props.desc,\n tabIndex = _props.tabIndex;\n var style = responsive ? this.props.style : Helpers.omit(this.props.style, [\"height\", \"width\"]);\n\n var svgProps = _assign({\n width: width,\n height: height,\n tabIndex: tabIndex,\n role: \"img\",\n \"aria-labelledby\": title ? this.getIdForElement(\"title\") : undefined,\n \"aria-describedby\": desc ? this.getIdForElement(\"desc\") : undefined,\n viewBox: responsive ? \"0 0 \".concat(width, \" \").concat(height) : undefined\n }, events);\n\n return this.renderContainer(this.props, svgProps, style);\n }\n }]);\n\n return VictoryContainer;\n}(React.Component);\n\nObject.defineProperty(VictoryContainer, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryContainer\"\n});\nObject.defineProperty(VictoryContainer, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"container\"\n});\nObject.defineProperty(VictoryContainer, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n className: PropTypes.string,\n containerId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n containerRef: PropTypes.func,\n desc: PropTypes.string,\n events: PropTypes.object,\n height: CustomPropTypes.nonNegative,\n name: PropTypes.string,\n origin: PropTypes.shape({\n x: CustomPropTypes.nonNegative,\n y: CustomPropTypes.nonNegative\n }),\n polar: PropTypes.bool,\n portalComponent: PropTypes.element,\n portalZIndex: CustomPropTypes.integer,\n responsive: PropTypes.bool,\n style: PropTypes.object,\n tabIndex: PropTypes.number,\n theme: PropTypes.object,\n title: PropTypes.string,\n width: CustomPropTypes.nonNegative\n }\n});\nObject.defineProperty(VictoryContainer, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n className: \"VictoryContainer\",\n portalComponent: React.createElement(Portal, null),\n portalZIndex: 99,\n responsive: true\n }\n});\nObject.defineProperty(VictoryContainer, \"contextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n getTimer: PropTypes.func\n }\n});\nObject.defineProperty(VictoryContainer, \"childContextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n portalUpdate: PropTypes.func,\n portalRegister: PropTypes.func,\n portalDeregister: PropTypes.func,\n getTimer: PropTypes.func\n }\n});\nexport { VictoryContainer as default };","import React from \"react\";\n\nvar TSpan = function (props) {\n return React.createElement(\"tspan\", props);\n};\n\nexport default TSpan;","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar Text = function (props) {\n var children = props.children,\n title = props.title,\n desc = props.desc,\n rest = _objectWithoutProperties(props, [\"children\", \"title\", \"desc\"]);\n\n return React.createElement(\"text\", rest, title && React.createElement(\"title\", null, title), desc && React.createElement(\"desc\", null, desc), children);\n};\n\nText.propTypes = {\n children: PropTypes.node,\n desc: PropTypes.string,\n title: PropTypes.string\n};\nexport default Text;","import _isEmpty from \"lodash/isEmpty\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport VictoryPortal from \"../victory-portal/victory-portal\";\nimport CustomPropTypes from \"../victory-util/prop-types\";\nimport Helpers from \"../victory-util/helpers\";\nimport LabelHelpers from \"../victory-util/label-helpers\";\nimport Style from \"../victory-util/style\";\nimport Log from \"../victory-util/log\";\nimport TSpan from \"../victory-primitives/tspan\";\nimport Text from \"../victory-primitives/text\";\nvar defaultStyles = {\n fill: \"#252525\",\n fontSize: 14,\n fontFamily: \"'Gill Sans', 'Gill Sans MT', 'Ser­avek', 'Trebuchet MS', sans-serif\",\n stroke: \"transparent\"\n};\n\nvar getPosition = function (props, dimension) {\n if (!props.datum) {\n return 0;\n }\n\n var scaledPoint = Helpers.scalePoint(props, props.datum);\n return scaledPoint[dimension];\n};\n\nvar getFontSize = function (style) {\n var baseSize = style && style.fontSize;\n\n if (typeof baseSize === \"number\") {\n return baseSize;\n } else if (baseSize === undefined || baseSize === null) {\n return defaultStyles.fontSize;\n } else if (typeof baseSize === \"string\") {\n var fontSize = +baseSize.replace(\"px\", \"\");\n\n if (!isNaN(fontSize)) {\n return fontSize;\n } else {\n Log.warn(\"fontSize should be expressed as a number of pixels\");\n return defaultStyles.fontSize;\n }\n }\n\n return defaultStyles.fontSize;\n};\n\nvar getStyles = function (style, props) {\n var getSingleStyle = function (s) {\n s = s ? _defaults({}, s, defaultStyles) : defaultStyles;\n var baseStyles = Helpers.evaluateStyle(s, props);\n return _assign({}, baseStyles, {\n fontSize: getFontSize(baseStyles)\n });\n };\n\n return Array.isArray(style) && !_isEmpty(style) ? style.map(function (s) {\n return getSingleStyle(s);\n }) : [getSingleStyle(style)];\n};\n\nvar getHeight = function (props, type) {\n return Helpers.evaluateProp(props[type], props);\n};\n\nvar getContent = function (text, props) {\n if (text === undefined || text === null) {\n return undefined;\n }\n\n if (Array.isArray(text)) {\n return text.map(function (line) {\n return Helpers.evaluateProp(line, props);\n });\n }\n\n var child = Helpers.evaluateProp(text, props);\n\n if (child === undefined || child === null) {\n return undefined;\n }\n\n return Array.isArray(child) ? child : \"\".concat(child).split(\"\\n\");\n};\n\nvar checkLineHeight = function (lineHeight, val, fallbackVal) {\n if (Array.isArray(lineHeight)) {\n return _isEmpty(lineHeight) ? fallbackVal : val;\n }\n\n return lineHeight;\n};\n\nvar getDy = function (props, lineHeight) {\n var style = Array.isArray(props.style) ? props.style[0] : props.style;\n lineHeight = checkLineHeight(lineHeight, lineHeight[0], 1);\n var fontSize = style.fontSize;\n var dy = props.dy ? Helpers.evaluateProp(props.dy, props) : 0;\n var length = props.text.length;\n var capHeight = getHeight(props, \"capHeight\");\n var verticalAnchor = style.verticalAnchor || props.verticalAnchor;\n var anchor = verticalAnchor ? Helpers.evaluateProp(verticalAnchor, props) : \"middle\";\n\n switch (anchor) {\n case \"end\":\n return dy + (capHeight / 2 + (0.5 - length) * lineHeight) * fontSize;\n\n case \"middle\":\n return dy + (capHeight / 2 + (0.5 - length / 2) * lineHeight) * fontSize;\n\n default:\n return dy + (capHeight / 2 + lineHeight / 2) * fontSize;\n }\n};\n\nvar getTransform = function (props) {\n var x = props.x,\n y = props.y,\n polar = props.polar,\n style = props.style;\n var defaultAngle = polar ? LabelHelpers.getPolarAngle(props) : 0;\n var baseAngle = style.angle === undefined ? props.angle : style.angle;\n var angle = baseAngle === undefined ? defaultAngle : baseAngle;\n var transform = props.transform || style.transform;\n var transformPart = transform && Helpers.evaluateProp(transform, props);\n var rotatePart = angle && {\n rotate: [angle, x, y]\n };\n return transformPart || angle ? Style.toTransformString(transformPart, rotatePart) : undefined;\n};\n\nvar renderElements = function (props) {\n var inline = props.inline,\n className = props.className,\n title = props.title,\n events = props.events,\n direction = props.direction,\n text = props.text,\n style = props.style;\n var lineHeight = getHeight(props, \"lineHeight\");\n var textAnchor = props.textAnchor ? Helpers.evaluateProp(props.textAnchor, props) : \"start\";\n var dx = props.dx ? Helpers.evaluateProp(props.dx, props) : 0;\n var dy = getDy(props, lineHeight);\n var transform = getTransform(props);\n var x = props.x !== undefined ? props.x : getPosition(props, \"x\");\n var y = props.y !== undefined ? props.y : getPosition(props, \"y\");\n var textChildren = text.map(function (line, i) {\n var currentStyle = style[i] || style[0];\n var lastStyle = style[i - 1] || style[0];\n var fontSize = (currentStyle.fontSize + lastStyle.fontSize) / 2;\n var currentLineHeight = checkLineHeight(lineHeight, (lineHeight[i] + (lineHeight[i - 1] || lineHeight[0])) / 2, 1);\n var tspanProps = {\n key: \"\".concat(props.id, \"-key-\").concat(i),\n x: !inline ? props.x : undefined,\n dx: dx,\n dy: i && !inline ? currentLineHeight * fontSize : undefined,\n textAnchor: currentStyle.textAnchor || textAnchor,\n style: currentStyle,\n children: line\n };\n return React.cloneElement(props.tspanComponent, tspanProps);\n });\n return React.cloneElement(props.textComponent, _objectSpread({}, events, {\n direction: direction,\n dx: dx,\n dy: dy,\n x: x,\n y: y,\n transform: transform,\n className: className,\n title: title,\n desc: Helpers.evaluateProp(props.desc, props),\n tabIndex: Helpers.evaluateProp(props.tabIndex, props),\n id: props.id\n }), textChildren);\n};\n\nvar evaluateProps = function (props) {\n /* Potential evaluated props are\n 1) text\n 2) style\n 3) everything else\n */\n var text = getContent(props.text, props);\n var style = getStyles(props.style, _assign({}, props, {\n text: text\n }));\n return _assign({}, props, {\n style: style,\n text: text\n });\n};\n\nvar VictoryLabel = function (props) {\n props = evaluateProps(props);\n\n if (props.text === null || props.text === undefined) {\n return null;\n }\n\n var label = renderElements(props);\n return props.renderInPortal ? React.createElement(VictoryPortal, null, label) : label;\n};\n\nVictoryLabel.displayName = \"VictoryLabel\";\nVictoryLabel.role = \"label\";\nVictoryLabel.defaultStyles = defaultStyles;\nVictoryLabel.propTypes = {\n active: PropTypes.bool,\n angle: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n capHeight: PropTypes.oneOfType([PropTypes.string, CustomPropTypes.nonNegative, PropTypes.func]),\n className: PropTypes.string,\n data: PropTypes.array,\n datum: PropTypes.any,\n desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n direction: PropTypes.oneOf([\"rtl\", \"ltr\", \"inherit\"]),\n dx: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n dy: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.func]),\n events: PropTypes.object,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n inline: PropTypes.bool,\n labelPlacement: PropTypes.oneOf([\"parallel\", \"perpendicular\", \"vertical\"]),\n lineHeight: PropTypes.oneOfType([PropTypes.string, CustomPropTypes.nonNegative, PropTypes.func, PropTypes.array]),\n origin: PropTypes.shape({\n x: CustomPropTypes.nonNegative,\n y: CustomPropTypes.nonNegative\n }),\n polar: PropTypes.bool,\n renderInPortal: PropTypes.bool,\n scale: PropTypes.shape({\n x: CustomPropTypes.scale,\n y: CustomPropTypes.scale\n }),\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.array]),\n textAnchor: PropTypes.oneOfType([PropTypes.oneOf([\"start\", \"middle\", \"end\", \"inherit\"]), PropTypes.func]),\n textComponent: PropTypes.element,\n title: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]),\n tspanComponent: PropTypes.element,\n verticalAnchor: PropTypes.oneOfType([PropTypes.oneOf([\"start\", \"middle\", \"end\"]), PropTypes.func]),\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\nVictoryLabel.defaultProps = {\n direction: \"inherit\",\n textComponent: React.createElement(Text, null),\n tspanComponent: React.createElement(TSpan, null),\n capHeight: 0.71,\n // Magic number from d3.\n lineHeight: 1\n};\nexport default VictoryLabel;","import _defaults from \"lodash/defaults\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Log from \"../victory-util/log\";\nimport Helpers from \"../victory-util/helpers\";\n\nvar VictoryPortal =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryPortal, _React$Component);\n\n function VictoryPortal() {\n _classCallCheck(this, VictoryPortal);\n\n return _possibleConstructorReturn(this, (VictoryPortal.__proto__ || Object.getPrototypeOf(VictoryPortal)).apply(this, arguments));\n }\n\n _createClass(VictoryPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.checkedContext) {\n if (typeof this.context.portalUpdate !== \"function\") {\n var msg = \"`renderInPortal` is not supported outside of `VictoryContainer`. \" + \"Component will be rendered in place\";\n Log.warn(msg);\n this.renderInPlace = true;\n }\n\n this.checkedContext = true;\n }\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.renderInPlace) {\n this.portalKey = this.portalKey || this.context.portalRegister();\n this.context.portalUpdate(this.portalKey, this.element);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.context && this.context.portalDeregister) {\n this.context.portalDeregister(this.portalKey);\n }\n } // Overridden in victory-core-native\n\n }, {\n key: \"renderPortal\",\n value: function renderPortal(child) {\n if (this.renderInPlace) {\n return child;\n }\n\n this.element = child;\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = Array.isArray(this.props.children) ? this.props.children[0] : this.props.children;\n var groupComponent = this.props.groupComponent;\n var childProps = children && children.props || {};\n var standardProps = childProps.groupComponent ? {\n groupComponent: groupComponent,\n standalone: false\n } : {};\n\n var newProps = _defaults(standardProps, childProps, Helpers.omit(this.props, [\"children\", \"groupComponent\"]));\n\n var child = children && React.cloneElement(children, newProps);\n return this.renderPortal(child);\n }\n }]);\n\n return VictoryPortal;\n}(React.Component);\n\nObject.defineProperty(VictoryPortal, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryPortal\"\n});\nObject.defineProperty(VictoryPortal, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"portal\"\n});\nObject.defineProperty(VictoryPortal, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n children: PropTypes.node,\n groupComponent: PropTypes.element\n }\n});\nObject.defineProperty(VictoryPortal, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n groupComponent: React.createElement(\"g\", null)\n }\n});\nObject.defineProperty(VictoryPortal, \"contextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n portalDeregister: PropTypes.func,\n portalRegister: PropTypes.func,\n portalUpdate: PropTypes.func\n }\n});\nexport { VictoryPortal as default };","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nimport React from \"react\";\n\nvar Path = function (props) {\n // eslint-disable-next-line react/prop-types\n var desc = props.desc,\n rest = _objectWithoutProperties(props, [\"desc\"]);\n\n return desc ? React.createElement(\"path\", rest, React.createElement(\"desc\", null, desc)) : React.createElement(\"path\", rest);\n};\n\nexport default Path;","import _assign from \"lodash/assign\";\n// *\n// * Colors\n// *\nvar yellow200 = \"#FFF59D\";\nvar deepOrange600 = \"#F4511E\";\nvar lime300 = \"#DCE775\";\nvar lightGreen500 = \"#8BC34A\";\nvar teal700 = \"#00796B\";\nvar cyan900 = \"#006064\";\nvar colors = [deepOrange600, yellow200, lime300, lightGreen500, teal700, cyan900];\nvar blueGrey50 = \"#ECEFF1\";\nvar blueGrey300 = \"#90A4AE\";\nvar blueGrey700 = \"#455A64\";\nvar grey900 = \"#212121\"; // *\n// * Typography\n// *\n\nvar sansSerif = \"'Roboto', 'Helvetica Neue', Helvetica, sans-serif\";\nvar letterSpacing = \"normal\";\nvar fontSize = 12; // *\n// * Layout\n// *\n\nvar padding = 8;\nvar baseProps = {\n width: 350,\n height: 350,\n padding: 50\n}; // *\n// * Labels\n// *\n\nvar baseLabelStyles = {\n fontFamily: sansSerif,\n fontSize: fontSize,\n letterSpacing: letterSpacing,\n padding: padding,\n fill: blueGrey700,\n stroke: \"transparent\",\n strokeWidth: 0\n};\n\nvar centeredLabelStyles = _assign({\n textAnchor: \"middle\"\n}, baseLabelStyles); // *\n// * Strokes\n// *\n\n\nvar strokeDasharray = \"10, 5\";\nvar strokeLinecap = \"round\";\nvar strokeLinejoin = \"round\";\nexport default {\n area: _assign({\n style: {\n data: {\n fill: grey900\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n axis: _assign({\n style: {\n axis: {\n fill: \"transparent\",\n stroke: blueGrey300,\n strokeWidth: 2,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin\n },\n axisLabel: _assign({}, centeredLabelStyles, {\n padding: padding,\n stroke: \"transparent\"\n }),\n grid: {\n fill: \"none\",\n stroke: blueGrey50,\n strokeDasharray: strokeDasharray,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin,\n pointerEvents: \"painted\"\n },\n ticks: {\n fill: \"transparent\",\n size: 5,\n stroke: blueGrey300,\n strokeWidth: 1,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin\n },\n tickLabels: _assign({}, baseLabelStyles, {\n fill: blueGrey700\n })\n }\n }, baseProps),\n bar: _assign({\n style: {\n data: {\n fill: blueGrey700,\n padding: padding,\n strokeWidth: 0\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n boxplot: _assign({\n style: {\n max: {\n padding: padding,\n stroke: blueGrey700,\n strokeWidth: 1\n },\n maxLabels: baseLabelStyles,\n median: {\n padding: padding,\n stroke: blueGrey700,\n strokeWidth: 1\n },\n medianLabels: baseLabelStyles,\n min: {\n padding: padding,\n stroke: blueGrey700,\n strokeWidth: 1\n },\n minLabels: baseLabelStyles,\n q1: {\n padding: padding,\n fill: blueGrey700\n },\n q1Labels: baseLabelStyles,\n q3: {\n padding: padding,\n fill: blueGrey700\n },\n q3Labels: baseLabelStyles\n },\n boxWidth: 20\n }, baseProps),\n candlestick: _assign({\n style: {\n data: {\n stroke: blueGrey700\n },\n labels: baseLabelStyles\n },\n candleColors: {\n positive: \"#ffffff\",\n negative: blueGrey700\n }\n }, baseProps),\n chart: baseProps,\n errorbar: _assign({\n borderWidth: 8,\n style: {\n data: {\n fill: \"transparent\",\n opacity: 1,\n stroke: blueGrey700,\n strokeWidth: 2\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n group: _assign({\n colorScale: colors\n }, baseProps),\n legend: {\n colorScale: colors,\n gutter: 10,\n orientation: \"vertical\",\n titleOrientation: \"top\",\n style: {\n data: {\n type: \"circle\"\n },\n labels: baseLabelStyles,\n title: _assign({}, baseLabelStyles, {\n padding: 5\n })\n }\n },\n line: _assign({\n style: {\n data: {\n fill: \"transparent\",\n opacity: 1,\n stroke: blueGrey700,\n strokeWidth: 2\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n pie: _assign({\n colorScale: colors,\n style: {\n data: {\n padding: padding,\n stroke: blueGrey50,\n strokeWidth: 1\n },\n labels: _assign({}, baseLabelStyles, {\n padding: 20\n })\n }\n }, baseProps),\n scatter: _assign({\n style: {\n data: {\n fill: blueGrey700,\n opacity: 1,\n stroke: \"transparent\",\n strokeWidth: 0\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n stack: _assign({\n colorScale: colors\n }, baseProps),\n tooltip: {\n style: _assign({}, baseLabelStyles, {\n padding: 5,\n pointerEvents: \"none\"\n }),\n flyoutStyle: {\n stroke: grey900,\n strokeWidth: 1,\n fill: \"#f0f0f0\",\n pointerEvents: \"none\"\n },\n cornerRadius: 5,\n pointerLength: 10\n },\n voronoi: _assign({\n style: {\n data: {\n fill: \"transparent\",\n stroke: \"transparent\",\n strokeWidth: 0\n },\n labels: _assign({}, baseLabelStyles, {\n padding: 5,\n pointerEvents: \"none\"\n }),\n flyout: {\n stroke: grey900,\n strokeWidth: 1,\n fill: \"#f0f0f0\",\n pointerEvents: \"none\"\n }\n }\n }, baseProps)\n};","import _assign from \"lodash/assign\";\n// *\n// * Colors\n// *\nvar colors = [\"#252525\", \"#525252\", \"#737373\", \"#969696\", \"#bdbdbd\", \"#d9d9d9\", \"#f0f0f0\"];\nvar charcoal = \"#252525\";\nvar grey = \"#969696\"; // *\n// * Typography\n// *\n\nvar sansSerif = \"'Gill Sans', 'Gill Sans MT', 'Seravek', 'Trebuchet MS', sans-serif\";\nvar letterSpacing = \"normal\";\nvar fontSize = 14; // *\n// * Layout\n// *\n\nvar baseProps = {\n width: 450,\n height: 300,\n padding: 50,\n colorScale: colors\n}; // *\n// * Labels\n// *\n\nvar baseLabelStyles = {\n fontFamily: sansSerif,\n fontSize: fontSize,\n letterSpacing: letterSpacing,\n padding: 10,\n fill: charcoal,\n stroke: \"transparent\"\n};\n\nvar centeredLabelStyles = _assign({\n textAnchor: \"middle\"\n}, baseLabelStyles); // *\n// * Strokes\n// *\n\n\nvar strokeLinecap = \"round\";\nvar strokeLinejoin = \"round\";\nexport default {\n area: _assign({\n style: {\n data: {\n fill: charcoal\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n axis: _assign({\n style: {\n axis: {\n fill: \"transparent\",\n stroke: charcoal,\n strokeWidth: 1,\n strokeLinecap: strokeLinecap,\n strokeLinejoin: strokeLinejoin\n },\n axisLabel: _assign({}, centeredLabelStyles, {\n padding: 25\n }),\n grid: {\n fill: \"none\",\n stroke: \"none\",\n pointerEvents: \"painted\"\n },\n ticks: {\n fill: \"transparent\",\n size: 1,\n stroke: \"transparent\"\n },\n tickLabels: baseLabelStyles\n }\n }, baseProps),\n bar: _assign({\n style: {\n data: {\n fill: charcoal,\n padding: 8,\n strokeWidth: 0\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n boxplot: _assign({\n style: {\n max: {\n padding: 8,\n stroke: charcoal,\n strokeWidth: 1\n },\n maxLabels: baseLabelStyles,\n median: {\n padding: 8,\n stroke: charcoal,\n strokeWidth: 1\n },\n medianLabels: baseLabelStyles,\n min: {\n padding: 8,\n stroke: charcoal,\n strokeWidth: 1\n },\n minLabels: baseLabelStyles,\n q1: {\n padding: 8,\n fill: grey\n },\n q1Labels: baseLabelStyles,\n q3: {\n padding: 8,\n fill: grey\n },\n q3Labels: baseLabelStyles\n },\n boxWidth: 20\n }, baseProps),\n candlestick: _assign({\n style: {\n data: {\n stroke: charcoal,\n strokeWidth: 1\n },\n labels: baseLabelStyles\n },\n candleColors: {\n positive: \"#ffffff\",\n negative: charcoal\n }\n }, baseProps),\n chart: baseProps,\n errorbar: _assign({\n borderWidth: 8,\n style: {\n data: {\n fill: \"transparent\",\n stroke: charcoal,\n strokeWidth: 2\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n group: _assign({\n colorScale: colors\n }, baseProps),\n legend: {\n colorScale: colors,\n gutter: 10,\n orientation: \"vertical\",\n titleOrientation: \"top\",\n style: {\n data: {\n type: \"circle\"\n },\n labels: baseLabelStyles,\n title: _assign({}, baseLabelStyles, {\n padding: 5\n })\n }\n },\n line: _assign({\n style: {\n data: {\n fill: \"transparent\",\n stroke: charcoal,\n strokeWidth: 2\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n pie: {\n style: {\n data: {\n padding: 10,\n stroke: \"transparent\",\n strokeWidth: 1\n },\n labels: _assign({}, baseLabelStyles, {\n padding: 20\n })\n },\n colorScale: colors,\n width: 400,\n height: 400,\n padding: 50\n },\n scatter: _assign({\n style: {\n data: {\n fill: charcoal,\n stroke: \"transparent\",\n strokeWidth: 0\n },\n labels: baseLabelStyles\n }\n }, baseProps),\n stack: _assign({\n colorScale: colors\n }, baseProps),\n tooltip: {\n style: _assign({}, baseLabelStyles, {\n padding: 5,\n pointerEvents: \"none\"\n }),\n flyoutStyle: {\n stroke: charcoal,\n strokeWidth: 1,\n fill: \"#f0f0f0\",\n pointerEvents: \"none\"\n },\n cornerRadius: 5,\n pointerLength: 10\n },\n voronoi: _assign({\n style: {\n data: {\n fill: \"transparent\",\n stroke: \"transparent\",\n strokeWidth: 0\n },\n labels: _assign({}, baseLabelStyles, {\n padding: 5,\n pointerEvents: \"none\"\n }),\n flyout: {\n stroke: charcoal,\n strokeWidth: 1,\n fill: \"#f0f0f0\",\n pointerEvents: \"none\"\n }\n }\n }, baseProps)\n};","import materialTheme from \"./material\";\nimport grayscaleTheme from \"./grayscale\";\nexport default {\n material: materialTheme,\n grayscale: grayscaleTheme\n};","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import _orderBy from \"lodash/orderBy\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport { interpolate } from \"d3-interpolate\";\nexport var isInterpolatable = function (obj) {\n // d3 turns null into 0 and undefined into NaN, which we don't want.\n if (obj !== null) {\n switch (typeof obj) {\n case \"undefined\":\n return false;\n\n case \"number\":\n // The standard `isNaN` is fine in this case since we already know the\n // type is number.\n return !isNaN(obj) && obj !== Number.POSITIVE_INFINITY && obj !== Number.NEGATIVE_INFINITY;\n\n case \"string\":\n // d3 might not *actually* be able to interpolate the string, but it\n // won't cause any issues to let it try.\n return true;\n\n case \"boolean\":\n // d3 turns Booleans into integers, which we don't want. Sure, we could\n // interpolate from 0 -> 1, but we'd be sending a non-Boolean to\n // something expecting a Boolean.\n return false;\n\n case \"object\":\n // Don't try to interpolate class instances (except Date or Array).\n return obj instanceof Date || Array.isArray(obj) || _isPlainObject(obj);\n\n case \"function\":\n // Careful! There may be extra properties on function objects that the\n // component expects to access - for instance, it may be a `d3.scale()`\n // function, which has its own methods attached. We don't know if the\n // component is only going to call the function (in which case it's\n // safely interpolatable) or if it's going to access special properties\n // (in which case our function generated from `interpolateFunction` will\n // most likely cause an error. We could check for enumerable properties\n // on the function object here to see if it's a \"plain\" function, but\n // let's just require that components prevent such function props from\n // being animated in the first place.\n return true;\n }\n }\n\n return false;\n};\n/**\n * Interpolate immediately to the end value at the given step `when`.\n * Some nicer default behavior might be to jump at the halfway point or return\n * `a` if `t` is 0 (instead of always returning `b`). But d3's default\n * interpolator does not do these things:\n *\n * d3.interpolate('aaa', 'bbb')(0) === 'bbb'\n *\n * ...and things might get wonky if we don't replicate that behavior.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @param {Number} when - Step value (0 to 1) at which to jump to `b`.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateImmediate = function (a, b) {\n var when = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n return function (t) {\n return t < when ? a : b;\n };\n};\n/**\n * Interpolate to or from a function. The interpolated value will be a function\n * that calls `a` (if it's a function) and `b` (if it's a function) and calls\n * `d3.interpolate` on the resulting values. Note that our function won't\n * necessarily be called (that's up to the component this eventually gets\n * passed to) - but if it does get called, it will return an appropriately\n * interpolated value.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateFunction = function (a, b) {\n return function (t) {\n if (t >= 1) {\n return b;\n }\n\n return function () {\n /* eslint-disable no-invalid-this */\n var aval = typeof a === \"function\" ? a.apply(this, arguments) : a;\n var bval = typeof b === \"function\" ? b.apply(this, arguments) : b;\n return interpolate(aval, bval)(t);\n };\n };\n};\n/**\n * Interpolate to or from an object. This method is a modification of the object interpolator in\n * d3-interpolate https://github.com/d3/d3-interpolate/blob/master/src/object.js. This interpolator\n * differs in that it uses our custom interpolators when interpolating the value of each property in\n * an object. This allows the correct interpolation of nested objects, including styles\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function} An interpolation function.\n */\n\nexport var interpolateObject = function (a, b) {\n var interpolateTypes = function (x, y) {\n if (x === y || !isInterpolatable(x) || !isInterpolatable(y)) {\n return interpolateImmediate(x, y);\n }\n\n if (typeof x === \"function\" || typeof y === \"function\") {\n return interpolateFunction(x, y);\n }\n\n if (typeof x === \"object\" && _isPlainObject(x) || typeof y === \"object\" && _isPlainObject(y)) {\n return interpolateObject(x, y);\n }\n\n return interpolate(x, y);\n }; // When the value is an array, attempt to sort by \"key\" so that animating nodes may be identified\n // based on \"key\" instead of index\n\n\n var keyData = function (val) {\n return Array.isArray(val) ? _orderBy(val, \"key\") : val;\n };\n\n var i = {};\n var c = {};\n var k;\n\n if (a === null || typeof a !== \"object\") {\n a = {};\n }\n\n if (b === null || typeof b !== \"object\") {\n b = {};\n }\n\n for (k in b) {\n if (k in a) {\n i[k] = interpolateTypes(keyData(a[k]), keyData(b[k]));\n } else {\n c[k] = b[k];\n }\n }\n\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n\n return c;\n };\n};\nexport var interpolateString = function (a, b) {\n var format = function (val) {\n return typeof val === \"string\" ? val.replace(/,/g, \"\") : val;\n };\n\n return interpolate(format(a), format(b));\n};\n/**\n * By default, the list of interpolators used by `d3.interpolate` has a few\n * downsides:\n *\n * - `null` values get turned into 0.\n * - `undefined`, `function`, and some other value types get turned into NaN.\n * - Boolean types get turned into numbers, which probably will be meaningless\n * to whatever is consuming them.\n * - It tries to interpolate between identical start and end values, doing\n * unnecessary calculations that sometimes result in floating point rounding\n * errors.\n *\n * If only the default interpolators are used, `VictoryAnimation` will happily\n * pass down NaN (and other bad) values as props to the wrapped component.\n * The component will then either use the incorrect values or complain that it\n * was passed props of the incorrect type. This custom interpolator is added\n * using the `d3.interpolators` API, and prevents such cases from happening\n * for most values.\n *\n * @param {any} a - Start value.\n * @param {any} b - End value.\n * @returns {Function|undefined} An interpolation function, if necessary.\n */\n\nexport var victoryInterpolator = function (a, b) {\n // If the values are strictly equal, or either value is not interpolatable,\n // just use either the start value `a` or end value `b` at every step, as\n // there is no reasonable in-between value.\n if (a === b || !isInterpolatable(a) || !isInterpolatable(b)) {\n return interpolateImmediate(a, b);\n }\n\n if (typeof a === \"function\" || typeof b === \"function\") {\n return interpolateFunction(a, b);\n }\n\n if (_isPlainObject(a) || _isPlainObject(b)) {\n return interpolateObject(a, b);\n }\n\n if (typeof a === \"string\" || typeof b === \"string\") {\n return interpolateString(a, b);\n }\n\n return interpolate(a, b);\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\n/*global setTimeout:false */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as d3Ease from \"d3-ease\";\nimport { victoryInterpolator } from \"./util\";\nimport Timer from \"../victory-util/timer\";\nimport isEqual from \"react-fast-compare\";\n\nvar VictoryAnimation =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryAnimation, _React$Component);\n\n function VictoryAnimation(props) {\n var _this;\n\n _classCallCheck(this, VictoryAnimation);\n\n _this = _possibleConstructorReturn(this, (VictoryAnimation.__proto__ || Object.getPrototypeOf(VictoryAnimation)).call(this, props));\n /* defaults */\n\n _this.state = {\n data: Array.isArray(_this.props.data) ? _this.props.data[0] : _this.props.data,\n animationInfo: {\n progress: 0,\n animating: false\n }\n };\n _this.interpolator = null;\n _this.queue = Array.isArray(_this.props.data) ? _this.props.data.slice(1) : [];\n /* build easing function */\n\n _this.ease = d3Ease[_this.toNewName(_this.props.easing)];\n /*\n There is no autobinding of this in ES6 classes\n so we bind functionToBeRunEachFrame to current instance of victory animation class\n */\n\n _this.functionToBeRunEachFrame = _this.functionToBeRunEachFrame.bind(_assertThisInitialized(_this));\n _this.getTimer = _this.getTimer.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(VictoryAnimation, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // Length check prevents us from triggering `onEnd` in `traverseQueue`.\n if (this.queue.length) {\n this.traverseQueue();\n }\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var equalProps = isEqual(this.props, nextProps);\n\n if (!equalProps) {\n /* cancel existing loop if it exists */\n this.getTimer().unsubscribe(this.loopID);\n /* If an object was supplied */\n\n if (!Array.isArray(nextProps.data)) {\n // Replace the tween queue. Could set `this.queue = [nextProps.data]`,\n // but let's reuse the same array.\n this.queue.length = 0;\n this.queue.push(nextProps.data);\n /* If an array was supplied */\n } else {\n var _queue;\n\n /* Extend the tween queue */\n (_queue = this.queue).push.apply(_queue, _toConsumableArray(nextProps.data));\n }\n /* Start traversing the tween queue */\n\n\n this.traverseQueue();\n }\n\n return nextState.animationInfo.animating || nextState.animationInfo.terminating || !equalProps;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.loopID) {\n this.getTimer().unsubscribe(this.loopID);\n } else {\n this.getTimer().stop();\n }\n }\n }, {\n key: \"getTimer\",\n value: function getTimer() {\n if (this.context.getTimer) {\n return this.context.getTimer();\n }\n\n if (!this.timer) {\n this.timer = new Timer();\n }\n\n return this.timer;\n }\n }, {\n key: \"toNewName\",\n value: function toNewName(ease) {\n // d3-ease changed the naming scheme for ease from \"linear\" -> \"easeLinear\" etc.\n var capitalize = function (s) {\n return s && s[0].toUpperCase() + s.slice(1);\n };\n\n return \"ease\".concat(capitalize(ease));\n }\n /* Traverse the tween queue */\n\n }, {\n key: \"traverseQueue\",\n value: function traverseQueue() {\n var _this2 = this;\n\n if (this.queue.length) {\n /* Get the next index */\n var data = this.queue[0];\n /* compare cached version to next props */\n\n this.interpolator = victoryInterpolator(this.state.data, data);\n /* reset step to zero */\n\n if (this.props.delay) {\n setTimeout(function () {\n _this2.loopID = _this2.getTimer().subscribe(_this2.functionToBeRunEachFrame, _this2.props.duration);\n }, this.props.delay);\n } else {\n this.loopID = this.getTimer().subscribe(this.functionToBeRunEachFrame, this.props.duration);\n }\n } else if (this.props.onEnd) {\n this.props.onEnd();\n }\n }\n /* every frame we... */\n\n }, {\n key: \"functionToBeRunEachFrame\",\n value: function functionToBeRunEachFrame(elapsed, duration) {\n /*\n step can generate imprecise values, sometimes greater than 1\n if this happens set the state to 1 and return, cancelling the timer\n */\n duration = duration !== undefined ? duration : this.props.duration;\n var step = duration ? elapsed / duration : 1;\n\n if (step >= 1) {\n this.setState({\n data: this.interpolator(1),\n animationInfo: {\n progress: 1,\n animating: false,\n terminating: true\n }\n });\n\n if (this.loopID) {\n this.getTimer().unsubscribe(this.loopID);\n }\n\n this.queue.shift();\n this.traverseQueue();\n return;\n }\n /*\n if we're not at the end of the timer, set the state by passing\n current step value that's transformed by the ease function to the\n interpolator, which is cached for performance whenever props are received\n */\n\n\n this.setState({\n data: this.interpolator(this.ease(step)),\n animationInfo: {\n progress: step,\n animating: step < 1\n }\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children(this.state.data, this.state.animationInfo);\n }\n }]);\n\n return VictoryAnimation;\n}(React.Component);\n\nObject.defineProperty(VictoryAnimation, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryAnimation\"\n});\nObject.defineProperty(VictoryAnimation, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n children: PropTypes.func,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n delay: PropTypes.number,\n duration: PropTypes.number,\n easing: PropTypes.oneOf([\"back\", \"backIn\", \"backOut\", \"backInOut\", \"bounce\", \"bounceIn\", \"bounceOut\", \"bounceInOut\", \"circle\", \"circleIn\", \"circleOut\", \"circleInOut\", \"linear\", \"linearIn\", \"linearOut\", \"linearInOut\", \"cubic\", \"cubicIn\", \"cubicOut\", \"cubicInOut\", \"elastic\", \"elasticIn\", \"elasticOut\", \"elasticInOut\", \"exp\", \"expIn\", \"expOut\", \"expInOut\", \"poly\", \"polyIn\", \"polyOut\", \"polyInOut\", \"quad\", \"quadIn\", \"quadOut\", \"quadInOut\", \"sin\", \"sinIn\", \"sinOut\", \"sinInOut\"]),\n onEnd: PropTypes.func\n }\n});\nObject.defineProperty(VictoryAnimation, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n data: {},\n delay: 0,\n duration: 1000,\n easing: \"quadInOut\"\n }\n});\nObject.defineProperty(VictoryAnimation, \"contextTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n getTimer: PropTypes.func\n }\n});\nexport { VictoryAnimation as default };","import _isObject from \"lodash/isObject\";\nimport _pick from \"lodash/pick\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport VictoryAnimation from \"../victory-animation/victory-animation\";\nimport Collection from \"../victory-util/collection\";\nimport Helpers from \"../victory-util/helpers\";\nimport Timer from \"../victory-util/timer\";\nimport Transitions from \"../victory-util/transitions\";\nimport isEqual from \"react-fast-compare\";\n\nvar VictoryTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryTransition, _React$Component);\n\n function VictoryTransition(props) {\n var _this;\n\n _classCallCheck(this, VictoryTransition);\n\n _this = _possibleConstructorReturn(this, (VictoryTransition.__proto__ || Object.getPrototypeOf(VictoryTransition)).call(this, props));\n _this.state = {\n nodesShouldLoad: false,\n nodesDoneLoad: false\n };\n var child = _this.props.children;\n var polar = child.props.polar;\n _this.continuous = !polar && child.type && child.type.continuous === true;\n _this.getTransitionState = _this.getTransitionState.bind(_assertThisInitialized(_this));\n _this.getTimer = _this.getTimer.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(VictoryTransition, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.setState({\n nodesShouldLoad: true\n }); //eslint-disable-line react/no-did-mount-set-state\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this2 = this;\n\n if (!isEqual(this.props, nextProps)) {\n this.getTimer().bypassAnimation();\n this.setState(this.getTransitionState(this.props, nextProps), function () {\n return _this2.getTimer().resumeAnimation();\n });\n }\n\n return true;\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.getTimer().stop();\n }\n }, {\n key: \"getTimer\",\n value: function getTimer() {\n if (this.context.getTimer) {\n return this.context.getTimer();\n }\n\n if (!this.timer) {\n this.timer = new Timer();\n }\n\n return this.timer;\n }\n }, {\n key: \"getTransitionState\",\n value: function getTransitionState(props, nextProps) {\n var animate = props.animate;\n\n if (!animate) {\n return {};\n } else if (animate.parentState) {\n var state = animate.parentState;\n var oldProps = state.nodesWillExit ? props : null;\n return {\n oldProps: oldProps,\n nextProps: nextProps\n };\n } else {\n var oldChildren = React.Children.toArray(props.children);\n var nextChildren = React.Children.toArray(nextProps.children);\n\n var _Transitions$getIniti = Transitions.getInitialTransitionState(oldChildren, nextChildren),\n nodesWillExit = _Transitions$getIniti.nodesWillExit,\n nodesWillEnter = _Transitions$getIniti.nodesWillEnter,\n childrenTransitions = _Transitions$getIniti.childrenTransitions,\n nodesShouldEnter = _Transitions$getIniti.nodesShouldEnter;\n\n return {\n nodesWillExit: nodesWillExit,\n nodesWillEnter: nodesWillEnter,\n childrenTransitions: childrenTransitions,\n nodesShouldEnter: nodesShouldEnter,\n oldProps: nodesWillExit ? props : null,\n nextProps: nextProps\n };\n }\n }\n }, {\n key: \"getDomainFromChildren\",\n value: function getDomainFromChildren(props, axis) {\n var getChildDomains = function (children) {\n return children.reduce(function (memo, child) {\n if (child.type && _isFunction(child.type.getDomain)) {\n var childDomain = child.props && child.type.getDomain(child.props, axis);\n return childDomain ? memo.concat(childDomain) : memo;\n } else if (child.props && child.props.children) {\n return memo.concat(getChildDomains(React.Children.toArray(child.props.children)));\n }\n\n return memo;\n }, []);\n };\n\n var child = React.Children.toArray(props.children)[0];\n var childProps = child.props || {};\n var domain = Array.isArray(childProps.domain) ? childProps.domain : childProps.domain && childProps.domain[axis];\n\n if (!childProps.children && domain) {\n return domain;\n } else {\n var childDomains = getChildDomains([child]);\n return childDomains.length === 0 ? [0, 1] : [Collection.getMinValue(childDomains), Collection.getMaxValue(childDomains)];\n }\n }\n }, {\n key: \"pickProps\",\n value: function pickProps() {\n if (!this.state) {\n return this.props;\n }\n\n return this.state.nodesWillExit ? this.state.oldProps || this.props : this.props;\n }\n }, {\n key: \"pickDomainProps\",\n value: function pickDomainProps(props) {\n var parentState = _isObject(props.animate) && props.animate.parentState;\n\n if (parentState && parentState.nodesWillExit) {\n return this.continous || parentState.continuous ? parentState.nextProps || this.state.nextProps || props : props;\n }\n\n return this.continuous && this.state.nodesWillExit ? this.state.nextProps || props : props;\n }\n }, {\n key: \"getClipWidth\",\n value: function getClipWidth(props, child) {\n var getDefaultClipWidth = function () {\n var range = Helpers.getRange(child.props, \"x\");\n return range ? Math.abs(range[1] - range[0]) : props.width;\n };\n\n var clipWidth = this.transitionProps ? this.transitionProps.clipWidth : undefined;\n return clipWidth !== undefined ? clipWidth : getDefaultClipWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var props = this.pickProps();\n var getTransitionProps = _isObject(this.props.animate) && this.props.animate.getTransitions ? this.props.animate.getTransitions : Transitions.getTransitionPropsFactory(props, this.state, function (newState) {\n return _this3.setState(newState);\n });\n var child = React.Children.toArray(props.children)[0];\n var transitionProps = getTransitionProps(child);\n this.transitionProps = transitionProps;\n var domain = {\n x: this.getDomainFromChildren(this.pickDomainProps(props), \"x\"),\n y: this.getDomainFromChildren(props, \"y\")\n };\n var clipWidth = this.getClipWidth(props, child);\n\n var combinedProps = _defaults({\n domain: domain,\n clipWidth: clipWidth\n }, transitionProps, child.props);\n\n var animationWhitelist = props.animationWhitelist || [];\n var whitelist = animationWhitelist.concat([\"clipWidth\"]);\n var propsToAnimate = whitelist.length ? _pick(combinedProps, whitelist) : combinedProps;\n return React.createElement(VictoryAnimation, _extends({}, combinedProps.animate, {\n data: propsToAnimate\n }), function (newProps) {\n if (child.props.groupComponent) {\n var groupComponent = _this3.continuous ? React.cloneElement(child.props.groupComponent, {\n clipWidth: newProps.clipWidth || 0\n }) : child.props.groupComponent;\n return React.cloneElement(child, _defaults({\n animate: null,\n animating: true,\n groupComponent: groupComponent\n }, newProps, combinedProps));\n }\n\n return React.cloneElement(child, _defaults({\n animate: null,\n animating: true\n }, newProps, combinedProps));\n });\n }\n }]);\n\n return VictoryTransition;\n}(React.Component);\n\nObject.defineProperty(VictoryTransition, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryTransition\"\n});\nObject.defineProperty(VictoryTransition, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n animationWhitelist: PropTypes.array,\n children: PropTypes.node\n }\n});\nexport { VictoryTransition as default };","import _isNil from \"lodash/isNil\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _without from \"lodash/without\";\nimport _pick from \"lodash/pick\";\nimport _isFunction from \"lodash/isFunction\";\nimport _keys from \"lodash/keys\";\nimport _assign from \"lodash/assign\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React from \"react\";\nimport Events from \"./events\";\nimport isEqual from \"react-fast-compare\";\nimport VictoryTransition from \"../victory-transition/victory-transition\";\n\nvar datumHasXandY = function (datum) {\n return !_isNil(datum._x) && !_isNil(datum._y);\n}; // used for checking state changes. Expected components can be passed in via options\n\n\nvar defaultComponents = [{\n name: \"parent\",\n index: \"parent\"\n}, {\n name: \"data\"\n}, {\n name: \"labels\"\n}];\nexport default (function (WrappedComponent, options) {\n return (\n /*#__PURE__*/\n function (_WrappedComponent) {\n _inherits(addEvents, _WrappedComponent);\n\n function addEvents(props) {\n var _this;\n\n _classCallCheck(this, addEvents);\n\n _this = _possibleConstructorReturn(this, (addEvents.__proto__ || Object.getPrototypeOf(addEvents)).call(this, props));\n var getScopedEvents = Events.getScopedEvents.bind(_assertThisInitialized(_this));\n var boundGetEvents = Events.getEvents.bind(_assertThisInitialized(_this));\n _this.state = {};\n\n _this.getEvents = function (p, target, eventKey) {\n return boundGetEvents(p, target, eventKey, getScopedEvents);\n };\n\n _this.getEventState = Events.getEventState.bind(_assertThisInitialized(_this));\n\n var calculatedValues = _this.getCalculatedValues(props);\n\n _this.cacheValues(calculatedValues);\n\n _this.externalMutations = _this.getExternalMutations(props);\n _this.calculatedState = _this.getStateChanges(props, calculatedValues);\n return _this;\n }\n\n _createClass(addEvents, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var calculatedValues = this.getCalculatedValues(nextProps);\n var externalMutations = this.getExternalMutations(nextProps);\n var animating = this.props.animating || this.props.animate;\n var newMutation = !isEqual(externalMutations, this.externalMutations);\n\n if (animating || newMutation) {\n this.cacheValues(calculatedValues);\n this.externalMutations = externalMutations;\n this.applyExternalMutations(nextProps, externalMutations);\n return true;\n }\n\n var calculatedState = this.getStateChanges(nextProps, calculatedValues);\n\n if (!isEqual(this.calculatedState, calculatedState)) {\n this.calculatedState = calculatedState;\n this.cacheValues(calculatedValues);\n return true;\n }\n\n if (!isEqual(this.props, nextProps)) {\n this.cacheValues(calculatedValues);\n return true;\n }\n\n return false;\n } // compile all state changes from own and parent state. Order doesn't matter, as any state\n // state change should trigger a re-render\n\n }, {\n key: \"getStateChanges\",\n value: function getStateChanges(props, calculatedValues) {\n var _this2 = this;\n\n var hasEvents = calculatedValues.hasEvents,\n getSharedEventState = calculatedValues.getSharedEventState;\n\n if (!hasEvents) {\n return {};\n }\n\n var getState = function (key, type) {\n var result = _defaults({}, _this2.getEventState(key, type), getSharedEventState(key, type));\n\n return _isEmpty(result) ? undefined : result;\n };\n\n options = options || {};\n var components = options.components || defaultComponents;\n var stateChanges = components.map(function (component) {\n if (!props.standalone && component.name === \"parent\") {\n // don't check for changes on parent props for non-standalone components\n return undefined;\n } else {\n return component.index !== undefined ? getState(component.index, component.name) : calculatedValues.dataKeys.map(function (key) {\n return getState(key, component.name);\n }).filter(Boolean);\n }\n }).filter(Boolean);\n return stateChanges;\n }\n }, {\n key: \"applyExternalMutations\",\n value: function applyExternalMutations(props, externalMutations) {\n if (!_isEmpty(externalMutations)) {\n var callbacks = props.externalEventMutations.reduce(function (memo, mutation) {\n memo = _isFunction(mutation.callback) ? memo.concat(mutation.callback) : memo;\n return memo;\n }, []);\n var compiledCallbacks = callbacks.length ? function () {\n callbacks.forEach(function (c) {\n return c();\n });\n } : undefined;\n this.setState(externalMutations, compiledCallbacks);\n }\n }\n }, {\n key: \"getCalculatedValues\",\n value: function getCalculatedValues(props) {\n var sharedEvents = props.sharedEvents;\n var components = WrappedComponent.expectedComponents;\n var componentEvents = Events.getComponentEvents(props, components);\n var getSharedEventState = sharedEvents && _isFunction(sharedEvents.getEventState) ? sharedEvents.getEventState : function () {\n return undefined;\n };\n var baseProps = this.getBaseProps(props, getSharedEventState);\n\n var dataKeys = _keys(baseProps).filter(function (key) {\n return key !== \"parent\";\n });\n\n var hasEvents = props.events || props.sharedEvents || componentEvents;\n var events = this.getAllEvents(props);\n return {\n componentEvents: componentEvents,\n getSharedEventState: getSharedEventState,\n baseProps: baseProps,\n dataKeys: dataKeys,\n hasEvents: hasEvents,\n events: events\n };\n }\n }, {\n key: \"getExternalMutations\",\n value: function getExternalMutations(props) {\n var sharedEvents = props.sharedEvents,\n externalEventMutations = props.externalEventMutations;\n return _isEmpty(externalEventMutations) || sharedEvents ? undefined : Events.getExternalMutations(externalEventMutations, this.baseProps, this.state);\n }\n }, {\n key: \"cacheValues\",\n value: function cacheValues(obj) {\n var _this3 = this;\n\n _keys(obj).forEach(function (key) {\n _this3[key] = obj[key];\n });\n }\n }, {\n key: \"getBaseProps\",\n value: function getBaseProps(props, getSharedEventState) {\n getSharedEventState = getSharedEventState || this.getSharedEventState;\n var sharedParentState = getSharedEventState(\"parent\", \"parent\");\n var parentState = this.getEventState(\"parent\", \"parent\");\n\n var baseParentProps = _defaults({}, parentState, sharedParentState);\n\n var parentPropsList = baseParentProps.parentControlledProps;\n var parentProps = parentPropsList ? _pick(baseParentProps, parentPropsList) : {};\n\n var modifiedProps = _defaults({}, parentProps, props);\n\n return _isFunction(WrappedComponent.getBaseProps) ? WrappedComponent.getBaseProps(modifiedProps) : {};\n }\n }, {\n key: \"getAllEvents\",\n value: function getAllEvents(props) {\n if (Array.isArray(this.componentEvents)) {\n var _componentEvents;\n\n return Array.isArray(props.events) ? (_componentEvents = this.componentEvents).concat.apply(_componentEvents, _toConsumableArray(props.events)) : this.componentEvents;\n }\n\n return props.events;\n }\n }, {\n key: \"getComponentProps\",\n value: function getComponentProps(component, type, index) {\n var name = this.props.name || WrappedComponent.role;\n var key = this.dataKeys && this.dataKeys[index] || index;\n var id = \"\".concat(name, \"-\").concat(type, \"-\").concat(key);\n var baseProps = this.baseProps[key] && this.baseProps[key][type] || this.baseProps[key];\n\n if (!baseProps && !this.hasEvents) {\n return undefined;\n }\n\n if (this.hasEvents) {\n var baseEvents = this.getEvents(this.props, type, key);\n\n var componentProps = _defaults({\n index: index,\n key: id\n }, this.getEventState(key, type), this.getSharedEventState(key, type), component.props, baseProps, {\n id: id\n });\n\n var events = _defaults({}, Events.getPartialEvents(baseEvents, key, componentProps), componentProps.events);\n\n return _assign({}, componentProps, {\n events: events\n });\n }\n\n return _defaults({\n index: index,\n key: id\n }, component.props, baseProps, {\n id: id\n });\n }\n }, {\n key: \"renderContainer\",\n value: function renderContainer(component, children) {\n var isContainer = component.type && component.type.role === \"container\";\n var parentProps = isContainer ? this.getComponentProps(component, \"parent\", \"parent\") : {};\n return React.cloneElement(component, parentProps, children);\n }\n }, {\n key: \"animateComponent\",\n value: function animateComponent(props, defaultAnimationWhitelist) {\n var animationWhitelist = props.animate && props.animate.animationWhitelist ? props.animate.animationWhitelist : defaultAnimationWhitelist;\n return React.createElement(VictoryTransition, {\n animate: props.animate,\n animationWhitelist: animationWhitelist\n }, React.createElement(this.constructor, props));\n } // Used by `VictoryLine` and `VictoryArea`\n\n }, {\n key: \"renderContinuousData\",\n value: function renderContinuousData(props) {\n var _this4 = this;\n\n var dataComponent = props.dataComponent,\n labelComponent = props.labelComponent,\n groupComponent = props.groupComponent;\n\n var dataKeys = _without(this.dataKeys, \"all\");\n\n var labelComponents = dataKeys.reduce(function (memo, key) {\n var labelProps = _this4.getComponentProps(labelComponent, \"labels\", key);\n\n if (labelProps && labelProps.text !== undefined && labelProps.text !== null) {\n memo = memo.concat(React.cloneElement(labelComponent, labelProps));\n }\n\n return memo;\n }, []);\n var dataProps = this.getComponentProps(dataComponent, \"data\", \"all\");\n var children = [React.cloneElement(dataComponent, dataProps)].concat(_toConsumableArray(labelComponents));\n return this.renderContainer(groupComponent, children);\n }\n }, {\n key: \"renderData\",\n value: function renderData(props) {\n var _this5 = this;\n\n var shouldRenderDatum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : datumHasXandY;\n var dataComponent = props.dataComponent,\n labelComponent = props.labelComponent,\n groupComponent = props.groupComponent;\n var dataComponents = this.dataKeys.reduce(function (validDataComponents, _dataKey, index) {\n var dataProps = _this5.getComponentProps(dataComponent, \"data\", index);\n\n if (shouldRenderDatum(dataProps.datum)) {\n validDataComponents.push(React.cloneElement(dataComponent, dataProps));\n }\n\n return validDataComponents;\n }, []);\n var labelComponents = this.dataKeys.map(function (_dataKey, index) {\n var labelProps = _this5.getComponentProps(labelComponent, \"labels\", index);\n\n if (labelProps.text !== undefined && labelProps.text !== null) {\n return React.cloneElement(labelComponent, labelProps);\n }\n\n return undefined;\n }).filter(Boolean);\n\n var children = _toConsumableArray(dataComponents).concat(_toConsumableArray(labelComponents));\n\n return this.renderContainer(groupComponent, children);\n }\n }]);\n\n return addEvents;\n }(WrappedComponent)\n );\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nfunction isNonEmptyArray(collection) {\n return Array.isArray(collection) && collection.length > 0;\n}\n\nfunction containsStrings(collection) {\n return Array.isArray(collection) && collection.some(function (value) {\n return typeof value === \"string\";\n });\n}\n\nfunction containsDates(collection) {\n return Array.isArray(collection) && collection.some(function (value) {\n return value instanceof Date;\n });\n}\n\nfunction containsNumbers(collection) {\n return Array.isArray(collection) && collection.some(function (value) {\n return typeof value === \"number\";\n });\n}\n\nfunction containsOnlyStrings(collection) {\n return isNonEmptyArray(collection) && collection.every(function (value) {\n return typeof value === \"string\";\n });\n}\n\nfunction isArrayOfArrays(collection) {\n return isNonEmptyArray(collection) && collection.every(Array.isArray);\n}\n\nfunction removeUndefined(arr) {\n return arr.filter(function (el) {\n return el !== undefined;\n });\n}\n\nfunction getMaxValue(arr) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var array = arr.concat(values);\n return containsDates(array) ? new Date(Math.max.apply(Math, _toConsumableArray(array))) : Math.max.apply(Math, _toConsumableArray(array));\n}\n\nfunction getMinValue(arr) {\n for (var _len2 = arguments.length, values = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n values[_key2 - 1] = arguments[_key2];\n }\n\n var array = arr.concat(values);\n return containsDates(array) ? new Date(Math.min.apply(Math, _toConsumableArray(array))) : Math.min.apply(Math, _toConsumableArray(array));\n}\n\nexport default {\n containsDates: containsDates,\n containsNumbers: containsNumbers,\n containsOnlyStrings: containsOnlyStrings,\n containsStrings: containsStrings,\n getMaxValue: getMaxValue,\n getMinValue: getMinValue,\n isArrayOfArrays: isArrayOfArrays,\n removeUndefined: removeUndefined\n};","import PropTypes from \"prop-types\";\nimport CustomPropTypes from \"./prop-types\";\nvar dataProps = {\n categories: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.shape({\n x: PropTypes.arrayOf(PropTypes.string),\n y: PropTypes.arrayOf(PropTypes.string)\n })]),\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n dataComponent: PropTypes.element,\n labelComponent: PropTypes.element,\n labels: PropTypes.oneOfType([PropTypes.func, PropTypes.array]),\n samples: CustomPropTypes.nonNegative,\n sortKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n sortOrder: PropTypes.oneOf([\"ascending\", \"descending\"]),\n style: PropTypes.shape({\n parent: PropTypes.object,\n data: PropTypes.object,\n labels: PropTypes.object\n }),\n x: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n y: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n y0: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)])\n};\nvar baseProps = {\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n containerComponent: PropTypes.element,\n domain: PropTypes.oneOfType([CustomPropTypes.domain, PropTypes.shape({\n x: CustomPropTypes.domain,\n y: CustomPropTypes.domain\n })]),\n maxDomain: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date), PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)])\n })]),\n minDomain: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date), PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.instanceOf(Date)])\n })]),\n domainPadding: PropTypes.oneOfType([PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)])\n }), PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n eventKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n events: PropTypes.arrayOf(PropTypes.shape({\n target: PropTypes.oneOf([\"data\", \"labels\", \"parent\"]),\n eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n eventHandlers: PropTypes.object\n })),\n externalEventMutations: PropTypes.arrayOf(PropTypes.shape({\n callback: PropTypes.function,\n childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),\n mutation: PropTypes.function,\n target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])\n })),\n groupComponent: PropTypes.element,\n height: CustomPropTypes.nonNegative,\n name: PropTypes.string,\n origin: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n top: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number\n })]),\n polar: PropTypes.bool,\n range: PropTypes.oneOfType([CustomPropTypes.domain, PropTypes.shape({\n x: CustomPropTypes.domain,\n y: CustomPropTypes.domain\n })]),\n scale: PropTypes.oneOfType([CustomPropTypes.scale, PropTypes.shape({\n x: CustomPropTypes.scale,\n y: CustomPropTypes.scale\n })]),\n sharedEvents: PropTypes.shape({\n events: PropTypes.array,\n getEventState: PropTypes.func\n }),\n singleQuadrantDomainPadding: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.bool]),\n y: PropTypes.oneOfType([PropTypes.bool])\n })]),\n standalone: PropTypes.bool,\n theme: PropTypes.object,\n width: CustomPropTypes.nonNegative\n};\nvar primitiveProps = {\n active: PropTypes.bool,\n className: PropTypes.string,\n clipPath: PropTypes.string,\n data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n desc: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n events: PropTypes.object,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n origin: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n polar: PropTypes.bool,\n role: PropTypes.string,\n scale: PropTypes.oneOfType([CustomPropTypes.scale, PropTypes.shape({\n x: CustomPropTypes.scale,\n y: CustomPropTypes.scale\n })]),\n shapeRendering: PropTypes.string,\n style: PropTypes.object,\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n transform: PropTypes.string\n};\nexport default {\n baseProps: baseProps,\n dataProps: dataProps,\n primitiveProps: primitiveProps\n};","export default {\n IMMUTABLE_ITERABLE: \"@@__IMMUTABLE_ITERABLE__@@\",\n IMMUTABLE_RECORD: \"@@__IMMUTABLE_RECORD__@@\",\n IMMUTABLE_LIST: \"@@__IMMUTABLE_LIST__@@\",\n IMMUTABLE_MAP: \"@@__IMMUTABLE_MAP__@@\",\n isImmutable: function (x) {\n return this.isIterable(x) || this.isRecord(x);\n },\n isIterable: function (x) {\n return !!(x && x[this.IMMUTABLE_ITERABLE]);\n },\n isRecord: function (x) {\n return !!(x && x[this.IMMUTABLE_RECORD]);\n },\n isList: function (x) {\n return !!(x && x[this.IMMUTABLE_LIST]);\n },\n isMap: function (x) {\n return !!(x && x[this.IMMUTABLE_MAP]);\n },\n shallowToJS: function (x, whitelist) {\n var _this = this;\n\n return this.isIterable(x) ? x.reduce(function (prev, curr, key) {\n if (whitelist && whitelist[key]) {\n curr = _this.shallowToJS(curr);\n }\n\n prev[key] = curr;\n return prev;\n }, this.isList(x) ? [] : {}) : x;\n }\n};","import _includes from \"lodash/includes\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _orderBy from \"lodash/orderBy\";\nimport _property from \"lodash/property\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _last from \"lodash/last\";\nimport _range from \"lodash/range\";\nimport _uniq from \"lodash/uniq\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport Helpers from \"./helpers\";\nimport Collection from \"./collection\";\nimport Scale from \"./scale\";\nimport Immutable from \"./immutable\"; // Private Functions\n\nfunction parseDatum(datum) {\n var immutableDatumWhitelist = {\n errorX: true,\n errorY: true\n };\n return Immutable.isImmutable(datum) ? Immutable.shallowToJS(datum, immutableDatumWhitelist) : datum;\n}\n\nfunction getLength(data) {\n return Immutable.isIterable(data) ? data.size : data.length;\n} // Returns generated data for a given axis based on domain and sample from props\n\n\nfunction generateDataArray(props, axis) {\n var propsDomain = _isPlainObject(props.domain) ? props.domain[axis] : props.domain;\n var domain = propsDomain || Scale.getBaseScale(props, axis).domain();\n var samples = props.samples || 1;\n var domainMax = Math.max.apply(Math, _toConsumableArray(domain));\n var domainMin = Math.min.apply(Math, _toConsumableArray(domain));\n var step = (domainMax - domainMin) / samples;\n\n var values = _range(domainMin, domainMax, step);\n\n return _last(values) === domainMax ? values : values.concat(domainMax);\n} // Returns sorted data. If no sort keys are provided, data is returned unaltered.\n\n\nfunction sortData(dataset, sortKey) {\n var sortOrder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"ascending\";\n\n if (!sortKey) {\n return dataset;\n } // Ensures previous VictoryLine api for sortKey prop stays consistent\n\n\n if (sortKey === \"x\" || sortKey === \"y\") {\n sortKey = \"_\".concat(sortKey);\n }\n\n var order = sortOrder === \"ascending\" ? \"asc\" : \"desc\";\n return _orderBy(dataset, sortKey, order);\n} // This method will remove data points that break certain scales. (log scale only)\n\n\nfunction cleanData(dataset, props) {\n var smallNumber = 1 / Number.MAX_SAFE_INTEGER;\n var scaleType = {\n x: Scale.getScaleType(props, \"x\"),\n y: Scale.getScaleType(props, \"y\")\n };\n\n if (scaleType.x !== \"log\" && scaleType.y !== \"log\") {\n return dataset;\n }\n\n var rules = function (datum, axis) {\n return scaleType[axis] === \"log\" ? datum[\"_\".concat(axis)] !== 0 : true;\n };\n\n var sanitize = function (datum) {\n var _x = rules(datum, \"x\") ? datum._x : smallNumber;\n\n var _y = rules(datum, \"y\") ? datum._y : smallNumber;\n\n var _y0 = rules(datum, \"y0\") ? datum._y0 : smallNumber;\n\n return _assign({}, datum, {\n _x: _x,\n _y: _y,\n _y0: _y0\n });\n };\n\n return dataset.map(function (datum) {\n if (rules(datum, \"x\") && rules(datum, \"y\") && rules(datum, \"y0\")) {\n return datum;\n }\n\n return sanitize(datum);\n });\n} // Returns a data accessor given an eventKey prop\n\n\nfunction getEventKey(key) {\n // creates a data accessor function\n // given a property key, path, array index, or null for identity.\n if (_isFunction(key)) {\n return key;\n } else if (key === null || key === undefined) {\n return function () {\n return undefined;\n };\n } // otherwise, assume it is an array index, property key or path (_.property handles all three)\n\n\n return _property(key);\n} // Returns data with an eventKey prop added to each datum\n\n\nfunction addEventKeys(props, data) {\n var hasEventKeyAccessor = !!props.eventKey;\n var eventKeyAccessor = getEventKey(props.eventKey);\n return data.map(function (datum, index) {\n if (datum.eventKey !== undefined) {\n return datum;\n } else if (hasEventKeyAccessor) {\n var eventKey = eventKeyAccessor(datum, index);\n return eventKey !== undefined ? _assign({\n eventKey: eventKey\n }, datum) : datum;\n } else {\n return datum;\n }\n });\n} // Exported Functions\n\n/**\n * Returns an object mapping string data to numeric data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Object} an object mapping string data to numeric data\n */\n\n\nfunction createStringMap(props, axis) {\n var stringsFromAxes = getStringsFromAxes(props, axis);\n var stringsFromCategories = getStringsFromCategories(props, axis);\n var stringsFromData = getStringsFromData(props, axis);\n\n var allStrings = _uniq(_toConsumableArray(stringsFromAxes).concat(_toConsumableArray(stringsFromCategories), _toConsumableArray(stringsFromData)));\n\n return allStrings.length === 0 ? null : allStrings.reduce(function (memo, string, index) {\n memo[string] = index + 1;\n return memo;\n }, {});\n}\n/**\n * Reduces the size of a data array, such that it is <= maxPoints.\n * @param {Array} data: an array of data; must be sorted\n * @param {Number} maxPoints: maximum number of data points to return\n * @param {Number} startingIndex: the index of the data[0] *in the entire dataset*; this function\n assumes `data` param is a subset of larger dataset that has been zoommed\n * @returns {Array} an array of data, a subset of data param\n */\n\n\nfunction downsample(data, maxPoints) {\n var startingIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n // ensures that the downampling of data while zooming looks good.\n var dataLength = getLength(data);\n\n if (dataLength > maxPoints) {\n // limit k to powers of 2, e.g. 64, 128, 256\n // so that the same points will be chosen reliably, reducing flicker on zoom\n var k = Math.pow(2, Math.ceil(Math.log2(dataLength / maxPoints)));\n return data.filter( // ensure modulo is always calculated from same reference: i + startingIndex\n function (d, i) {\n return (i + startingIndex) % k === 0;\n });\n }\n\n return data;\n}\n/**\n * Returns formatted data. Data accessors are applied, and string values are replaced.\n * @param {Array} dataset: the original domain\n * @param {Object} props: the props object\n * @param {Array} expectedKeys: an array of expected data keys\n * @returns {Array} the formatted data\n */\n\n\nfunction formatData(dataset, props, expectedKeys) {\n var isArrayOrIterable = Array.isArray(dataset) || Immutable.isIterable(dataset);\n\n if (!isArrayOrIterable || getLength(dataset) < 1) {\n return [];\n }\n\n var defaultKeys = [\"x\", \"y\", \"y0\"];\n expectedKeys = Array.isArray(expectedKeys) ? expectedKeys : defaultKeys;\n\n var createAccessor = function (name) {\n return Helpers.createAccessor(props[name] !== undefined ? props[name] : name);\n };\n\n var accessor = expectedKeys.reduce(function (memo, type) {\n memo[type] = createAccessor(type);\n return memo;\n }, {});\n var preformattedData = _isEqual(expectedKeys, defaultKeys) && props.x === \"_x\" && props.y === \"_y\" && props.y0 === \"_y0\";\n var stringMap;\n\n if (preformattedData === false) {\n // stringMap is not required if the data is preformatted\n stringMap = {\n x: expectedKeys.indexOf(\"x\") !== -1 ? createStringMap(props, \"x\") : undefined,\n y: expectedKeys.indexOf(\"y\") !== -1 ? createStringMap(props, \"y\") : undefined,\n y0: expectedKeys.indexOf(\"y0\") !== -1 ? createStringMap(props, \"y\") : undefined\n };\n }\n\n var data = preformattedData ? dataset : dataset.reduce(function (dataArr, datum, index) {\n // eslint-disable-line complexity\n datum = parseDatum(datum);\n var fallbackValues = {\n x: index,\n y: datum\n };\n var processedValues = expectedKeys.reduce(function (memo, type) {\n var processedValue = accessor[type](datum);\n var value = processedValue !== undefined ? processedValue : fallbackValues[type];\n\n if (value !== undefined) {\n if (typeof value === \"string\" && stringMap[type]) {\n memo[\"\".concat(type, \"Name\")] = value;\n memo[\"_\".concat(type)] = stringMap[type][value];\n } else {\n memo[\"_\".concat(type)] = value;\n }\n }\n\n return memo;\n }, {});\n\n var formattedDatum = _assign({}, processedValues, datum);\n\n if (!_isEmpty(formattedDatum)) {\n dataArr.push(formattedDatum);\n }\n\n return dataArr;\n }, []);\n var sortedData = sortData(data, props.sortKey, props.sortOrder);\n var cleanedData = cleanData(sortedData, props);\n return addEventKeys(props, cleanedData);\n}\n/**\n * Returns generated x and y data based on domain and sample from props\n * @param {Object} props: the props object\n * @returns {Array} an array of data\n */\n\n\nfunction generateData(props) {\n var xValues = generateDataArray(props, \"x\");\n var yValues = generateDataArray(props, \"y\");\n var values = xValues.map(function (x, i) {\n return {\n x: x,\n y: yValues[i]\n };\n });\n return values;\n}\n/**\n * Returns an array of categories for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of categories\n */\n\n\nfunction getCategories(props, axis) {\n return props.categories && !Array.isArray(props.categories) ? props.categories[axis] : props.categories;\n}\n/**\n * Returns an array of formatted data\n * @param {Object} props: the props object\n * @returns {Array} an array of data\n */\n\n\nfunction getData(props) {\n return props.data ? formatData(props.data, props) : formatData(generateData(props), props);\n}\n/**\n * Returns an array of strings from axis tickValues for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\n\nfunction getStringsFromAxes(props, axis) {\n var tickValues = props.tickValues,\n tickFormat = props.tickFormat;\n var tickValueArray;\n\n if (!tickValues || !Array.isArray(tickValues) && !tickValues[axis]) {\n tickValueArray = tickFormat && Array.isArray(tickFormat) ? tickFormat : [];\n } else {\n tickValueArray = tickValues[axis] || tickValues;\n }\n\n return tickValueArray.filter(function (val) {\n return typeof val === \"string\";\n });\n}\n/**\n * Returns an array of strings from categories for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\n\nfunction getStringsFromCategories(props, axis) {\n if (!props.categories) {\n return [];\n }\n\n var categories = getCategories(props, axis);\n var categoryStrings = categories && categories.filter(function (val) {\n return typeof val === \"string\";\n });\n return categoryStrings ? Collection.removeUndefined(categoryStrings) : [];\n}\n/**\n * Returns an array of strings from data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} an array of strings\n */\n\n\nfunction getStringsFromData(props, axis) {\n var isArrayOrIterable = Array.isArray(props.data) || Immutable.isIterable(props.data);\n\n if (!isArrayOrIterable) {\n return [];\n }\n\n var key = props[axis] === undefined ? axis : props[axis];\n var accessor = Helpers.createAccessor(key); // support immutable data\n\n var data = props.data.reduce(function (memo, d) {\n memo.push(parseDatum(d));\n return memo;\n }, []);\n var sortedData = sortData(data, props.sortKey, props.sortOrder);\n var dataStrings = sortedData.reduce(function (dataArr, datum) {\n datum = parseDatum(datum);\n dataArr.push(accessor(datum));\n return dataArr;\n }, []).filter(function (datum) {\n return typeof datum === \"string\";\n }); // return a unique set of strings\n\n return dataStrings.reduce(function (prev, curr) {\n if (curr !== undefined && curr !== null && prev.indexOf(curr) === -1) {\n prev.push(curr);\n }\n\n return prev;\n }, []);\n}\n/**\n * Checks whether a given component can be used to calculate date\n * @param {Component} component: a React component instance\n * @returns {Boolean} Returns true if the given component has a role included in the whitelist\n */\n\n\nfunction isDataComponent(component) {\n var getRole = function (child) {\n return child && child.type ? child.type.role : \"\";\n };\n\n var role = getRole(component);\n\n if (role === \"portal\") {\n var children = React.Children.toArray(component.props.children);\n role = children.length ? getRole(children[0]) : \"\";\n }\n\n var whitelist = [\"area\", \"bar\", \"boxplot\", \"candlestick\", \"errorbar\", \"group\", \"line\", \"pie\", \"scatter\", \"stack\", \"voronoi\"];\n return _includes(whitelist, role);\n}\n\nexport default {\n createStringMap: createStringMap,\n downsample: downsample,\n formatData: formatData,\n generateData: generateData,\n getCategories: getCategories,\n getData: getData,\n getStringsFromAxes: getStringsFromAxes,\n getStringsFromCategories: getStringsFromCategories,\n getStringsFromData: getStringsFromData,\n isDataComponent: isDataComponent\n};","import _includes from \"lodash/includes\";\nimport _isFunction from \"lodash/isFunction\";\nimport _sortedUniq from \"lodash/sortedUniq\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _flatten from \"lodash/flatten\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\nimport Data from \"./data\";\nimport Scale from \"./scale\";\nimport Helpers from \"./helpers\";\nimport Collection from \"./collection\"; // Private Methods\n\nfunction cleanDomain(domain, props, axis) {\n var scaleType = Scale.getScaleType(props, axis);\n\n if (scaleType !== \"log\") {\n return domain;\n }\n\n var rules = function (dom) {\n var almostZero = dom[0] < 0 || dom[1] < 0 ? -1 / Number.MAX_SAFE_INTEGER : 1 / Number.MAX_SAFE_INTEGER;\n var domainOne = dom[0] === 0 ? almostZero : dom[0];\n var domainTwo = dom[1] === 0 ? almostZero : dom[1];\n return [domainOne, domainTwo];\n };\n\n return rules(domain);\n}\n\nfunction getDomainPadding(props, axis) {\n var formatPadding = function (padding) {\n return Array.isArray(padding) ? {\n left: padding[0],\n right: padding[1]\n } : {\n left: padding,\n right: padding\n };\n };\n\n return _isPlainObject(props.domainPadding) ? formatPadding(props.domainPadding[axis]) : formatPadding(props.domainPadding);\n}\n\nfunction getFlatData(dataset, axis) {\n return _flatten(dataset).map(function (datum) {\n return datum[\"_\".concat(axis)] && datum[\"_\".concat(axis)][1] !== undefined ? datum[\"_\".concat(axis)][1] : datum[\"_\".concat(axis)];\n });\n}\n\nfunction getExtremeFromData(dataset, axis) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"min\";\n\n var getExtreme = function (arr) {\n return type === \"max\" ? Math.max.apply(Math, _toConsumableArray(arr)) : Math.min.apply(Math, _toConsumableArray(arr));\n };\n\n var initialValue = type === \"max\" ? -Infinity : Infinity;\n var containsDate = false;\n\n var result = _flatten(dataset).reduce(function (memo, datum) {\n var current0 = datum[\"_\".concat(axis, \"0\")] !== undefined ? datum[\"_\".concat(axis, \"0\")] : datum[\"_\".concat(axis)];\n var current1 = datum[\"_\".concat(axis, \"1\")] !== undefined ? datum[\"_\".concat(axis, \"1\")] : datum[\"_\".concat(axis)];\n var current = getExtreme([current0, current1]);\n containsDate = containsDate || current0 instanceof Date || current1 instanceof Date;\n return getExtreme([memo, current]);\n }, initialValue);\n\n return containsDate ? new Date(result) : result;\n} //eslint-disable-next-line max-statements\n\n\nfunction padDomain(domain, props, axis) {\n if (!props.domainPadding) {\n return domain;\n }\n\n var minDomain = getMinFromProps(props, axis);\n var maxDomain = getMaxFromProps(props, axis);\n var padding = getDomainPadding(props, axis);\n\n if (!padding.left && !padding.right) {\n return domain;\n }\n\n var min = Collection.getMinValue(domain);\n var max = Collection.getMaxValue(domain);\n var currentAxis = Helpers.getCurrentAxis(axis, props.horizontal);\n var range = Helpers.getRange(props, currentAxis);\n var rangeExtent = Math.abs(range[0] - range[1]); // Naive initial padding calculation\n\n var initialPadding = {\n left: Math.abs(max - min) * padding.left / rangeExtent,\n right: Math.abs(max - min) * padding.right / rangeExtent\n };\n var singleQuadrantDomainPadding = _isPlainObject(props.singleQuadrantDomainPadding) ? props.singleQuadrantDomainPadding[axis] : props.singleQuadrantDomainPadding;\n\n var adjust = function (val, type) {\n if (singleQuadrantDomainPadding === false) {\n return val;\n }\n\n var coerce = type === \"min\" && min >= 0 && val <= 0 || type === \"max\" && max <= 0 && val >= 0;\n return coerce ? 0 : val;\n }; // Adjust the domain by the initial padding\n\n\n var adjustedDomain = {\n min: adjust(min.valueOf() - initialPadding.left, \"min\"),\n max: adjust(max.valueOf() + initialPadding.right, \"max\")\n }; // re-calculate padding, taking the adjusted domain into account\n\n var finalPadding = {\n left: Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.left / rangeExtent,\n right: Math.abs(adjustedDomain.max - adjustedDomain.min) * padding.right / rangeExtent\n }; // Adjust the domain by the final padding\n\n var paddedDomain = {\n min: adjust(min.valueOf() - finalPadding.left, \"min\"),\n max: adjust(max.valueOf() + finalPadding.right, \"max\")\n }; // default to minDomain / maxDomain if they exist\n\n var finalDomain = {\n min: minDomain !== undefined ? minDomain : paddedDomain.min,\n max: maxDomain !== undefined ? maxDomain : paddedDomain.max\n };\n return min instanceof Date || max instanceof Date ? getDomainFromMinMax(new Date(finalDomain.min), new Date(finalDomain.max)) : getDomainFromMinMax(finalDomain.min, finalDomain.max);\n} // Public Methods\n\n/**\n * Returns a getDomain function\n * @param {Function} getDomainFromDataFunction: a function that takes props and axis and\n * returns a domain based on data\n * @param {Function} formatDomainFunction: a function that takes domain, props, and axis and\n * returns a formatted domain\n * @returns {Function} a function that takes props and axis and returns a formatted domain\n */\n\n\nfunction createDomainFunction(getDomainFromDataFunction, formatDomainFunction) {\n getDomainFromDataFunction = _isFunction(getDomainFromDataFunction) ? getDomainFromDataFunction : getDomainFromData;\n formatDomainFunction = _isFunction(formatDomainFunction) ? formatDomainFunction : formatDomain;\n return function (props, axis) {\n var propsDomain = getDomainFromProps(props, axis);\n\n if (propsDomain) {\n return formatDomainFunction(propsDomain, props, axis);\n }\n\n var categories = Data.getCategories(props, axis);\n var domain = categories ? getDomainFromCategories(props, axis, categories) : getDomainFromDataFunction(props, axis);\n return domain ? formatDomainFunction(domain, props, axis) : undefined;\n };\n}\n/**\n * Returns a formatted domain.\n * @param {Array} domain: a domain in the form of a two element array\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} a domain in the form of a two element array\n */\n\n\nfunction formatDomain(domain, props, axis) {\n return cleanDomain(padDomain(domain, props, axis), props, axis);\n}\n/**\n * Returns a domain for a given axis based on props, category, or data\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} the domain for the given axis\n */\n\n\nfunction getDomain(props, axis) {\n return createDomainFunction()(props, axis);\n}\n/**\n * Returns a domain based on categories if they exist\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @param {Array} categories: an array of categories corresponding to a given axis\n * @returns {Array|undefined} returns a domain from categories or undefined\n */\n\n\nfunction getDomainFromCategories(props, axis, categories) {\n categories = categories || Data.getCategories(props, axis);\n var polar = props.polar,\n _props$startAngle = props.startAngle,\n startAngle = _props$startAngle === void 0 ? 0 : _props$startAngle,\n _props$endAngle = props.endAngle,\n endAngle = _props$endAngle === void 0 ? 360 : _props$endAngle;\n\n if (!categories) {\n return undefined;\n }\n\n var minDomain = getMinFromProps(props, axis);\n var maxDomain = getMaxFromProps(props, axis);\n var stringArray = Collection.containsStrings(categories) ? Data.getStringsFromCategories(props, axis) : [];\n var stringMap = stringArray.length === 0 ? null : stringArray.reduce(function (memo, string, index) {\n memo[string] = index + 1;\n return memo;\n }, {});\n var categoryValues = stringMap ? categories.map(function (value) {\n return stringMap[value];\n }) : categories;\n var min = minDomain !== undefined ? minDomain : Collection.getMinValue(categoryValues);\n var max = maxDomain !== undefined ? maxDomain : Collection.getMaxValue(categoryValues);\n var categoryDomain = getDomainFromMinMax(min, max);\n return polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? getSymmetricDomain(categoryDomain, categoryValues) : categoryDomain;\n}\n/**\n * Returns a domain from a dataset for a given axis\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @param {Array} dataset: an array of data\n * @returns {Array} the domain based on data\n */\n\n\nfunction getDomainFromData(props, axis, dataset) {\n dataset = dataset || Data.getData(props);\n var polar = props.polar,\n _props$startAngle2 = props.startAngle,\n startAngle = _props$startAngle2 === void 0 ? 0 : _props$startAngle2,\n _props$endAngle2 = props.endAngle,\n endAngle = _props$endAngle2 === void 0 ? 360 : _props$endAngle2;\n var minDomain = getMinFromProps(props, axis);\n var maxDomain = getMaxFromProps(props, axis);\n\n if (dataset.length < 1) {\n return minDomain !== undefined && maxDomain !== undefined ? getDomainFromMinMax(minDomain, maxDomain) : undefined;\n }\n\n var min = minDomain !== undefined ? minDomain : getExtremeFromData(dataset, axis, \"min\");\n var max = maxDomain !== undefined ? maxDomain : getExtremeFromData(dataset, axis, \"max\");\n var domain = getDomainFromMinMax(min, max);\n return polar && axis === \"x\" && Math.abs(startAngle - endAngle) === 360 ? getSymmetricDomain(domain, getFlatData(dataset, axis)) : domain;\n}\n/**\n * Returns a domain in the form of a two element array given a min and max value.\n * @param {Number|Date} min: the props object\n * @param {Number|Date} max: the current axis\n * @returns {Array} the minDomain based on props\n */\n\n\nfunction getDomainFromMinMax(min, max) {\n var getSinglePointDomain = function (val) {\n // d3-scale does not properly resolve very small differences.\n // eslint-disable-next-line no-magic-numbers\n var verySmallNumber = val === 0 ? 2 * Math.pow(10, -10) : Math.pow(10, -10);\n var verySmallDate = 1;\n var minVal = val instanceof Date ? new Date(+val - verySmallDate) : +val - verySmallNumber;\n var maxVal = val instanceof Date ? new Date(+val + verySmallDate) : +val + verySmallNumber;\n return val === 0 ? [0, maxVal] : [minVal, maxVal];\n };\n\n return +min === +max ? getSinglePointDomain(max) : [min, max];\n}\n/**\n * Returns a the domain for a given axis if domain is given in props\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array|undefined} the domain based on props\n */\n\n\nfunction getDomainFromProps(props, axis) {\n var minDomain = getMinFromProps(props, axis);\n var maxDomain = getMaxFromProps(props, axis);\n\n if (_isPlainObject(props.domain) && props.domain[axis]) {\n return props.domain[axis];\n } else if (Array.isArray(props.domain)) {\n return props.domain;\n } else if (minDomain !== undefined && maxDomain !== undefined) {\n return getDomainFromMinMax(minDomain, maxDomain);\n }\n\n return undefined;\n}\n/**\n * Returns a domain for a given axis. This method forces the domain to include\n * zero unless the domain is explicitly specified in props.\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Array} the domain for the given axis\n */\n\n\nfunction getDomainWithZero(props, axis) {\n var propsDomain = getDomainFromProps(props, axis);\n\n if (propsDomain) {\n return propsDomain;\n }\n\n var dataset = Data.getData(props);\n var y0Min = dataset.reduce(function (min, datum) {\n return datum._y0 < min ? datum._y0 : min;\n }, Infinity);\n\n var ensureZero = function (domain) {\n if (axis === \"x\") {\n return domain;\n }\n\n var defaultMin = y0Min !== Infinity ? y0Min : 0;\n var maxDomainProp = getMaxFromProps(props, axis);\n var minDomainProp = getMinFromProps(props, axis);\n var max = maxDomainProp !== undefined ? maxDomainProp : Collection.getMaxValue(domain, defaultMin);\n var min = minDomainProp !== undefined ? minDomainProp : Collection.getMinValue(domain, defaultMin);\n return getDomainFromMinMax(min, max);\n };\n\n var getDomainFunction = function () {\n return getDomainFromData(props, axis, dataset);\n };\n\n var formatDomainFunction = function (domain) {\n return formatDomain(ensureZero(domain), props, axis);\n };\n\n return createDomainFunction(getDomainFunction, formatDomainFunction)(props, axis);\n}\n/**\n * Returns the maxDomain from props if it exists\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Number|undefined} the maxDomain based on props\n */\n\n\nfunction getMaxFromProps(props, axis) {\n if (_isPlainObject(props.maxDomain) && props.maxDomain[axis] !== undefined) {\n return props.maxDomain[axis];\n }\n\n return typeof props.maxDomain === \"number\" ? props.maxDomain : undefined;\n}\n/**\n * Returns the minDomain from props if it exists\n * @param {Object} props: the props object\n * @param {String} axis: the current axis\n * @returns {Number|undefined} the minDomain based on props\n */\n\n\nfunction getMinFromProps(props, axis) {\n if (_isPlainObject(props.minDomain) && props.minDomain[axis] !== undefined) {\n return props.minDomain[axis];\n }\n\n return typeof props.minDomain === \"number\" ? props.minDomain : undefined;\n}\n/**\n * Returns a symmetrically padded domain for polar charts\n * @param {Array} domain: the original domain\n * @param {Array} values: a flat array of values corresponding to either tickValues, or data values\n * for a given dimension i.e. only x values.\n * @returns {Array} the symmetric domain\n */\n\n\nfunction getSymmetricDomain(domain, values) {\n var processedData = _sortedUniq(values.sort(function (a, b) {\n return a - b;\n }));\n\n var step = processedData[1] - processedData[0];\n return [domain[0], domain[1] + step];\n}\n/**\n * Checks whether a given component can be used to calculate domain\n * @param {Component} component: a React component instance\n * @returns {Boolean} Returns true if the given component has a role included in the whitelist\n */\n\n\nfunction isDomainComponent(component) {\n var getRole = function (child) {\n return child && child.type ? child.type.role : \"\";\n };\n\n var role = getRole(component);\n\n if (role === \"portal\") {\n var children = React.Children.toArray(component.props.children);\n role = children.length ? getRole(children[0]) : \"\";\n }\n\n var whitelist = [\"area\", \"axis\", \"bar\", \"boxplot\", \"candlestick\", \"errorbar\", \"group\", \"line\", \"pie\", \"scatter\", \"stack\", \"voronoi\"];\n return _includes(whitelist, role);\n}\n\nexport default {\n createDomainFunction: createDomainFunction,\n formatDomain: formatDomain,\n getDomain: getDomain,\n getDomainFromCategories: getDomainFromCategories,\n getDomainFromData: getDomainFromData,\n getDomainFromMinMax: getDomainFromMinMax,\n getDomainFromProps: getDomainFromProps,\n getDomainWithZero: getDomainWithZero,\n getMaxFromProps: getMaxFromProps,\n getMinFromProps: getMinFromProps,\n getSymmetricDomain: getSymmetricDomain,\n isDomainComponent: isDomainComponent\n};","import _includes from \"lodash/includes\";\nimport _uniq from \"lodash/uniq\";\nimport _pickBy from \"lodash/pickBy\";\nimport _without from \"lodash/without\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _assign from \"lodash/assign\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nexport default {\n /* Returns all own and shared events that should be attached to a single target element,\n * i.e. an individual bar specified by target: \"data\", eventKey: [index].\n * Returned events are scoped to the appropriate state. Either that of the component itself\n * (i.e. VictoryBar) in the case of own events, or that of the parent component\n * (i.e. VictoryChart) in the case of shared events\n */\n // eslint-disable-next-line max-params\n getEvents: function (props, target, eventKey, getScopedEvents) {\n var _this = this;\n\n // Returns all events that apply to a particular target element\n var getEventsByTarget = function (events) {\n var getSelectedEvents = function () {\n var targetEvents = events.reduce(function (memo, event) {\n if (event.target !== undefined) {\n var matchesTarget = Array.isArray(event.target) ? _includes(event.target, target) : \"\".concat(event.target) === \"\".concat(target);\n return matchesTarget ? memo.concat(event) : memo;\n }\n\n return memo.concat(event);\n }, []);\n\n if (eventKey !== undefined && target !== \"parent\") {\n return targetEvents.filter(function (obj) {\n var targetKeys = obj.eventKey;\n\n var useKey = function (key) {\n return key ? \"\".concat(key) === \"\".concat(eventKey) : true;\n };\n\n return Array.isArray(targetKeys) ? targetKeys.some(function (k) {\n return useKey(k);\n }) : useKey(targetKeys);\n });\n }\n\n return targetEvents;\n };\n\n var selectedEvents = getSelectedEvents();\n return Array.isArray(selectedEvents) && selectedEvents.reduce(function (memo, event) {\n return event ? _assign(memo, event.eventHandlers) : memo;\n }, {});\n };\n /* Returns all events from props and defaultEvents from components. Events handlers\n * specified in props will override handlers for the same event if they are also\n * specified in defaultEvents of a sub-component\n */\n\n\n var getAllEvents = function () {\n if (Array.isArray(_this.componentEvents)) {\n var _this$componentEvents;\n\n return Array.isArray(props.events) ? (_this$componentEvents = _this.componentEvents).concat.apply(_this$componentEvents, _toConsumableArray(props.events)) : _this.componentEvents;\n }\n\n return props.events;\n };\n\n var allEvents = getAllEvents();\n var ownEvents = allEvents && _isFunction(getScopedEvents) ? getScopedEvents(getEventsByTarget(allEvents), target) : undefined;\n\n if (!props.sharedEvents) {\n return ownEvents;\n }\n\n var getSharedEvents = props.sharedEvents.getEvents;\n var sharedEvents = props.sharedEvents.events && getSharedEvents(getEventsByTarget(props.sharedEvents.events), target);\n return _assign({}, sharedEvents, ownEvents);\n },\n\n /* Returns a modified events object where each event handler is replaced by a new\n * function that calls the original handler and then calls setState with the return\n * of the original event handler assigned to state property that maps to the target\n * element.\n */\n // eslint-disable-next-line max-params\n getScopedEvents: function (events, namespace, childType, baseProps) {\n var _this2 = this;\n\n if (_isEmpty(events)) {\n return {};\n }\n\n baseProps = baseProps || this.baseProps; // returns the original base props or base state of a given target element\n\n var getTargetProps = function (identifier, type) {\n var childName = identifier.childName,\n target = identifier.target,\n key = identifier.key;\n var baseType = type === \"props\" ? baseProps : _this2.state || {};\n var base = childName === undefined || childName === null || !baseType[childName] ? baseType : baseType[childName];\n return key === \"parent\" ? base.parent : base[key] && base[key][target];\n }; // Returns the state object with the mutation caused by a given eventReturn\n // applied to the appropriate property on the state object\n\n\n var parseEvent = function (eventReturn, eventKey) {\n var childNames = namespace === \"parent\" ? eventReturn.childName : eventReturn.childName || childType;\n var target = eventReturn.target || namespace; // returns all eventKeys to modify for a targeted childName\n\n var getKeys = function (childName) {\n if (target === \"parent\") {\n return \"parent\";\n }\n\n if (eventReturn.eventKey === \"all\") {\n return baseProps[childName] ? _without(Object.keys(baseProps[childName]), \"parent\") : _without(Object.keys(baseProps), \"parent\");\n } else if (eventReturn.eventKey === undefined && eventKey === \"parent\") {\n return baseProps[childName] ? Object.keys(baseProps[childName]) : Object.keys(baseProps);\n }\n\n return eventReturn.eventKey !== undefined ? eventReturn.eventKey : eventKey;\n }; // returns the state object with mutated props applied for a single key\n\n\n var getMutationObject = function (key, childName) {\n var baseState = _this2.state || {};\n\n if (!_isFunction(eventReturn.mutation)) {\n return baseState;\n }\n\n var mutationTargetProps = getTargetProps({\n childName: childName,\n key: key,\n target: target\n }, \"props\");\n var mutationTargetState = getTargetProps({\n childName: childName,\n key: key,\n target: target\n }, \"state\");\n var mutatedProps = eventReturn.mutation(_assign({}, mutationTargetProps, mutationTargetState), baseProps);\n var childState = baseState[childName] || {};\n\n var filterState = function (state) {\n if (state[key] && state[key][target]) {\n delete state[key][target];\n }\n\n if (state[key] && !Object.keys(state[key]).length) {\n delete state[key];\n }\n\n return state;\n };\n\n var extendState = function (state) {\n return target === \"parent\" ? _assign(state, _defineProperty({}, key, _assign(state[key], mutatedProps))) : _assign(state, _defineProperty({}, key, _assign(state[key], _defineProperty({}, target, mutatedProps))));\n };\n\n var updateState = function (state) {\n return mutatedProps ? extendState(state) : filterState(state);\n };\n\n return childName !== undefined && childName !== null ? _assign(baseState, _defineProperty({}, childName, updateState(childState))) : updateState(baseState);\n }; // returns entire mutated state for a given childName\n\n\n var getReturnByChild = function (childName) {\n var mutationKeys = getKeys(childName);\n return Array.isArray(mutationKeys) ? mutationKeys.reduce(function (memo, key) {\n return _assign(memo, getMutationObject(key, childName));\n }, {}) : getMutationObject(mutationKeys, childName);\n }; // returns an entire mutated state for all children\n\n\n var allChildNames = childNames === \"all\" ? _without(Object.keys(baseProps), \"parent\") : childNames;\n return Array.isArray(allChildNames) ? allChildNames.reduce(function (memo, childName) {\n return _assign(memo, getReturnByChild(childName));\n }, {}) : getReturnByChild(allChildNames);\n }; // Parses an array of event returns into a single state mutation\n\n\n var parseEventReturn = function (eventReturn, eventKey) {\n return Array.isArray(eventReturn) ? eventReturn.reduce(function (memo, props) {\n memo = _assign({}, memo, parseEvent(props, eventKey));\n return memo;\n }, {}) : parseEvent(eventReturn, eventKey);\n };\n\n var compileCallbacks = function (eventReturn) {\n var getCallback = function (obj) {\n return _isFunction(obj.callback) && obj.callback;\n };\n\n var callbacks = Array.isArray(eventReturn) ? eventReturn.map(function (evtObj) {\n return getCallback(evtObj);\n }) : [getCallback(eventReturn)];\n var callbackArray = callbacks.filter(function (callback) {\n return callback !== false;\n });\n return callbackArray.length ? function () {\n return callbackArray.forEach(function (callback) {\n return callback();\n });\n } : undefined;\n }; // A function that calls a particular event handler, parses its return\n // into a state mutation, and calls setState\n // eslint-disable-next-line max-params\n\n\n var onEvent = function (evt, childProps, eventKey, eventName) {\n var eventReturn = events[eventName](evt, childProps, eventKey, _this2);\n\n if (eventReturn) {\n var callbacks = compileCallbacks(eventReturn);\n\n _this2.setState(parseEventReturn(eventReturn, eventKey), callbacks);\n }\n }; // returns a new events object with enhanced event handlers\n\n\n return Object.keys(events).reduce(function (memo, event) {\n memo[event] = onEvent;\n return memo;\n }, {});\n },\n\n /* Returns a partially applied event handler for a specific target element\n * This allows event handlers to have access to props controlling each element\n */\n getPartialEvents: function (events, eventKey, childProps) {\n return events ? Object.keys(events).reduce(function (memo, eventName) {\n var appliedEvent = function (evt) {\n return events[eventName](evt, childProps, eventKey, eventName);\n };\n\n memo[eventName] = appliedEvent;\n return memo;\n }, {}) : {};\n },\n\n /* Returns the property of the state object corresponding to event changes for\n * a particular element\n */\n getEventState: function (eventKey, namespace, childType) {\n var state = this.state || {};\n\n if (!childType) {\n return eventKey === \"parent\" ? state[eventKey] && state[eventKey][namespace] || state[eventKey] : state[eventKey] && state[eventKey][namespace];\n }\n\n return state[childType] && state[childType][eventKey] && state[childType][eventKey][namespace];\n },\n\n /**\n * Returns a set of all mutations for shared events\n *\n * @param {Array} mutations an array of mutations objects\n * @param {Object} baseProps an object that describes all props for children of VictorySharedEvents\n * @param {Object} baseState an object that describes state for children of VictorySharedEvents\n * @param {Array} childNames an array of childNames\n *\n * @return {Object} a object describing all mutations for VictorySharedEvents\n */\n // eslint-disable-next-line max-params\n getExternalMutationsWithChildren: function (mutations, baseProps, baseState, childNames) {\n var _this3 = this;\n\n baseProps = baseProps || {};\n baseState = baseState || {};\n return childNames.reduce(function (memo, childName) {\n var childState = baseState[childName];\n\n var mutation = _this3.getExternalMutations(mutations, baseProps[childName], baseState[childName], childName);\n\n memo[childName] = mutation ? mutation : childState;\n return _pickBy(memo, function (v) {\n return !_isEmpty(v);\n });\n }, {});\n },\n\n /**\n * Returns a set of all mutations for a component\n *\n * @param {Array} mutations an array of mutations objects\n * @param {Object} baseProps a props object (scoped to a childName when used by shared events)\n * @param {Object} baseState a state object (scoped to a childName when used by shared events)\n * @param {String} childName an optional childName\n *\n * @return {Object} a object describing mutations for a given component\n */\n // eslint-disable-next-line max-params\n getExternalMutations: function (mutations, baseProps, baseState, childName) {\n var _this4 = this;\n\n baseProps = baseProps || {};\n baseState = baseState || {};\n var eventKeys = Object.keys(baseProps);\n return eventKeys.reduce(function (memo, eventKey) {\n var keyState = baseState[eventKey] || {};\n var keyProps = baseProps[eventKey] || {};\n\n if (eventKey === \"parent\") {\n var identifier = {\n eventKey: eventKey,\n target: \"parent\"\n };\n\n var mutation = _this4.getExternalMutation(mutations, keyProps, keyState, identifier);\n\n memo[eventKey] = mutation !== undefined ? _assign({}, keyState, mutation) : keyState;\n } else {\n // use keys from both state and props so that elements not intially included in baseProps\n // will be used. (i.e. labels)\n var targets = _uniq(Object.keys(keyProps).concat(Object.keys(keyState)));\n\n memo[eventKey] = targets.reduce(function (m, target) {\n var identifier = {\n eventKey: eventKey,\n target: target,\n childName: childName\n };\n\n var mutation = _this4.getExternalMutation(mutations, keyProps[target], keyState[target], identifier);\n\n m[target] = mutation !== undefined ? _assign({}, keyState[target], mutation) : keyState[target];\n return _pickBy(m, function (v) {\n return !_isEmpty(v);\n });\n }, {});\n }\n\n return _pickBy(memo, function (v) {\n return !_isEmpty(v);\n });\n }, {});\n },\n\n /**\n * Returns a set of mutations for a particular element given scoped baseProps and baseState\n *\n * @param {Array} mutations an array of mutations objects\n * @param {Object} baseProps a props object (scoped the element specified by the identifier)\n * @param {Object} baseState a state object (scoped the element specified by the identifier)\n * @param {Object} identifier { eventKey, target, childName }\n *\n * @return {Object | undefined} a object describing mutations for a given element, or undefined\n */\n // eslint-disable-next-line max-params\n getExternalMutation: function (mutations, baseProps, baseState, identifier) {\n var filterMutations = function (mutation, type) {\n if (typeof mutation[type] === \"string\") {\n return mutation[type] === \"all\" || mutation[type] === identifier[type];\n } else if (Array.isArray(mutation[type])) {\n // coerce arrays to strings before matching\n var stringArray = mutation[type].map(function (m) {\n return \"\".concat(m);\n });\n return _includes(stringArray, identifier[type]);\n } else {\n return false;\n }\n };\n\n mutations = Array.isArray(mutations) ? mutations : [mutations];\n var scopedMutations = mutations;\n\n if (identifier.childName) {\n scopedMutations = mutations.filter(function (m) {\n return filterMutations(m, \"childName\");\n });\n } // find any mutation objects that match the target\n\n\n var targetMutations = scopedMutations.filter(function (m) {\n return filterMutations(m, \"target\");\n });\n\n if (_isEmpty(targetMutations)) {\n return undefined;\n }\n\n var keyMutations = targetMutations.filter(function (m) {\n return filterMutations(m, \"eventKey\");\n });\n\n if (_isEmpty(keyMutations)) {\n return undefined;\n }\n\n return keyMutations.reduce(function (memo, curr) {\n var mutationFunction = curr && _isFunction(curr.mutation) ? curr.mutation : function () {\n return undefined;\n };\n var currentMutation = mutationFunction(_assign({}, baseProps, baseState));\n return _assign({}, memo, currentMutation);\n }, {});\n },\n\n /* Returns an array of defaultEvents from sub-components of a given component.\n * i.e. any static `defaultEvents` on `labelComponent` will be returned\n */\n getComponentEvents: function (props, components) {\n var events = Array.isArray(components) && components.reduce(function (memo, componentName) {\n var _memo;\n\n var component = props[componentName];\n var defaultEvents = component && component.type && component.type.defaultEvents;\n var componentEvents = _isFunction(defaultEvents) ? defaultEvents(component.props) : defaultEvents;\n memo = Array.isArray(componentEvents) ? (_memo = memo).concat.apply(_memo, _toConsumableArray(componentEvents)) : memo;\n return memo;\n }, []);\n return events && events.length ? events : undefined;\n }\n};","import _assign from \"lodash/assign\";\nimport _pick from \"lodash/pick\";\nimport _property from \"lodash/property\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\n\n/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport React from \"react\";\n\n// Private Functions\nfunction getCartesianRange(props, axis) {\n // determine how to lay the axis and what direction positive and negative are\n var vertical = axis !== \"x\";\n var padding = getPadding(props);\n\n if (vertical) {\n return [props.height - padding.bottom, padding.top];\n }\n\n return [padding.left, props.width - padding.right];\n}\n\nfunction getPolarRange(props, axis) {\n if (axis === \"x\") {\n var startAngle = degreesToRadians(props.startAngle || 0);\n var endAngle = degreesToRadians(props.endAngle || 360);\n return [startAngle, endAngle];\n }\n\n return [props.innerRadius || 0, getRadius(props)];\n} // Exported Functions\n\n/**\n * creates an object with some keys excluded\n * replacement for lodash.omit for performance. does not mimick the entire lodash.omit api\n * @param {Object} originalObject: created object will be based on this object\n * @param {Array} keys: an array of keys to omit from the new object\n * @returns {Object} new object with same properties as originalObject\n */\n\n\nfunction omit(originalObject) {\n var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n // code based on babel's _objectWithoutProperties\n var newObject = {};\n\n for (var key in originalObject) {\n if (keys.indexOf(key) >= 0) {\n continue;\n }\n\n if (!Object.prototype.hasOwnProperty.call(originalObject, key)) {\n continue;\n }\n\n newObject[key] = originalObject[key];\n }\n\n return newObject;\n}\n\nfunction getPoint(datum) {\n var exists = function (val) {\n return val !== undefined;\n };\n\n var _x = datum._x,\n _x1 = datum._x1,\n _x0 = datum._x0,\n _voronoiX = datum._voronoiX,\n _y = datum._y,\n _y1 = datum._y1,\n _y0 = datum._y0,\n _voronoiY = datum._voronoiY;\n var defaultX = exists(_x1) ? _x1 : _x;\n var defaultY = exists(_y1) ? _y1 : _y;\n var point = {\n x: exists(_voronoiX) ? _voronoiX : defaultX,\n x0: exists(_x0) ? _x0 : _x,\n y: exists(_voronoiY) ? _voronoiY : defaultY,\n y0: exists(_y0) ? _y0 : _y\n };\n return _defaults({}, point, datum);\n}\n\nfunction scalePoint(props, datum) {\n var scale = props.scale,\n polar = props.polar,\n horizontal = props.horizontal;\n var d = getPoint(datum);\n var origin = props.origin || {\n x: 0,\n y: 0\n };\n var x = horizontal ? scale.y(d.y) : scale.x(d.x);\n var x0 = horizontal ? scale.y(d.y0) : scale.x(d.x0);\n var y = horizontal ? scale.x(d.x) : scale.y(d.y);\n var y0 = horizontal ? scale.x(d.x0) : scale.y(d.y0);\n return {\n x: polar ? y * Math.cos(x) + origin.x : x,\n x0: polar ? y0 * Math.cos(x0) + origin.x : x0,\n y: polar ? -y * Math.sin(x) + origin.y : y,\n y0: polar ? -y0 * Math.sin(x0) + origin.x : y0\n };\n}\n\nfunction getPadding(props) {\n var padding = props.padding;\n var paddingVal = typeof padding === \"number\" ? padding : 0;\n var paddingObj = typeof padding === \"object\" ? padding : {};\n return {\n top: paddingObj.top || paddingVal,\n bottom: paddingObj.bottom || paddingVal,\n left: paddingObj.left || paddingVal,\n right: paddingObj.right || paddingVal\n };\n}\n\nfunction getStyles(style, defaultStyles) {\n var width = \"100%\";\n var height = \"100%\";\n\n if (!style) {\n return _defaults({\n parent: {\n height: height,\n width: width\n }\n }, defaultStyles);\n }\n\n var data = style.data,\n labels = style.labels,\n parent = style.parent;\n var defaultParent = defaultStyles && defaultStyles.parent || {};\n var defaultLabels = defaultStyles && defaultStyles.labels || {};\n var defaultData = defaultStyles && defaultStyles.data || {};\n return {\n parent: _defaults({}, parent, defaultParent, {\n width: width,\n height: height\n }),\n labels: _defaults({}, labels, defaultLabels),\n data: _defaults({}, data, defaultData)\n };\n}\n\nfunction evaluateProp(prop, props) {\n return _isFunction(prop) ? prop(props) : prop;\n}\n\nfunction evaluateStyle(style, props) {\n if (!style || !Object.keys(style).some(function (value) {\n return _isFunction(style[value]);\n })) {\n return style;\n }\n\n return Object.keys(style).reduce(function (prev, curr) {\n prev[curr] = evaluateProp(style[curr], props);\n return prev;\n }, {});\n}\n\nfunction degreesToRadians(degrees) {\n return typeof degrees === \"number\" ? degrees * (Math.PI / 180) : degrees;\n}\n\nfunction radiansToDegrees(radians) {\n return typeof radians === \"number\" ? radians / (Math.PI / 180) : radians;\n}\n\nfunction getRadius(props) {\n var _getPadding = getPadding(props),\n left = _getPadding.left,\n right = _getPadding.right,\n top = _getPadding.top,\n bottom = _getPadding.bottom;\n\n var width = props.width,\n height = props.height;\n return Math.min(width - left - right, height - top - bottom) / 2;\n}\n\nfunction getPolarOrigin(props) {\n var width = props.width,\n height = props.height;\n\n var _getPadding2 = getPadding(props),\n top = _getPadding2.top,\n bottom = _getPadding2.bottom,\n left = _getPadding2.left,\n right = _getPadding2.right;\n\n var radius = Math.min(width - left - right, height - top - bottom) / 2;\n var offsetWidth = width / 2 + left - right;\n var offsetHeight = height / 2 + top - bottom;\n return {\n x: offsetWidth + radius > width ? radius + left - right : offsetWidth,\n y: offsetHeight + radius > height ? radius + top - bottom : offsetHeight\n };\n}\n\nfunction getRange(props, axis) {\n if (props.range && props.range[axis]) {\n return props.range[axis];\n } else if (props.range && Array.isArray(props.range)) {\n return props.range;\n }\n\n return props.polar ? getPolarRange(props, axis) : getCartesianRange(props, axis);\n}\n\nfunction createAccessor(key) {\n // creates a data accessor function\n // given a property key, path, array index, or null for identity.\n if (_isFunction(key)) {\n return key;\n } else if (key === null || key === undefined) {\n // null/undefined means \"return the data item itself\"\n return function (x) {\n return x;\n };\n } // otherwise, assume it is an array index, property key or path (_.property handles all three)\n\n\n return _property(key);\n}\n\nfunction modifyProps(props, fallbackProps, role) {\n var theme = props.theme && props.theme[role] ? props.theme[role] : {};\n var themeProps = omit(theme, [\"style\"]);\n var horizontal = isHorizontal(props);\n var defaultObject = horizontal === undefined ? {} : {\n horizontal: horizontal\n };\n return _defaults(defaultObject, props, themeProps, fallbackProps);\n}\n/**\n * Returns the given axis or the opposite axis when horizontal\n * @param {string} axis: the given axis, either \"x\" pr \"y\"\n * @param {Boolean} horizontal: true when the chart is flipped to the horizontal orientation\n * @returns {String} the dimension appropriate for the axis given its props \"x\" or \"y\"\n */\n\n\nfunction getCurrentAxis(axis, horizontal) {\n var otherAxis = axis === \"x\" ? \"y\" : \"x\";\n return horizontal ? otherAxis : axis;\n}\n/**\n * @param {Array} children: an array of child components\n * @param {Function} iteratee: a function with arguments \"child\", \"childName\", and \"parent\"\n * @param {Object} parentProps: props from the parent that are applied to children\n * @param {any} initialMemo: The object in which the iteration results are combined.\n * @param {Function} combine: Combines the result of the iteratee with the current memo\n * to the memo for the next iteration step\n * @returns {Array} returns an array of results from calling the iteratee on all nested children\n */\n\n/* eslint-disable max-params */\n\n\nfunction reduceChildren(children, iteratee) {\n var parentProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var initialMemo = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var combine = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function (memo, item) {\n return memo.concat(item);\n };\n var sharedProps = [\"data\", \"domain\", \"categories\", \"polar\", \"startAngle\", \"endAngle\", \"minDomain\", \"maxDomain\", \"horizontal\"];\n\n var traverseChildren = function (childArray, names, parent) {\n return childArray.reduce(function (memo, child, index) {\n var childRole = child.type && child.type.role;\n var childName = child.props.name || \"\".concat(childRole, \"-\").concat(names[index]);\n\n if (child.props && child.props.children) {\n var childProps = _assign({}, child.props, _pick(parentProps, sharedProps));\n\n var nestedChildren = child.type && _isFunction(child.type.getChildren) ? child.type.getChildren(childProps) : React.Children.toArray(child.props.children).map(function (c) {\n var nestedChildProps = _assign({}, c.props, _pick(childProps, sharedProps));\n\n return React.cloneElement(c, nestedChildProps);\n });\n\n var _childNames = nestedChildren.map(function (c, i) {\n return \"\".concat(childName, \"-\").concat(i);\n });\n\n var nestedResults = traverseChildren(nestedChildren, _childNames, child);\n memo = combine(memo, nestedResults);\n } else {\n var result = iteratee(child, childName, parent);\n\n if (result) {\n memo = combine(memo, result);\n }\n }\n\n return memo;\n }, initialMemo);\n };\n\n var childNames = children.map(function (c, i) {\n return i;\n });\n return traverseChildren(children, childNames);\n}\n/**\n * @param {Object} props: the props object\n * @returns {Boolean} returns true if the props object contains `horizontal: true` of if any\n * children or nested children are hoizontal\n */\n\n\nfunction isHorizontal(props) {\n if (props.horizontal !== undefined || !props.children) {\n return props.horizontal;\n }\n\n var traverseChildren = function (childArray) {\n return childArray.reduce(function (memo, child) {\n var childProps = child.props || {};\n\n if (memo || childProps.horizontal || !childProps.children) {\n memo = memo || childProps.horizontal;\n return memo;\n }\n\n return traverseChildren(React.Children.toArray(childProps.children));\n }, false);\n };\n\n return traverseChildren(React.Children.toArray(props.children));\n}\n\nexport default {\n omit: omit,\n getPoint: getPoint,\n scalePoint: scalePoint,\n getPadding: getPadding,\n getStyles: getStyles,\n evaluateProp: evaluateProp,\n evaluateStyle: evaluateStyle,\n degreesToRadians: degreesToRadians,\n radiansToDegrees: radiansToDegrees,\n getRadius: getRadius,\n getPolarOrigin: getPolarOrigin,\n getRange: getRange,\n createAccessor: createAccessor,\n modifyProps: modifyProps,\n getCurrentAxis: getCurrentAxis,\n reduceChildren: reduceChildren,\n isHorizontal: isHorizontal\n};","/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport Helpers from \"./helpers\"; // Private Functions\n\nfunction getVerticalAnchor(props, datum) {\n datum = datum || {};\n var sign = datum._y >= 0 ? 1 : -1;\n var labelStyle = props.style && props.style.labels || {};\n\n if (datum.verticalAnchor || labelStyle.verticalAnchor) {\n return datum.verticalAnchor || labelStyle.verticalAnchor;\n } else if (!props.horizontal) {\n return sign >= 0 ? \"end\" : \"start\";\n } else {\n return \"middle\";\n }\n}\n\nfunction getTextAnchor(props, datum) {\n datum = datum || {};\n var style = props.style,\n horizontal = props.horizontal;\n var sign = datum._y >= 0 ? 1 : -1;\n var labelStyle = style && style.labels || {};\n\n if (datum.verticalAnchor || labelStyle.verticalAnchor) {\n return datum.verticalAnchor || labelStyle.verticalAnchor;\n } else if (!horizontal) {\n return \"middle\";\n } else {\n return sign >= 0 ? \"start\" : \"end\";\n }\n}\n\nfunction getAngle(props, datum) {\n datum = datum || {};\n var labelStyle = props.style && props.style.labels || {};\n return datum.angle === undefined ? labelStyle.angle : datum.angle;\n}\n\nfunction getPadding(props, datum) {\n datum = datum || {};\n var horizontal = props.horizontal,\n style = props.style;\n var labelStyle = style.labels || {};\n var defaultPadding = Helpers.evaluateProp(labelStyle.padding, props) || 0;\n var sign = datum._y < 0 ? -1 : 1;\n return {\n x: horizontal ? sign * defaultPadding : 0,\n y: horizontal ? 0 : -1 * sign * defaultPadding\n };\n}\n\nfunction getOffset(props, datum) {\n if (props.polar) {\n return {};\n }\n\n var padding = getPadding(props, datum);\n return {\n dx: padding.x,\n dy: padding.y\n };\n}\n\nfunction getPosition(props, datum) {\n var polar = props.polar;\n\n var _Helpers$scalePoint = Helpers.scalePoint(props, datum),\n x = _Helpers$scalePoint.x,\n y = _Helpers$scalePoint.y;\n\n if (!polar) {\n return {\n x: x,\n y: y\n };\n } else {\n var polarPadding = getPolarPadding(props, datum);\n return {\n x: x + polarPadding.x,\n y: y + polarPadding.y\n };\n }\n}\n\nfunction getPolarPadding(props, datum) {\n var style = props.style;\n var degrees = getDegrees(props, datum);\n var labelStyle = style.labels || {};\n var padding = Helpers.evaluateProp(labelStyle.padding, props) || 0;\n var angle = Helpers.degreesToRadians(degrees);\n return {\n x: padding * Math.cos(angle),\n y: -padding * Math.sin(angle)\n };\n}\n\nfunction getLabelPlacement(props) {\n var labelComponent = props.labelComponent,\n labelPlacement = props.labelPlacement,\n polar = props.polar;\n var defaultLabelPlacement = polar ? \"perpendicular\" : \"vertical\";\n return labelPlacement ? labelPlacement : labelComponent.props && labelComponent.props.labelPlacement || defaultLabelPlacement;\n}\n\nfunction getPolarOrientation(degrees) {\n // eslint-disable-next-line no-magic-numbers\n if (degrees < 45 || degrees > 315) {\n return \"right\"; // eslint-disable-next-line no-magic-numbers\n } else if (degrees >= 45 && degrees <= 135) {\n return \"top\"; // eslint-disable-next-line no-magic-numbers\n } else if (degrees > 135 && degrees < 225) {\n return \"left\";\n } else {\n return \"bottom\";\n }\n} // Exported Functions\n\n\nfunction getText(props, datum, index) {\n datum = datum || {};\n\n if (datum.label !== undefined) {\n return datum.label;\n }\n\n return Array.isArray(props.labels) ? props.labels[index] : props.labels;\n}\n\nfunction getPolarTextAnchor(props, degrees) {\n var labelPlacement = getLabelPlacement(props);\n\n if (labelPlacement === \"perpendicular\" || labelPlacement === \"vertical\" && (degrees === 90 || degrees === 270)) {\n return \"middle\";\n }\n\n return degrees <= 90 || degrees > 270 ? \"start\" : \"end\";\n}\n\nfunction getPolarVerticalAnchor(props, degrees) {\n var labelPlacement = getLabelPlacement(props);\n var orientation = getPolarOrientation(degrees);\n\n if (labelPlacement === \"parallel\" || orientation === \"left\" || orientation === \"right\") {\n return \"middle\";\n }\n\n return orientation === \"top\" ? \"end\" : \"start\";\n}\n\nfunction getPolarAngle(props, baseAngle) {\n var labelPlacement = props.labelPlacement,\n datum = props.datum;\n\n if (!labelPlacement || labelPlacement === \"vertical\") {\n return 0;\n }\n\n var degrees = baseAngle !== undefined ? baseAngle : getDegrees(props, datum);\n var sign = degrees > 90 && degrees < 180 || degrees > 270 ? 1 : -1;\n var angle;\n\n if (degrees === 0 || degrees === 180) {\n angle = 90;\n } else if (degrees > 0 && degrees < 180) {\n angle = 90 - degrees;\n } else if (degrees > 180 && degrees < 360) {\n angle = 270 - degrees;\n }\n\n var labelRotation = labelPlacement === \"perpendicular\" ? 0 : 90;\n return angle + sign * labelRotation;\n}\n\nfunction getDegrees(props, datum) {\n var _Helpers$getPoint = Helpers.getPoint(datum),\n x = _Helpers$getPoint.x;\n\n return Helpers.radiansToDegrees(props.scale.x(x));\n}\n\nfunction getProps(props, index) {\n var scale = props.scale,\n data = props.data,\n style = props.style,\n horizontal = props.horizontal,\n polar = props.polar,\n width = props.width,\n height = props.height;\n var datum = data[index];\n var degrees = getDegrees(props, datum);\n var textAnchor = polar ? getPolarTextAnchor(props, degrees) : getTextAnchor(props, datum);\n var verticalAnchor = polar ? getPolarVerticalAnchor(props, degrees) : getVerticalAnchor(props, datum);\n var angle = getAngle(props, datum);\n var text = getText(props, datum, index);\n var labelPlacement = getLabelPlacement(props);\n\n var _getPosition = getPosition(props, datum),\n x = _getPosition.x,\n y = _getPosition.y;\n\n var _getOffset = getOffset(props, datum),\n dx = _getOffset.dx,\n dy = _getOffset.dy;\n\n return {\n angle: angle,\n data: data,\n datum: datum,\n horizontal: horizontal,\n index: index,\n polar: polar,\n scale: scale,\n labelPlacement: labelPlacement,\n text: text,\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor,\n x: x,\n y: y,\n dx: dx,\n dy: dy,\n width: width,\n height: height,\n style: style.labels\n };\n}\n\nexport default {\n getText: getText,\n getPolarTextAnchor: getPolarTextAnchor,\n getPolarVerticalAnchor: getPolarVerticalAnchor,\n getPolarAngle: getPolarAngle,\n getDegrees: getDegrees,\n getProps: getProps\n};","/* global console */\n\n/* eslint-disable no-console */\n// TODO: Use \"warning\" npm module like React is switching to.\nexport default {\n warn: function (message) {\n if (process.env.NODE_ENV !== \"production\") {\n if (console && console.warn) {\n console.warn(message);\n }\n }\n }\n};","import _isRegExp from \"lodash/isRegExp\";\nimport _find from \"lodash/find\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport Log from \"./log\";\nimport PropTypes from \"prop-types\";\n/**\n * Return a new validator based on `validator` but with the option to chain\n * `isRequired` onto the validation. This is nearly identical to how React\n * does it internally, but they don't expose their helper for us to use.\n * @param {Function} validator Validation function.\n * @returns {Function} Validator with `isRequired` option.\n */\n\nvar makeChainable = function (validator) {\n /* eslint-disable max-params */\n var _chainable = function (isRequired, props, propName, componentName) {\n var value = props[propName];\n\n if (value === undefined || value === null) {\n if (isRequired) {\n return new Error(\"Required `\".concat(propName, \"` was not specified in `\").concat(componentName, \"`.\"));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 4 ? _len - 4 : 0), _key = 4; _key < _len; _key++) {\n rest[_key - 4] = arguments[_key];\n }\n\n return validator.apply(void 0, [props, propName, componentName].concat(rest));\n };\n\n var chainable = _chainable.bind(null, false);\n\n chainable.isRequired = _chainable.bind(null, true);\n return chainable;\n};\n\nvar nullConstructor = function () {\n return null;\n};\n\nvar undefinedConstructor = function () {\n return undefined;\n};\n/**\n * Get the constructor of `value`. If `value` is null or undefined, return the\n * special singletons `nullConstructor` or `undefinedConstructor`, respectively.\n * @param {*} value Instance to return the constructor of.\n * @returns {Function} Constructor of `value`.\n */\n\n\nvar getConstructor = function (value) {\n if (value === undefined) {\n return undefinedConstructor;\n } else if (value === null) {\n return nullConstructor;\n } else {\n return value.constructor;\n }\n};\n/**\n * Get the name of the constructor used to create `value`, using\n * `Object.protoype.toString`. If the value is null or undefined, return\n * \"null\" or \"undefined\", respectively.\n * @param {*} value Instance to return the constructor name of.\n * @returns {String} Name of the constructor.\n */\n\n\nvar getConstructorName = function (value) {\n if (value === undefined) {\n return \"undefined\";\n } else if (value === null) {\n return \"null\";\n }\n\n return Object.prototype.toString.call(value).slice(8, -1); // eslint-disable-line no-magic-numbers\n};\n\nexport default {\n /**\n * Return a new validator based on `propType` but which logs a `console.error`\n * with `explanation` if used.\n * @param {Function} propType The old, deprecated propType.\n * @param {String} explanation The message to provide the user of the deprecated propType.\n * @returns {Function} Validator which logs usage of this propType\n */\n deprecated: function (propType, explanation) {\n return function (props, propName, componentName) {\n var value = props[propName];\n\n if (value !== null && value !== undefined) {\n Log.warn(\"\\\"\".concat(propName, \"\\\" property of \\\"\").concat(componentName, \"\\\" has been deprecated \").concat(explanation));\n }\n\n return PropTypes.checkPropTypes(_defineProperty({}, propName, propType), props, propName, componentName);\n };\n },\n\n /**\n * Return a new validator which returns true\n * if and only if all validators passed as arguments return true.\n * Like React.propTypes.oneOfType, except \"all\" instead of \"any\"\n * @param {Array} validators Validation functions.\n * @returns {Function} Combined validator function\n */\n allOfType: function (validators) {\n return makeChainable(function (props, propName, componentName) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n rest[_key2 - 3] = arguments[_key2];\n }\n\n return validators.reduce(function (result, validator) {\n return result || validator.apply(void 0, [props, propName, componentName].concat(rest));\n }, undefined);\n });\n },\n\n /**\n * Check that the value is a non-negative number.\n */\n nonNegative: makeChainable(function (props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value !== \"number\" || value < 0) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a non-negative number.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that the value is an integer.\n */\n integer: makeChainable(function (props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value !== \"number\" || value % 1 !== 0) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an integer.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that the value is greater than zero.\n */\n greaterThanZero: makeChainable(function (props, propName, componentName) {\n var value = props[propName];\n\n if (typeof value !== \"number\" || value <= 0) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a number greater than zero.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that the value is an Array of two unique values.\n */\n domain: makeChainable(function (props, propName, componentName) {\n var value = props[propName];\n\n if (!Array.isArray(value) || value.length !== 2 || value[1] === value[0]) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an array of two unique numeric values.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that the value looks like a d3 `scale` function.\n */\n scale: makeChainable(function (props, propName, componentName) {\n var supportedScaleStrings = [\"linear\", \"time\", \"log\", \"sqrt\"];\n\n var validScale = function (scl) {\n if (_isFunction(scl)) {\n return _isFunction(scl.copy) && _isFunction(scl.domain) && _isFunction(scl.range);\n } else if (typeof scl === \"string\") {\n return supportedScaleStrings.indexOf(scl) !== -1;\n }\n\n return false;\n };\n\n var value = props[propName];\n\n if (!validScale(value)) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a d3 scale.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that an array contains items of the same type.\n */\n homogeneousArray: makeChainable(function (props, propName, componentName) {\n var values = props[propName];\n\n if (!Array.isArray(values)) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be an array.\"));\n }\n\n if (values.length < 2) {\n return undefined;\n }\n\n var comparisonConstructor = getConstructor(values[0]);\n\n var typeMismatchedValue = _find(values, function (value) {\n return comparisonConstructor !== getConstructor(value);\n });\n\n if (typeMismatchedValue) {\n var constructorName = getConstructorName(values[0]);\n var otherConstructorName = getConstructorName(typeMismatchedValue);\n return new Error(\"Expected `\".concat(propName, \"` in `\").concat(componentName, \"` to be a \") + \"homogeneous array, but found types `\".concat(constructorName, \"` and \") + \"`\".concat(otherConstructorName, \"`.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that array prop length matches props.data.length\n */\n matchDataLength: makeChainable(function (props, propName) {\n if (props[propName] && Array.isArray(props[propName]) && props[propName].length !== props.data.length) {\n return new Error(\"Length of data and \".concat(propName, \" arrays must match.\"));\n }\n\n return undefined;\n }),\n\n /**\n * Check that the value is a regular expression\n */\n regExp: makeChainable(function (props, propName, componentName) {\n if (props[propName] && !_isRegExp(props[propName])) {\n return new Error(\"`\".concat(propName, \"` in `\").concat(componentName, \"` must be a regular expression.\"));\n }\n\n return undefined;\n })\n};","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal(range) {\n var index = map(),\n domain = [],\n unknown = implicit;\n\n range = range == null ? [] : slice.call(range);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band().paddingInner(1));\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nexport default function continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n return rescale();\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(deinterpolate, reinterpolate);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport constant from \"./constant\";\nimport nice from \"./nice\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport default function log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n","import constant from \"./constant\";\nimport {linearish} from \"./linear\";\nimport {default as continuous, copy} from \"./continuous\";\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nexport default function pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nexport function sqrt() {\n return pow().exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1];\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range);\n };\n\n return linearish(scale);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range[bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range);\n };\n\n return scale;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {interpolateNumber as reinterpolate} from \"d3-interpolate\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport {default as continuous, copy, deinterpolateLinear as deinterpolate} from \"./continuous\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(deinterpolate, reinterpolate),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\n\nexport default function() {\n return calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n}\n","export default function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n}\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"./colors\";\n\nexport default colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n","import colors from \"./colors\";\n\nexport default colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n","import colors from \"./colors\";\n\nexport default colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar rainbow = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n}\n","import colors from \"./colors\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import {linearish} from \"./linear\";\n\nexport default function sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n","import _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _includes from \"lodash/includes\";\nimport Helpers from \"./helpers\";\nimport Collection from \"./collection\";\nimport * as d3Scale from \"d3-scale\";\nvar supportedScaleStrings = [\"linear\", \"time\", \"log\", \"sqrt\"]; // Private Functions\n\nfunction toNewName(scale) {\n // d3 scale changed the naming scheme for scale from \"linear\" -> \"scaleLinear\" etc.\n var capitalize = function (s) {\n return s && s[0].toUpperCase() + s.slice(1);\n };\n\n return \"scale\".concat(capitalize(scale));\n}\n\nfunction validScale(scale) {\n if (typeof scale === \"function\") {\n return _isFunction(scale.copy) && _isFunction(scale.domain) && _isFunction(scale.range);\n } else if (typeof scale === \"string\") {\n return _includes(supportedScaleStrings, scale);\n }\n\n return false;\n}\n\nfunction isScaleDefined(props, axis) {\n if (!props.scale) {\n return false;\n } else if (props.scale.x || props.scale.y) {\n return props.scale[axis] ? true : false;\n }\n\n return true;\n}\n\nfunction getScaleTypeFromProps(props, axis) {\n if (!isScaleDefined(props, axis)) {\n return undefined;\n }\n\n var scale = props.scale[axis] || props.scale;\n return typeof scale === \"string\" ? scale : getType(scale);\n}\n\nfunction getScaleFromDomain(props, axis) {\n var domain;\n\n if (props.domain && props.domain[axis]) {\n domain = props.domain[axis];\n } else if (props.domain && Array.isArray(props.domain)) {\n domain = props.domain;\n }\n\n if (!domain) {\n return undefined;\n }\n\n return Collection.containsDates(domain) ? \"time\" : \"linear\";\n}\n\nfunction getScaleTypeFromData(props, axis) {\n if (!props.data) {\n return \"linear\";\n }\n\n var accessor = Helpers.createAccessor(props[axis]);\n var axisData = props.data.map(function (datum) {\n var processedData = _isPlainObject(accessor(datum)) ? accessor(datum)[axis] : accessor(datum);\n return processedData !== undefined ? processedData : datum[axis];\n });\n return Collection.containsDates(axisData) ? \"time\" : \"linear\";\n} // Exported Functions\n\n\nfunction getScaleFromName(name) {\n return validScale(name) ? d3Scale[toNewName(name)]() : d3Scale.scaleLinear();\n}\n\nfunction getBaseScale(props, axis) {\n var scale = getScaleFromProps(props, axis);\n\n if (scale) {\n return typeof scale === \"string\" ? getScaleFromName(scale) : scale;\n }\n\n var defaultScale = getScaleFromDomain(props, axis) || getScaleTypeFromData(props, axis);\n return d3Scale[toNewName(defaultScale)]();\n}\n\nfunction getDefaultScale() {\n return d3Scale.scaleLinear();\n}\n\nfunction getScaleFromProps(props, axis) {\n if (!isScaleDefined(props, axis)) {\n return undefined;\n }\n\n var scale = props.scale[axis] || props.scale;\n\n if (validScale(scale)) {\n return _isFunction(scale) ? scale : d3Scale[toNewName(scale)]();\n }\n\n return undefined;\n}\n\nfunction getScaleType(props, axis) {\n // if the scale was not given in props, it will be set to linear or time depending on data\n return getScaleTypeFromProps(props, axis) || getScaleTypeFromData(props, axis);\n}\n\nfunction getType(scale) {\n if (typeof scale === \"string\") {\n return scale;\n }\n\n var duckTypes = [{\n name: \"log\",\n method: \"base\"\n }, {\n name: \"ordinal\",\n method: \"unknown\"\n }, {\n name: \"pow-sqrt\",\n method: \"exponent\"\n }, {\n name: \"quantile\",\n method: \"quantiles\"\n }, {\n name: \"quantize-threshold\",\n method: \"invertExtent\"\n }];\n var scaleType = duckTypes.filter(function (type) {\n return scale[type.method] !== undefined;\n })[0];\n return scaleType ? scaleType.name : undefined;\n}\n\nexport default {\n getBaseScale: getBaseScale,\n getDefaultScale: getDefaultScale,\n getScaleFromProps: getScaleFromProps,\n getScaleType: getScaleType,\n getType: getType,\n getScaleFromName: getScaleFromName\n};","/**\n * Given an object with CSS/SVG transform definitions, return the string value\n * for use with the `transform` CSS property or SVG attribute. Note that we\n * can't always guarantee the order will match the author's intended order, so\n * authors should only use the object notation if they know that their transform\n * is commutative or that there is only one.\n * @param {Object} obj An object of transform definitions.\n * @returns {String} The generated transform string.\n */\nvar toTransformString = function (obj) {\n for (var _len = arguments.length, more = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n more[_key - 1] = arguments[_key];\n }\n\n if (more.length > 0) {\n return more.reduce(function (memo, currentObj) {\n return [memo, toTransformString(currentObj)].join(\" \");\n }, toTransformString(obj)).trim();\n } else {\n if (obj === undefined || obj === null || typeof obj === \"string\") {\n return obj;\n }\n\n var transforms = [];\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var value = obj[key];\n transforms.push(\"\".concat(key, \"(\").concat(value, \")\"));\n }\n }\n\n return transforms.join(\" \").trim();\n }\n};\n\nexport default {\n toTransformString: toTransformString,\n\n /**\n * Given the name of a color scale, getColorScale will return an array\n * of 5 hex string values in that color scale. If no 'name' parameter\n * is given, it will return the Victory default grayscale.\n * @param {String} name The name of the color scale to return (optional).\n * @returns {Array} An array of 5 hex string values composing a color scale.\n */\n getColorScale: function (name) {\n var scales = {\n grayscale: [\"#cccccc\", \"#969696\", \"#636363\", \"#252525\"],\n qualitative: [\"#334D5C\", \"#45B29D\", \"#EFC94C\", \"#E27A3F\", \"#DF5A49\", \"#4F7DA1\", \"#55DBC1\", \"#EFDA97\", \"#E2A37F\", \"#DF948A\"],\n heatmap: [\"#428517\", \"#77D200\", \"#D6D305\", \"#EC8E19\", \"#C92B05\"],\n warm: [\"#940031\", \"#C43343\", \"#DC5429\", \"#FF821D\", \"#FFAF55\"],\n cool: [\"#2746B9\", \"#0B69D4\", \"#2794DB\", \"#31BB76\", \"#60E83B\"],\n red: [\"#FCAE91\", \"#FB6A4A\", \"#DE2D26\", \"#A50F15\", \"#750B0E\"],\n blue: [\"#002C61\", \"#004B8F\", \"#006BC9\", \"#3795E5\", \"#65B4F4\"],\n green: [\"#354722\", \"#466631\", \"#649146\", \"#8AB25C\", \"#A9C97E\"]\n };\n return name ? scales[name] : scales.grayscale;\n }\n};","import _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar fontDictionary = {\n \"American Typewriter\": 2.09,\n Baskerville: 2.51,\n Georgia: 2.27,\n \"Hoefler Text\": 2.39,\n Palatino: 2.26,\n \"Times New Roman\": 2.48,\n Arial: 2.26,\n \"Gill Sans\": 2.47,\n \"Gill Sans 300\": 2.58,\n \"Helvetica Neue\": 2.24,\n \"Lucida Grande\": 2.05,\n Tahoma: 2.25,\n \"Trebuchet MS\": 2.2,\n Verdana: 1.96,\n \"Courier New\": 1.67,\n cursive: 1.84,\n fantasy: 2.09,\n monospace: 1.81,\n serif: 2.04,\n \"sans-serif\": 1.89\n}; //https://developer.mozilla.org/en/docs/Web/CSS/length\n// Absolute sizes in pixels for obsolete measurement units.\n\nvar absoluteMeasurementUnitsToPixels = {\n mm: 3.8,\n sm: 38,\n pt: 1.33,\n pc: 16,\n in: 96,\n px: 1\n};\nvar relativeMeasurementUnitsCoef = {\n em: 1,\n ex: 0.5\n};\nvar coefficients = {\n averageFontConstant: 2.1675,\n // Average pixels per glyph in existing font.\n widthOverlapCoef: 1.25,\n // Coefficient for width value to prevent overlap.\n heightOverlapCoef: 1.05,\n // Coefficient for height value to prevent overlap.\n lineCapitalCoef: 1.15,\n // Coefficient for height value. Reserve space for capital chars.\n lineSpaceHeightCoef: 0.2 // Coefficient for height value. Reserve space between lines.\n\n};\nvar defaultStyle = {\n lineHeight: 1,\n letterSpacing: \"0px\",\n fontSize: 0,\n angle: 0,\n fontFamily: \"\"\n};\n\nvar _degreeToRadian = function (angle) {\n return angle * Math.PI / 180;\n};\n\nvar _getFontCharacterConstant = function (fontFamily) {\n var firstFont = fontFamily.split(\",\")[0].replace(/'|\"/g, \"\");\n return fontDictionary[firstFont] || coefficients.averageFontConstant;\n};\n\nvar _splitToLines = function (text) {\n return Array.isArray(text) ? text : text.toString().split(/\\r\\n|\\r|\\n/g);\n};\n\nvar _getSizeWithRotate = function (axisSize, dependentSize, angle) {\n var angleInRadian = _degreeToRadian(angle);\n\n return Math.abs(Math.cos(angleInRadian) * axisSize) + Math.abs(Math.sin(angleInRadian) * dependentSize);\n};\n/**\n * Convert length-type parameters from specific measurement units to pixels\n * @param {string} length Css length string value.\n * @param {number} fontSize Current text font-size.\n * @returns {number} Approximate Css length in pixels.\n */\n\n\nvar convertLengthToPixels = function (length, fontSize) {\n var attribute = length.match(/[a-zA-Z%]+/)[0];\n var value = length.match(/[0-9.,]+/);\n var result;\n\n if (absoluteMeasurementUnitsToPixels.hasOwnProperty(attribute)) {\n result = value * absoluteMeasurementUnitsToPixels[attribute];\n } else if (relativeMeasurementUnitsCoef.hasOwnProperty(attribute)) {\n result = (fontSize ? value * fontSize : value * defaultStyle.fontSize) * relativeMeasurementUnitsCoef[attribute];\n } else {\n result = value;\n }\n\n return result;\n};\n\nvar _prepareParams = function (inputStyle, index) {\n var lineStyle = Array.isArray(inputStyle) ? inputStyle[index] : inputStyle;\n\n var style = _defaults({}, lineStyle, defaultStyle);\n\n return _assign({}, style, {\n characterConstant: style.characterConstant || _getFontCharacterConstant(style.fontFamily),\n letterSpacing: convertLengthToPixels(style.letterSpacing, style.fontSize),\n fontSize: typeof style.fontSize === \"number\" ? style.fontSize : convertLengthToPixels(String(style.fontSize))\n });\n};\n\nvar _approximateTextWidthInternal = function (text, style) {\n if (text === undefined || text === \"\" || text === null) {\n return 0;\n }\n\n var widths = _splitToLines(text).map(function (line, index) {\n var len = line.toString().length;\n\n var _prepareParams2 = _prepareParams(style, index),\n fontSize = _prepareParams2.fontSize,\n characterConstant = _prepareParams2.characterConstant,\n letterSpacing = _prepareParams2.letterSpacing;\n\n return len * fontSize / characterConstant + letterSpacing * Math.max(len - 1, 0);\n });\n\n return Math.max.apply(Math, _toConsumableArray(widths));\n};\n\nvar _approximateTextHeightInternal = function (text, style) {\n if (text === undefined || text === \"\" || text === null) {\n return 0;\n }\n\n return _splitToLines(text).reduce(function (total, line, index) {\n var lineStyle = _prepareParams(style, index);\n\n var containsCaps = line.toString().match(/[(A-Z)(0-9)]/);\n var height = containsCaps ? lineStyle.fontSize * coefficients.lineCapitalCoef : lineStyle.fontSize;\n var emptySpace = index === 0 ? 0 : lineStyle.fontSize * coefficients.lineSpaceHeightCoef;\n return total + lineStyle.lineHeight * (height + emptySpace);\n }, 0);\n};\n/**\n * Predict text size by font params.\n * @param {string} text Content for width calculation.\n * @param {Object} style Text styles, ,fontFamily, fontSize, etc.\n * @param {string} style.fontFamily Text fontFamily.\n * @param {(number|string)} style.fontSize Text fontSize.\n * @param {number} style.angle Text rotate angle.\n * @param {string} style.letterSpacing Text letterSpacing(space between letters).\n * @param {number} style.characterConstant Average pixels per glyph.\n * @param {number} style.lineHeight Line height coefficient.\n * @returns {number} Approximate text label height.\n */\n\n\nvar approximateTextSize = function (text, style) {\n var angle = Array.isArray(style) ? style[0] && style[0].angle : style && style.angle;\n\n var height = _approximateTextHeightInternal(text, style);\n\n var width = _approximateTextWidthInternal(text, style);\n\n var widthWithRotate = angle ? _getSizeWithRotate(width, height, angle) : width;\n var heightWithRotate = angle ? _getSizeWithRotate(height, width, angle) : height;\n return {\n width: widthWithRotate * coefficients.widthOverlapCoef,\n height: heightWithRotate * coefficients.heightOverlapCoef\n };\n};\n\nexport default {\n approximateTextSize: approximateTextSize,\n convertLengthToPixels: convertLengthToPixels\n};","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { timer, now } from \"d3-timer\";\n\nvar Timer =\n/*#__PURE__*/\nfunction () {\n function Timer() {\n _classCallCheck(this, Timer);\n\n this.shouldAnimate = true;\n this.subscribers = [];\n this.loop = this.loop.bind(this);\n this.timer = timer(this.loop);\n }\n\n _createClass(Timer, [{\n key: \"bypassAnimation\",\n value: function bypassAnimation() {\n this.shouldAnimate = false;\n }\n }, {\n key: \"resumeAnimation\",\n value: function resumeAnimation() {\n this.shouldAnimate = true;\n }\n }, {\n key: \"loop\",\n value: function loop() {\n this.subscribers.forEach(function (s) {\n s.callback(now() - s.startTime, s.duration);\n });\n }\n }, {\n key: \"start\",\n value: function start() {\n this.timer.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.timer.stop();\n }\n }, {\n key: \"subscribe\",\n value: function subscribe(callback, duration) {\n duration = this.shouldAnimate ? duration : 0;\n return this.subscribers.push({\n startTime: now(),\n callback: callback,\n duration: duration\n });\n }\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe(id) {\n if (id !== null) {\n delete this.subscribers[id - 1];\n }\n }\n }]);\n\n return Timer;\n}();\n\nexport { Timer as default };","import _identity from \"lodash/identity\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\nimport React from \"react\";\n\nfunction getDatumKey(datum, idx) {\n return (datum.key || idx).toString();\n}\n\nfunction getKeyedData(data) {\n return data.reduce(function (keyedData, datum, idx) {\n var key = getDatumKey(datum, idx);\n keyedData[key] = datum;\n return keyedData;\n }, {});\n}\n\nfunction getKeyedDataDifference(a, b) {\n var hasDifference = false;\n var difference = Object.keys(a).reduce(function (_difference, key) {\n if (!(key in b)) {\n hasDifference = true;\n _difference[key] = true;\n }\n\n return _difference;\n }, {});\n return hasDifference && difference;\n}\n/**\n * Calculate which data-points exist in oldData and not nextData -\n * these are the `exiting` data-points. Also calculate which\n * data-points exist in nextData and not oldData - these are the\n * `entering` data-points.\n *\n * @param {Array} oldData this.props.data Array\n * @param {Array} nextData this.props.data Array\n *\n * @return {Object} Object with `entering` and `exiting` properties.\n * entering[datum.key] will be true if the data is\n * entering, and similarly for `exiting`.\n */\n\n\nfunction getNodeTransitions(oldData, nextData) {\n var oldDataKeyed = oldData && getKeyedData(oldData);\n var nextDataKeyed = nextData && getKeyedData(nextData);\n return {\n entering: oldDataKeyed && getKeyedDataDifference(nextDataKeyed, oldDataKeyed),\n exiting: nextDataKeyed && getKeyedDataDifference(oldDataKeyed, nextDataKeyed)\n };\n}\n\nfunction getChildData(child) {\n if (child.type && child.type.getData) {\n return child.type.getData(child.props);\n }\n\n return child.props && child.props.data || false;\n}\n/**\n * If a parent component has animation enabled, calculate the transitions\n * for any data of any child component that supports data transitions\n * Data transitions are defined as any two datasets where data nodes exist\n * in the first set and not the second, in the second and not the first,\n * or both.\n *\n * @param {Children} oldChildren this.props.children from old props\n * @param {Children} nextChildren this.props.children from next props\n *\n * @return {Object} Object with the following properties:\n * - nodesWillExit\n * - nodesWillEnter\n * - childrenTransitions\n * - nodesShouldEnter\n */\n\n\nfunction getInitialTransitionState(oldChildren, nextChildren) {\n var nodesWillExit = false;\n var nodesWillEnter = false;\n\n var getTransition = function (oldChild, newChild) {\n if (!newChild || oldChild.type !== newChild.type) {\n return {};\n }\n\n var _ref = getNodeTransitions(getChildData(oldChild), getChildData(newChild)) || {},\n entering = _ref.entering,\n exiting = _ref.exiting;\n\n nodesWillExit = nodesWillExit || !!exiting;\n nodesWillEnter = nodesWillEnter || !!entering;\n return {\n entering: entering || false,\n exiting: exiting || false\n };\n };\n\n var getTransitionsFromChildren = function (old, next) {\n return old.map(function (child, idx) {\n if (child && child.props && child.props.children && next[idx]) {\n return getTransitionsFromChildren(React.Children.toArray(old[idx].props.children), React.Children.toArray(next[idx].props.children));\n } // get Transition entering and exiting nodes\n\n\n return getTransition(child, next[idx]);\n });\n };\n\n var childrenTransitions = getTransitionsFromChildren(React.Children.toArray(oldChildren), React.Children.toArray(nextChildren));\n return {\n nodesWillExit: nodesWillExit,\n nodesWillEnter: nodesWillEnter,\n childrenTransitions: childrenTransitions,\n // TODO: This may need to be refactored for the following situation.\n // The component receives new props, and the data provided\n // is a perfect match for the previous data and domain except\n // for new nodes. In this case, we wouldn't want a delay before\n // the new nodes appear.\n nodesShouldEnter: false\n };\n}\n\nfunction getInitialChildProps(animate, data) {\n var after = animate.onEnter && animate.onEnter.after ? animate.onEnter.after : _identity;\n return {\n data: data.map(function (datum, idx) {\n return _assign({}, datum, after(datum, idx, data));\n })\n };\n} // eslint-disable-next-line max-params\n\n\nfunction getChildBeforeLoad(animate, child, data, cb) {\n animate = _assign({}, animate, {\n onEnd: cb\n });\n\n if (animate && animate.onLoad && !animate.onLoad.duration) {\n return {\n animate: animate,\n data: data\n };\n }\n\n var before = animate.onLoad && animate.onLoad.before ? animate.onLoad.before : _identity; // If nodes need to exit, transform them with the provided onLoad.before function.\n\n data = data.map(function (datum, idx) {\n return _assign({}, datum, before(datum, idx, data));\n });\n return {\n animate: animate,\n data: data,\n clipWidth: 0\n };\n} // eslint-disable-next-line max-params\n\n\nfunction getChildOnLoad(animate, data, cb) {\n animate = _assign({}, animate, {\n onEnd: cb\n });\n\n if (animate && animate.onLoad && !animate.onLoad.duration) {\n return {\n animate: animate,\n data: data\n };\n }\n\n var after = animate.onLoad && animate.onLoad.after ? animate.onLoad.after : _identity; // If nodes need to exit, transform them with the provided onLoad.after function.\n\n data = data.map(function (datum, idx) {\n return _assign({}, datum, after(datum, idx, data));\n });\n return {\n animate: animate,\n data: data\n };\n} // eslint-disable-next-line max-params, max-len\n\n\nfunction getChildPropsOnExit(animate, child, data, exitingNodes, cb) {\n // Whether or not _this_ child has exiting nodes, we want the exit-\n // transition for all children to have the same duration, delay, etc.\n var onExit = animate && animate.onExit;\n animate = _assign({}, animate, onExit);\n\n if (exitingNodes) {\n // After the exit transition occurs, trigger the animations for\n // nodes that are neither exiting or entering.\n animate.onEnd = cb;\n var before = animate.onExit && animate.onExit.before ? animate.onExit.before : _identity; // If nodes need to exit, transform them with the provided onExit.before function.\n\n data = data.map(function (datum, idx) {\n var key = (datum.key || idx).toString();\n return exitingNodes[key] ? _assign({}, datum, before(datum, idx, data)) : datum;\n });\n }\n\n return {\n animate: animate,\n data: data\n };\n} // eslint-disable-next-line max-params,max-len\n\n\nfunction getChildPropsBeforeEnter(animate, child, data, enteringNodes, cb) {\n if (enteringNodes) {\n // Perform a normal animation here, except - when it finishes - trigger\n // the transition for entering nodes.\n animate = _assign({}, animate, {\n onEnd: cb\n });\n var before = animate.onEnter && animate.onEnter.before ? animate.onEnter.before : _identity; // We want the entering nodes to be included in the transition target\n // domain. However, we may not want these nodes to be displayed initially,\n // so perform the `onEnter.before` transformation on each node.\n\n data = data.map(function (datum, idx) {\n var key = (datum.key || idx).toString();\n return enteringNodes[key] ? _assign({}, datum, before(datum, idx, data)) : datum;\n });\n }\n\n return {\n animate: animate,\n data: data\n };\n} // eslint-disable-next-line max-params, max-len\n\n\nfunction getChildPropsOnEnter(animate, data, enteringNodes, cb) {\n // Whether or not _this_ child has entering nodes, we want the entering-\n // transition for all children to have the same duration, delay, etc.\n var onEnter = animate && animate.onEnter;\n animate = _assign({}, animate, onEnter);\n\n if (enteringNodes) {\n // Old nodes have been transitioned to their new values, and the\n // domain should encompass the nodes that will now enter. So perform\n // the `onEnter.after` transformation on each node.\n animate.onEnd = cb;\n var after = animate.onEnter && animate.onEnter.after ? animate.onEnter.after : _identity;\n data = data.map(function (datum, idx) {\n var key = getDatumKey(datum, idx);\n return enteringNodes[key] ? _assign({}, datum, after(datum, idx, data)) : datum;\n });\n }\n\n return {\n animate: animate,\n data: data\n };\n}\n/**\n * getTransitionPropsFactory - putting the Java in JavaScript. This will return a\n * function that returns prop transformations for a child, given that child's props\n * and its index in the parent's children array.\n *\n * In particular, this will include an `animate` object that is set appropriately\n * so that each child will be synchoronized for each stage of a transition\n * animation. It will also include a transformed `data` object, where each datum\n * is transformed by `animate.onExit` and `animate.onEnter` `before` and `after`\n * functions.\n *\n * @param {Object} props `this.props` for the parent component.\n * @param {Object} state `this.state` for the parent component.\n * @param {Function} setState Function that, when called, will `this.setState` on\n * the parent component with the provided object.\n *\n * @return {Function} Child-prop transformation function.\n */\n\n\nfunction getTransitionPropsFactory(props, state, setState) {\n var nodesWillExit = state && state.nodesWillExit;\n var nodesWillEnter = state && state.nodesWillEnter;\n var nodesShouldEnter = state && state.nodesShouldEnter;\n var nodesShouldLoad = state && state.nodesShouldLoad;\n var nodesDoneLoad = state && state.nodesDoneLoad;\n var childrenTransitions = state && state.childrenTransitions || [];\n var transitionDurations = {\n enter: props.animate && props.animate.onEnter && props.animate.onEnter.duration,\n exit: props.animate && props.animate.onExit && props.animate.onExit.duration,\n load: props.animate && props.animate.onLoad && props.animate.onLoad.duration,\n move: props.animate && props.animate.duration\n };\n\n var onLoad = function (child, data, animate) {\n if (nodesShouldLoad) {\n return getChildOnLoad(animate, data, function () {\n setState({\n nodesShouldLoad: false,\n nodesDoneLoad: true\n });\n });\n }\n\n return getChildBeforeLoad(animate, child, data, function () {\n setState({\n nodesDoneLoad: true\n });\n });\n }; // eslint-disable-next-line max-params\n\n\n var onExit = function (nodes, child, data, animate) {\n return getChildPropsOnExit(animate, child, data, nodes, function () {\n setState({\n nodesWillExit: false\n });\n });\n }; // eslint-disable-next-line max-params\n\n\n var onEnter = function (nodes, child, data, animate) {\n if (nodesShouldEnter) {\n return getChildPropsOnEnter(animate, data, nodes, function () {\n setState({\n nodesWillEnter: false\n });\n });\n }\n\n return getChildPropsBeforeEnter(animate, child, data, nodes, function () {\n setState({\n nodesShouldEnter: true\n });\n });\n };\n\n var getChildTransitionDuration = function (child, type) {\n var animate = child.props.animate;\n\n if (!child.type) {\n return {};\n }\n\n var defaultTransitions = child.props && child.props.polar ? child.type.defaultPolarTransitions || child.type.defaultTransitions : child.type.defaultTransitions;\n\n if (defaultTransitions) {\n var animationDuration = animate[type] && animate[type].duration;\n return animationDuration !== undefined ? animationDuration : defaultTransitions[type] && defaultTransitions[type].duration;\n } else {\n return {};\n }\n }; // eslint-disable-next-line max-statements, complexity, max-len\n\n\n return function getTransitionProps(child, index) {\n var data = getChildData(child) || [];\n\n var animate = _defaults({}, props.animate, child.props.animate);\n\n var defaultTransitions = child.props.polar ? child.type.defaultPolarTransitions || child.type.defaultTransitions : child.type.defaultTransitions;\n animate.onExit = _defaults({}, animate.onExit, defaultTransitions && defaultTransitions.onExit);\n animate.onEnter = _defaults({}, animate.onEnter, defaultTransitions && defaultTransitions.onEnter);\n animate.onLoad = _defaults({}, animate.onLoad, defaultTransitions && defaultTransitions.onLoad);\n var childTransitions = childrenTransitions[index] || childrenTransitions[0];\n\n if (!nodesDoneLoad) {\n // should do onLoad animation\n var load = transitionDurations.load !== undefined ? transitionDurations.load : getChildTransitionDuration(child, \"onLoad\");\n var animation = {\n duration: load\n };\n return onLoad(child, data, _assign({}, animate, animation));\n } else if (nodesWillExit) {\n var exitingNodes = childTransitions && childTransitions.exiting;\n var exit = transitionDurations.exit !== undefined ? transitionDurations.exit : getChildTransitionDuration(child, \"onExit\"); // if nodesWillExit, but this child has no exiting nodes, set a delay instead of a duration\n\n var _animation = exitingNodes ? {\n duration: exit\n } : {\n delay: exit\n };\n\n return onExit(exitingNodes, child, data, _assign({}, animate, _animation));\n } else if (nodesWillEnter) {\n var enteringNodes = childTransitions && childTransitions.entering;\n var enter = transitionDurations.enter !== undefined ? transitionDurations.enter : getChildTransitionDuration(child, \"onEnter\");\n var move = transitionDurations.move !== undefined ? transitionDurations.move : child.props.animate && child.props.animate.duration;\n var _animation2 = {\n duration: nodesShouldEnter && enteringNodes ? enter : move\n };\n return onEnter(enteringNodes, child, data, _assign({}, animate, _animation2));\n } else if (!state && animate && animate.onExit) {\n // This is the initial render, and nodes may enter when props change. Because\n // animation interpolation is determined by old- and next- props, data may need\n // to be augmented with certain properties.\n //\n // For example, it may be desired that exiting nodes go from `opacity: 1` to\n // `opacity: 0`. Without setting this on a per-datum basis, the interpolation\n // might go from `opacity: undefined` to `opacity: 0`, which would result in\n // interpolated `opacity: NaN` values.\n //\n return getInitialChildProps(animate, data);\n }\n\n return {\n animate: animate,\n data: data\n };\n };\n}\n\nexport default {\n getInitialTransitionState: getInitialTransitionState,\n getTransitionPropsFactory: getTransitionPropsFactory\n};","import _isNil from \"lodash/isNil\";\nimport _assign from \"lodash/assign\";\nimport { Helpers, LabelHelpers, Data, Domain, Scale } from \"victory-core\";\n\nvar getCalculatedValues = function (props) {\n var data = Data.getData(props);\n\n if (data.length < 2) {\n data = [];\n }\n\n var range = {\n x: Helpers.getRange(props, \"x\"),\n y: Helpers.getRange(props, \"y\")\n };\n var domain = {\n x: Domain.getDomain(props, \"x\"),\n y: Domain.getDomain(props, \"y\")\n };\n var scale = {\n x: Scale.getBaseScale(props, \"x\").domain(domain.x).range(props.horizontal ? range.y : range.x),\n y: Scale.getBaseScale(props, \"y\").domain(domain.y).range(props.horizontal ? range.x : range.y)\n };\n var origin = props.polar ? props.origin || Helpers.getPolarOrigin(props) : undefined;\n var defaultStyles = props.theme && props.theme.line && props.theme.line.style ? props.theme.line.style : {};\n var style = Helpers.getStyles(props.style, defaultStyles);\n return {\n domain: domain,\n data: data,\n scale: scale,\n style: style,\n origin: origin\n };\n};\n\nvar getBaseProps = function (props, fallbackProps) {\n var modifiedProps = Helpers.modifyProps(props, fallbackProps, \"line\");\n props = _assign({}, modifiedProps, getCalculatedValues(modifiedProps));\n var _props = props,\n data = _props.data,\n domain = _props.domain,\n events = _props.events,\n groupComponent = _props.groupComponent,\n height = _props.height,\n horizontal = _props.horizontal,\n interpolation = _props.interpolation,\n origin = _props.origin,\n padding = _props.padding,\n polar = _props.polar,\n scale = _props.scale,\n sharedEvents = _props.sharedEvents,\n standalone = _props.standalone,\n style = _props.style,\n theme = _props.theme,\n width = _props.width,\n labels = _props.labels,\n name = _props.name;\n var initialChildProps = {\n parent: {\n style: style.parent,\n scale: scale,\n data: data,\n height: height,\n width: width,\n name: name,\n domain: domain,\n standalone: standalone,\n polar: polar,\n origin: origin,\n padding: padding,\n horizontal: horizontal\n },\n all: {\n data: {\n horizontal: horizontal,\n polar: polar,\n origin: origin,\n scale: scale,\n data: data,\n interpolation: interpolation,\n groupComponent: groupComponent,\n theme: theme,\n style: style.data\n }\n }\n };\n return data.reduce(function (childProps, datum, index) {\n var text = LabelHelpers.getText(props, datum, index);\n\n if (text !== undefined && text !== null || labels && (events || sharedEvents)) {\n var eventKey = !_isNil(datum.eventKey) ? datum.eventKey : index;\n childProps[eventKey] = {\n labels: LabelHelpers.getProps(props, index)\n };\n }\n\n return childProps;\n }, initialChildProps);\n};\n\nexport { getBaseProps };","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import _assign from \"lodash/assign\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*eslint no-magic-numbers: [\"error\", { \"ignore\": [-1, 0, 1, 2] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as d3Shape from \"d3-shape\";\nimport { Helpers, CommonProps, Path } from \"victory-core\";\n\nvar defined = function (d) {\n var y = d._y1 !== undefined ? d._y1 : d._y;\n return y !== null && y !== undefined && d._y0 !== null;\n};\n\nvar getXAccessor = function (scale) {\n return function (d) {\n return scale.x(d._x1 !== undefined ? d._x1 : d._x);\n };\n};\n\nvar getYAccessor = function (scale) {\n return function (d) {\n return scale.y(d._y1 !== undefined ? d._y1 : d._y);\n };\n};\n\nvar getAngleAccessor = function (scale) {\n return function (d) {\n var x = scale.x(d._x1 !== undefined ? d._x1 : d._x);\n return -1 * x + Math.PI / 2;\n };\n};\n\nvar toNewName = function (interpolation) {\n // d3 shape changed the naming scheme for interpolators from \"basis\" -> \"curveBasis\" etc.\n var capitalize = function (s) {\n return s && s[0].toUpperCase() + s.slice(1);\n };\n\n return \"curve\".concat(capitalize(interpolation));\n};\n\nvar getLineFunction = function (props) {\n var polar = props.polar,\n scale = props.scale,\n horizontal = props.horizontal;\n var defaultOpenCurve = polar ? false : true;\n var openCurve = props.openCurve === undefined ? defaultOpenCurve : props.openCurve;\n var interpolationFunction = typeof props.interpolation === \"function\" && props.interpolation;\n var interpolationName = typeof props.interpolation === \"string\" && (!openCurve ? \"\".concat(toNewName(props.interpolation), \"Closed\") : toNewName(props.interpolation));\n return polar ? d3Shape.lineRadial().defined(defined).curve(interpolationFunction || d3Shape[interpolationName]).angle(getAngleAccessor(scale)).radius(getYAccessor(scale)) : d3Shape.line().defined(defined).curve(interpolationFunction || d3Shape[interpolationName]).x(horizontal ? getYAccessor(scale) : getXAccessor(scale)).y(horizontal ? getXAccessor(scale) : getYAccessor(scale));\n};\n\nvar Curve = function (props) {\n var polar = props.polar,\n origin = props.origin;\n var lineFunction = getLineFunction(props);\n var defaultTransform = polar && origin ? \"translate(\".concat(origin.x, \", \").concat(origin.y, \")\") : undefined;\n return React.cloneElement(props.pathComponent, _objectSpread({}, props.events, {\n d: lineFunction(props.data),\n style: Helpers.evaluateStyle(_assign({\n fill: \"none\",\n stroke: \"black\"\n }, props.style), props),\n transform: props.transform || defaultTransform,\n className: props.className,\n role: props.role,\n shapeRendering: props.shapeRendering,\n clipPath: props.clipPath\n }));\n};\n\nCurve.propTypes = _objectSpread({}, CommonProps.primitiveProps, {\n interpolation: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n openCurve: PropTypes.bool,\n origin: PropTypes.object,\n pathComponent: PropTypes.element,\n polar: PropTypes.bool\n});\nCurve.defaultProps = {\n pathComponent: React.createElement(Path, null),\n role: \"presentation\",\n shapeRendering: \"auto\"\n};\nexport default Curve;","/* eslint-disable func-style */\nexport default {\n continuousTransitions: function () {\n return {\n onLoad: {\n duration: 2000\n },\n onExit: {\n duration: 500\n },\n onEnter: {\n duration: 500\n }\n };\n },\n continuousPolarTransitions: function () {\n return {\n onLoad: {\n duration: 2000,\n before: function () {\n return {\n _y: 0,\n _y1: 0,\n _y0: 0\n };\n },\n after: function (datum) {\n return {\n _y: datum._y,\n _y1: datum._y1,\n _y0: datum._y0\n };\n }\n },\n onExit: {\n duration: 500,\n before: function (datum, index, data) {\n var adjacent = function (attr) {\n var adj = index === 0 ? data[index + 1] : data[index - 1];\n return adj[attr];\n };\n\n return {\n _x: adjacent(\"_x\"),\n _y: adjacent(\"_y\"),\n _y0: adjacent(\"_y0\")\n };\n }\n },\n onEnter: {\n duration: 500,\n before: function (datum, index, data) {\n var adjacent = function (attr) {\n var adj = index === 0 ? data[index + 1] : data[index - 1];\n return adj[attr];\n };\n\n return {\n _x: adjacent(\"_x\"),\n _y: adjacent(\"_y\"),\n _y0: adjacent(\"_y0\")\n };\n },\n after: function (datum) {\n return {\n _x: datum._x,\n _y: datum._y,\n _y1: datum._y1,\n _y0: datum._y0\n };\n }\n }\n };\n },\n discreteTransitions: function () {\n return {\n onLoad: {\n duration: 2000,\n before: function () {\n return {\n opacity: 0\n };\n },\n after: function (datum) {\n return datum;\n }\n },\n onExit: {\n duration: 600,\n before: function () {\n return {\n opacity: 0\n };\n }\n },\n onEnter: {\n duration: 600,\n before: function () {\n return {\n opacity: 0\n };\n },\n after: function (datum) {\n return datum;\n }\n }\n };\n }\n};","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ClipPath = function (props) {\n return React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: props.clipId\n }, props.children));\n};\n\nClipPath.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\nexport default ClipPath;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nimport React from \"react\";\n\nvar Circle = function (props) {\n // eslint-disable-next-line react/prop-types\n var desc = props.desc,\n rest = _objectWithoutProperties(props, [\"desc\"]);\n\n return desc ? React.createElement(\"circle\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest), React.createElement(\"desc\", null, desc)) : React.createElement(\"circle\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest));\n};\n\nexport default Circle;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nimport React from \"react\";\n\nvar Rect = function (props) {\n // eslint-disable-next-line react/prop-types\n var desc = props.desc,\n rest = _objectWithoutProperties(props, [\"desc\"]);\n\n return desc ? React.createElement(\"rect\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest), React.createElement(\"desc\", null, desc)) : React.createElement(\"rect\", _extends({\n vectorEffect: \"non-scaling-stroke\"\n }, rest));\n};\n\nexport default Rect;","import _uniqueId from \"lodash/uniqueId\";\nimport _isObject from \"lodash/isObject\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CustomPropTypes from \"../victory-util/prop-types\";\nimport Helpers from \"../victory-util/helpers\";\nimport ClipPath from \"../victory-primitives/clip-path\";\nimport Circle from \"../victory-primitives/circle\";\nimport Rect from \"../victory-primitives/rect\";\n\nvar VictoryClipContainer =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryClipContainer, _React$Component);\n\n function VictoryClipContainer(props) {\n var _this;\n\n _classCallCheck(this, VictoryClipContainer);\n\n _this = _possibleConstructorReturn(this, (VictoryClipContainer.__proto__ || Object.getPrototypeOf(VictoryClipContainer)).call(this, props));\n _this.clipId = !_isObject(props) || props.clipId === undefined ? _uniqueId(\"victory-clip-\") : props.clipId;\n return _this;\n }\n\n _createClass(VictoryClipContainer, [{\n key: \"calculateAttributes\",\n value: function calculateAttributes(props) {\n var polar = props.polar,\n origin = props.origin,\n _props$clipWidth = props.clipWidth,\n clipWidth = _props$clipWidth === void 0 ? 0 : _props$clipWidth,\n _props$clipHeight = props.clipHeight,\n clipHeight = _props$clipHeight === void 0 ? 0 : _props$clipHeight,\n _props$translateX = props.translateX,\n translateX = _props$translateX === void 0 ? 0 : _props$translateX,\n _props$translateY = props.translateY,\n translateY = _props$translateY === void 0 ? 0 : _props$translateY;\n var clipPadding = Helpers.getPadding({\n padding: props.clipPadding\n });\n var radius = props.radius || Helpers.getRadius(props);\n return {\n x: (polar ? origin.x : translateX) - clipPadding.left,\n y: (polar ? origin.y : translateY) - clipPadding.top,\n width: Math.max((polar ? radius : clipWidth) + clipPadding.left + clipPadding.right, 0),\n height: Math.max((polar ? radius : clipHeight) + clipPadding.top + clipPadding.bottom, 0)\n };\n }\n }, {\n key: \"renderClippedGroup\",\n value: function renderClippedGroup(props, clipId) {\n var style = props.style,\n events = props.events,\n transform = props.transform,\n children = props.children,\n className = props.className,\n groupComponent = props.groupComponent;\n var clipComponent = this.renderClipComponent(props, clipId);\n\n var groupProps = _assign({\n className: className,\n style: style,\n transform: transform,\n key: \"clipped-group-\".concat(clipId),\n clipPath: \"url(#\".concat(clipId, \")\")\n }, events);\n\n return React.cloneElement(groupComponent, groupProps, [clipComponent].concat(_toConsumableArray(React.Children.toArray(children))));\n }\n }, {\n key: \"renderGroup\",\n value: function renderGroup(props) {\n var style = props.style,\n events = props.events,\n transform = props.transform,\n children = props.children,\n className = props.className,\n groupComponent = props.groupComponent;\n return React.cloneElement(groupComponent, _assign({\n className: className,\n style: style,\n transform: transform\n }, events), children);\n }\n }, {\n key: \"renderClipComponent\",\n value: function renderClipComponent(props, clipId) {\n var polar = props.polar,\n origin = props.origin,\n _props$clipWidth2 = props.clipWidth,\n clipWidth = _props$clipWidth2 === void 0 ? 0 : _props$clipWidth2,\n _props$clipHeight2 = props.clipHeight,\n clipHeight = _props$clipHeight2 === void 0 ? 0 : _props$clipHeight2,\n _props$translateX2 = props.translateX,\n translateX = _props$translateX2 === void 0 ? 0 : _props$translateX2,\n _props$translateY2 = props.translateY,\n translateY = _props$translateY2 === void 0 ? 0 : _props$translateY2,\n circleComponent = props.circleComponent,\n rectComponent = props.rectComponent,\n clipPathComponent = props.clipPathComponent;\n\n var _Helpers$getPadding = Helpers.getPadding({\n padding: props.clipPadding\n }),\n top = _Helpers$getPadding.top,\n bottom = _Helpers$getPadding.bottom,\n left = _Helpers$getPadding.left,\n right = _Helpers$getPadding.right;\n\n var child;\n\n if (polar) {\n var radius = props.radius || Helpers.getRadius(props);\n var circleProps = {\n r: Math.max(radius + left + right, radius + top + bottom, 0),\n cx: origin.x - left,\n cy: origin.y - top\n };\n child = React.cloneElement(circleComponent, circleProps);\n } else {\n var rectProps = {\n x: translateX - left,\n y: translateY - top,\n width: Math.max(clipWidth + left + right, 0),\n height: Math.max(clipHeight + top + bottom, 0)\n };\n child = React.cloneElement(rectComponent, rectProps);\n }\n\n return React.cloneElement(clipPathComponent, _assign({\n key: \"clip-path-\".concat(clipId)\n }, props, {\n clipId: clipId\n }), child);\n }\n }, {\n key: \"getClipValue\",\n value: function getClipValue(props, axis) {\n var clipValues = {\n x: props.clipWidth,\n y: props.clipHeight\n };\n\n if (clipValues[axis] !== undefined) {\n return clipValues[axis];\n }\n\n var range = Helpers.getRange(props, axis);\n return range ? Math.abs(range[0] - range[1]) || undefined : undefined;\n }\n }, {\n key: \"getTranslateValue\",\n value: function getTranslateValue(props, axis) {\n var translateValues = {\n x: props.translateX,\n y: props.translateY\n };\n\n if (translateValues[axis] !== undefined) {\n return translateValues[axis];\n }\n\n var range = Helpers.getRange(props, axis);\n return range ? Math.min.apply(Math, _toConsumableArray(range)) : undefined;\n }\n }, {\n key: \"render\",\n value: function render() {\n var clipHeight = this.getClipValue(this.props, \"y\");\n var clipWidth = this.getClipValue(this.props, \"x\");\n\n if (clipWidth === undefined || clipHeight === undefined) {\n return this.renderGroup(this.props);\n }\n\n var translateX = this.getTranslateValue(this.props, \"x\");\n var translateY = this.getTranslateValue(this.props, \"y\");\n\n var clipProps = _defaults({}, this.props, {\n clipHeight: clipHeight,\n clipWidth: clipWidth,\n translateX: translateX,\n translateY: translateY\n });\n\n return this.renderClippedGroup(clipProps, this.clipId);\n }\n }]);\n\n return VictoryClipContainer;\n}(React.Component);\n\nObject.defineProperty(VictoryClipContainer, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryClipContainer\"\n});\nObject.defineProperty(VictoryClipContainer, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"container\"\n});\nObject.defineProperty(VictoryClipContainer, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n circleComponent: PropTypes.element,\n className: PropTypes.string,\n clipHeight: CustomPropTypes.nonNegative,\n clipId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n clipPadding: PropTypes.shape({\n top: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number\n }),\n clipPathComponent: PropTypes.element,\n clipWidth: CustomPropTypes.nonNegative,\n events: PropTypes.object,\n groupComponent: PropTypes.element,\n origin: PropTypes.shape({\n x: CustomPropTypes.nonNegative,\n y: CustomPropTypes.nonNegative\n }),\n polar: PropTypes.bool,\n radius: CustomPropTypes.nonNegative,\n style: PropTypes.object,\n transform: PropTypes.string,\n translateX: PropTypes.number,\n translateY: PropTypes.number\n }\n});\nObject.defineProperty(VictoryClipContainer, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n circleComponent: React.createElement(Circle, null),\n rectComponent: React.createElement(Rect, null),\n clipPathComponent: React.createElement(ClipPath, null),\n groupComponent: React.createElement(\"g\", null)\n }\n});\nexport { VictoryClipContainer as default };","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { getBaseProps } from \"./helper-methods\";\nimport Curve from \"./curve\";\nimport { PropTypes as CustomPropTypes, Helpers, VictoryLabel, addEvents, VictoryContainer, VictoryTheme, DefaultTransitions, VictoryClipContainer, Data, Domain, CommonProps } from \"victory-core\";\nvar fallbackProps = {\n width: 450,\n height: 300,\n padding: 50,\n interpolation: \"linear\"\n};\nvar options = {\n components: [{\n name: \"parent\",\n index: \"parent\"\n }, {\n name: \"data\",\n index: \"all\"\n }, {\n name: \"labels\"\n }]\n};\n\nvar VictoryLine =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryLine, _React$Component);\n\n function VictoryLine() {\n _classCallCheck(this, VictoryLine);\n\n return _possibleConstructorReturn(this, (VictoryLine.__proto__ || Object.getPrototypeOf(VictoryLine)).apply(this, arguments));\n }\n\n _createClass(VictoryLine, [{\n key: \"shouldAnimate\",\n // Overridden in native versions\n value: function shouldAnimate() {\n return !!this.props.animate;\n }\n }, {\n key: \"render\",\n value: function render() {\n var animationWhitelist = VictoryLine.animationWhitelist,\n role = VictoryLine.role;\n var props = Helpers.modifyProps(this.props, fallbackProps, role);\n\n if (this.shouldAnimate()) {\n return this.animateComponent(props, animationWhitelist);\n }\n\n var children = this.renderContinuousData(props);\n return props.standalone ? this.renderContainer(props.containerComponent, children) : children;\n }\n }]);\n\n return VictoryLine;\n}(React.Component);\n\nObject.defineProperty(VictoryLine, \"animationWhitelist\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"data\", \"domain\", \"height\", \"padding\", \"samples\", \"style\", \"width\"]\n});\nObject.defineProperty(VictoryLine, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryLine\"\n});\nObject.defineProperty(VictoryLine, \"role\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"line\"\n});\nObject.defineProperty(VictoryLine, \"defaultTransitions\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: DefaultTransitions.continuousTransitions()\n});\nObject.defineProperty(VictoryLine, \"defaultPolarTransitions\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: DefaultTransitions.continuousPolarTransitions()\n});\nObject.defineProperty(VictoryLine, \"continuous\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: true\n});\nObject.defineProperty(VictoryLine, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, CommonProps.baseProps, CommonProps.dataProps, {\n interpolation: PropTypes.oneOfType([PropTypes.oneOf([\"basis\", \"bundle\", \"cardinal\", \"catmullRom\", \"linear\", \"monotoneX\", \"monotoneY\", \"natural\", \"step\", \"stepAfter\", \"stepBefore\"]), PropTypes.func]),\n label: CustomPropTypes.deprecated(PropTypes.string, \"Use `labels` instead for individual data labels\")\n })\n});\nObject.defineProperty(VictoryLine, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n containerComponent: React.createElement(VictoryContainer, null),\n dataComponent: React.createElement(Curve, null),\n labelComponent: React.createElement(VictoryLabel, {\n renderInPortal: true\n }),\n groupComponent: React.createElement(VictoryClipContainer, null),\n samples: 50,\n sortKey: \"x\",\n sortOrder: \"ascending\",\n standalone: true,\n theme: VictoryTheme.grayscale\n }\n});\nObject.defineProperty(VictoryLine, \"getDomain\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Domain.getDomain\n});\nObject.defineProperty(VictoryLine, \"getData\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: Data.getData\n});\nObject.defineProperty(VictoryLine, \"getBaseProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return getBaseProps(props, fallbackProps);\n }\n});\nObject.defineProperty(VictoryLine, \"expectedComponents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: [\"dataComponent\", \"labelComponent\", \"groupComponent\", \"containerComponent\"]\n});\nexport default addEvents(VictoryLine, options);","import _isPlainObject from \"lodash/isPlainObject\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*eslint no-magic-numbers: [\"error\", { \"ignore\": [-1, 0, 1, 2] }]*/\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Helpers, CommonProps, Path } from \"victory-core\";\n\nvar getVerticalPath = function (props) {\n var pointerWidth = props.pointerWidth,\n cornerRadius = props.cornerRadius,\n orientation = props.orientation,\n width = props.width,\n height = props.height,\n center = props.center;\n var sign = orientation === \"bottom\" ? 1 : -1;\n var x = props.x + (props.dx || 0);\n var y = props.y + (props.dy || 0);\n var centerX = _isPlainObject(center) && center.x;\n var centerY = _isPlainObject(center) && center.y;\n var pointerEdge = centerY + sign * (height / 2);\n var oppositeEdge = centerY - sign * (height / 2);\n var rightEdge = centerX + width / 2;\n var leftEdge = centerX - width / 2;\n var pointerLength = sign * (y - pointerEdge) < 0 ? 0 : props.pointerLength;\n var direction = orientation === \"bottom\" ? \"0 0 0\" : \"0 0 1\";\n var arc = \"\".concat(cornerRadius, \" \").concat(cornerRadius, \" \").concat(direction);\n return \"M \".concat(centerX - pointerWidth / 2, \", \").concat(pointerEdge, \"\\n L \").concat(pointerLength ? x : centerX + pointerWidth / 2, \", \").concat(pointerLength ? y : pointerEdge, \"\\n L \").concat(centerX + pointerWidth / 2, \", \").concat(pointerEdge, \"\\n L \").concat(rightEdge - cornerRadius, \", \").concat(pointerEdge, \"\\n A \").concat(arc, \" \").concat(rightEdge, \", \").concat(pointerEdge - sign * cornerRadius, \"\\n L \").concat(rightEdge, \", \").concat(oppositeEdge + sign * cornerRadius, \"\\n A \").concat(arc, \" \").concat(rightEdge - cornerRadius, \", \").concat(oppositeEdge, \"\\n L \").concat(leftEdge + cornerRadius, \", \").concat(oppositeEdge, \"\\n A \").concat(arc, \" \").concat(leftEdge, \", \").concat(oppositeEdge + sign * cornerRadius, \"\\n L \").concat(leftEdge, \", \").concat(pointerEdge - sign * cornerRadius, \"\\n A \").concat(arc, \" \").concat(leftEdge + cornerRadius, \", \").concat(pointerEdge, \"\\n z\");\n};\n\nvar getHorizontalPath = function (props) {\n var pointerWidth = props.pointerWidth,\n cornerRadius = props.cornerRadius,\n orientation = props.orientation,\n width = props.width,\n height = props.height,\n center = props.center;\n var sign = orientation === \"left\" ? 1 : -1;\n var x = props.x + (props.dx || 0);\n var y = props.y + (props.dy || 0);\n var centerX = _isPlainObject(center) && center.x;\n var centerY = _isPlainObject(center) && center.y;\n var pointerEdge = centerX - sign * (width / 2);\n var oppositeEdge = centerX + sign * (width / 2);\n var bottomEdge = centerY + height / 2;\n var topEdge = centerY - height / 2;\n var pointerLength = sign * (x - pointerEdge) > 0 ? 0 : props.pointerLength;\n var direction = orientation === \"left\" ? \"0 0 0\" : \"0 0 1\";\n var arc = \"\".concat(cornerRadius, \" \").concat(cornerRadius, \" \").concat(direction);\n return \"M \".concat(pointerEdge, \", \").concat(centerY - pointerWidth / 2, \"\\n L \").concat(pointerLength ? x : pointerEdge, \", \").concat(pointerLength ? y : centerY + pointerWidth / 2, \"\\n L \").concat(pointerEdge, \", \").concat(centerY + pointerWidth / 2, \"\\n L \").concat(pointerEdge, \", \").concat(bottomEdge - cornerRadius, \"\\n A \").concat(arc, \" \").concat(pointerEdge + sign * cornerRadius, \", \").concat(bottomEdge, \"\\n L \").concat(oppositeEdge - sign * cornerRadius, \", \").concat(bottomEdge, \"\\n A \").concat(arc, \" \").concat(oppositeEdge, \", \").concat(bottomEdge - cornerRadius, \"\\n L \").concat(oppositeEdge, \", \").concat(topEdge + cornerRadius, \"\\n A \").concat(arc, \" \").concat(oppositeEdge - sign * cornerRadius, \", \").concat(topEdge, \"\\n L \").concat(pointerEdge + sign * cornerRadius, \", \").concat(topEdge, \"\\n A \").concat(arc, \" \").concat(pointerEdge, \", \").concat(topEdge + cornerRadius, \"\\n z\");\n};\n\nvar getFlyoutPath = function (props) {\n var orientation = props.orientation || \"top\";\n return orientation === \"left\" || orientation === \"right\" ? getHorizontalPath(props) : getVerticalPath(props);\n};\n\nvar Flyout = function (props) {\n return React.cloneElement(props.pathComponent, _objectSpread({}, props.events, {\n style: Helpers.evaluateStyle(props.style, props),\n d: getFlyoutPath(props),\n className: props.className,\n shapeRendering: props.shapeRendering,\n role: props.role,\n transform: props.transform,\n clipPath: props.clipPath\n }));\n};\n\nFlyout.propTypes = _objectSpread({}, CommonProps.primitiveProps, {\n center: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n cornerRadius: PropTypes.number,\n datum: PropTypes.object,\n dx: PropTypes.number,\n dy: PropTypes.number,\n height: PropTypes.number,\n orientation: PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]),\n pathComponent: PropTypes.element,\n pointerLength: PropTypes.number,\n pointerWidth: PropTypes.number,\n width: PropTypes.number,\n x: PropTypes.number,\n y: PropTypes.number\n});\nFlyout.defaultProps = {\n pathComponent: React.createElement(Path, null),\n role: \"presentation\",\n shapeRendering: \"auto\"\n};\nexport default Flyout;","import _orderBy from \"lodash/orderBy\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport _defaults from \"lodash/defaults\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { PropTypes as CustomPropTypes, TextSize, Helpers, LabelHelpers, VictoryLabel, VictoryTheme, VictoryPortal } from \"victory-core\";\nimport Flyout from \"./flyout\";\nvar fallbackProps = {\n cornerRadius: 5,\n pointerLength: 10,\n pointerWidth: 10\n};\n\nvar VictoryTooltip =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VictoryTooltip, _React$Component);\n\n function VictoryTooltip(props) {\n var _this;\n\n _classCallCheck(this, VictoryTooltip);\n\n _this = _possibleConstructorReturn(this, (VictoryTooltip.__proto__ || Object.getPrototypeOf(VictoryTooltip)).call(this, props));\n _this.id = props.id === undefined ? _uniqueId(\"tooltip-\") : props.id;\n return _this;\n }\n\n _createClass(VictoryTooltip, [{\n key: \"getDefaultOrientation\",\n value: function getDefaultOrientation(props) {\n var datum = props.datum,\n horizontal = props.horizontal,\n polar = props.polar;\n\n if (!polar) {\n var positive = horizontal ? \"right\" : \"top\";\n var negative = horizontal ? \"left\" : \"bottom\";\n return datum && datum.y < 0 ? negative : positive;\n } else {\n return this.getPolarOrientation(props, datum);\n }\n }\n }, {\n key: \"getPolarOrientation\",\n value: function getPolarOrientation(props, datum) {\n var degrees = LabelHelpers.getDegrees(props, datum);\n var placement = props.labelPlacement || \"vertical\";\n\n if (placement === \" vertical\") {\n return this.getVerticalOrientations(degrees);\n } else if (placement === \"parallel\") {\n return degrees < 90 || degrees > 270 ? \"right\" : \"left\";\n } else {\n return degrees > 180 ? \"bottom\" : \"top\";\n }\n }\n }, {\n key: \"getVerticalOrientations\",\n value: function getVerticalOrientations(degrees) {\n // eslint-disable-next-line no-magic-numbers\n if (degrees < 45 || degrees > 315) {\n return \"right\"; // eslint-disable-next-line no-magic-numbers\n } else if (degrees >= 45 && degrees <= 135) {\n return \"top\"; // eslint-disable-next-line no-magic-numbers\n } else if (degrees > 135 && degrees < 225) {\n return \"left\";\n } else {\n return \"bottom\";\n }\n }\n }, {\n key: \"getStyles\",\n value: function getStyles(props) {\n var theme = props.theme || VictoryTheme.grayscale;\n var defaultLabelStyles = theme && theme.tooltip && theme.tooltip.style ? theme.tooltip.style : {};\n var baseLabelStyle = Array.isArray(props.style) ? props.style.map(function (s) {\n return _defaults({}, s, defaultLabelStyles);\n }) : _defaults({}, props.style, defaultLabelStyles);\n var defaultFlyoutStyles = theme && theme.tooltip && theme.tooltip.flyoutStyle ? theme.tooltip.flyoutStyle : {};\n var baseFlyoutStyle = props.flyoutStyle ? _defaults({}, props.flyoutStyle, defaultFlyoutStyles) : defaultFlyoutStyles;\n var style = Array.isArray(baseLabelStyle) ? baseLabelStyle.map(function (s) {\n return Helpers.evaluateStyle(s, props);\n }) : Helpers.evaluateStyle(baseLabelStyle, props);\n var flyoutStyle = Helpers.evaluateStyle(baseFlyoutStyle, _assign({}, props, {\n style: style\n }));\n return {\n style: style,\n flyoutStyle: flyoutStyle\n };\n }\n }, {\n key: \"getEvaluatedProps\",\n value: function getEvaluatedProps(props) {\n var horizontal = props.horizontal,\n pointerLength = props.pointerLength,\n pointerWidth = props.pointerWidth,\n cornerRadius = props.cornerRadius,\n centerOffset = props.centerOffset,\n dx = props.dx,\n dy = props.dy;\n var active = Helpers.evaluateProp(props.active, props);\n var text = Helpers.evaluateProp(props.text, _assign({}, props, {\n active: active\n }));\n\n var _getStyles = this.getStyles(_assign({}, props, {\n active: active,\n text: text\n })),\n style = _getStyles.style,\n flyoutStyle = _getStyles.flyoutStyle;\n\n var orientation = Helpers.evaluateProp(props.orientation, _assign({}, props, {\n active: active,\n text: text,\n style: style,\n flyoutStyle: flyoutStyle\n })) || this.getDefaultOrientation(props);\n var labelSize = TextSize.approximateTextSize(text, style);\n\n var _getDimensions = this.getDimensions(_assign({}, props, {\n style: style,\n flyoutStyle: flyoutStyle,\n active: active,\n text: text,\n orientation: orientation\n }), labelSize),\n flyoutHeight = _getDimensions.flyoutHeight,\n flyoutWidth = _getDimensions.flyoutWidth;\n\n var evaluatedProps = _assign({}, props, {\n active: active,\n text: text,\n style: style,\n flyoutStyle: flyoutStyle,\n orientation: orientation,\n flyoutHeight: flyoutHeight,\n flyoutWidth: flyoutWidth\n });\n\n var offsetX = _isPlainObject(centerOffset) && centerOffset.x !== undefined ? Helpers.evaluateProp(centerOffset.x, evaluatedProps) : 0;\n var offsetY = _isPlainObject(centerOffset) && centerOffset.y !== undefined ? Helpers.evaluateProp(centerOffset.y, evaluatedProps) : 0;\n var padding = flyoutStyle && flyoutStyle.padding || 0;\n var defaultDx = horizontal ? padding : 0;\n var defaultDy = horizontal ? 0 : padding;\n return _assign({}, props, {\n active: active,\n text: text,\n style: style,\n flyoutStyle: flyoutStyle,\n orientation: orientation,\n flyoutHeight: flyoutHeight,\n flyoutWidth: flyoutWidth,\n centerOffset: {\n x: offsetX,\n y: offsetY\n },\n dx: dx !== undefined ? Helpers.evaluateProp(dx, evaluatedProps) : defaultDx,\n dy: dy !== undefined ? Helpers.evaluateProp(dy, evaluatedProps) : defaultDy,\n cornerRadius: Helpers.evaluateProp(cornerRadius, evaluatedProps),\n pointerLength: Helpers.evaluateProp(pointerLength, evaluatedProps),\n pointerWidth: Helpers.evaluateProp(pointerWidth, evaluatedProps)\n });\n }\n }, {\n key: \"getCalculatedValues\",\n value: function getCalculatedValues(props) {\n var style = props.style,\n text = props.text,\n flyoutStyle = props.flyoutStyle,\n flyoutHeight = props.flyoutHeight,\n flyoutWidth = props.flyoutWidth;\n var labelSize = TextSize.approximateTextSize(text, style);\n var flyoutDimensions = {\n height: flyoutHeight,\n width: flyoutWidth\n };\n var flyoutCenter = this.getFlyoutCenter(props, flyoutDimensions);\n var transform = this.getTransform(props);\n return {\n style: style,\n flyoutStyle: flyoutStyle,\n labelSize: labelSize,\n flyoutDimensions: flyoutDimensions,\n flyoutCenter: flyoutCenter,\n transform: transform\n };\n }\n }, {\n key: \"getTransform\",\n value: function getTransform(props) {\n var x = props.x,\n y = props.y,\n style = props.style;\n var labelStyle = style || {};\n var angle = labelStyle.angle || props.angle || this.getDefaultAngle(props);\n return angle ? \"rotate(\".concat(angle, \" \").concat(x, \" \").concat(y, \")\") : undefined;\n } // eslint-disable-next-line complexity\n\n }, {\n key: \"getDefaultAngle\",\n value: function getDefaultAngle(props) {\n var polar = props.polar,\n labelPlacement = props.labelPlacement,\n orientation = props.orientation,\n datum = props.datum;\n\n if (!polar || !labelPlacement || labelPlacement === \"vertical\") {\n return 0;\n }\n\n var degrees = LabelHelpers.getDegrees(props, datum);\n var sign = degrees > 90 && degrees < 180 || degrees > 270 ? 1 : -1;\n var labelRotation = labelPlacement === \"perpendicular\" ? 0 : 90;\n var angle;\n\n if (degrees === 0 || degrees === 180) {\n angle = orientation === \"top\" && degrees === 180 ? 270 : 90;\n } else if (degrees > 0 && degrees < 180) {\n angle = 90 - degrees;\n } else if (degrees > 180 && degrees < 360) {\n angle = 270 - degrees;\n }\n\n return angle + sign * labelRotation;\n }\n }, {\n key: \"constrainTooltip\",\n value: function constrainTooltip(center, props, dimensions) {\n var x = center.x,\n y = center.y;\n var width = dimensions.width,\n height = dimensions.height;\n var extent = {\n x: [0, props.width],\n y: [0, props.height]\n };\n var flyoutExtent = {\n x: [x - width / 2, x + width / 2],\n y: [y - height / 2, y + height / 2]\n };\n var adjustments = {\n x: [flyoutExtent.x[0] < extent.x[0] ? extent.x[0] - flyoutExtent.x[0] : 0, flyoutExtent.x[1] > extent.x[1] ? flyoutExtent.x[1] - extent.x[1] : 0],\n y: [flyoutExtent.y[0] < extent.y[0] ? extent.y[0] - flyoutExtent.y[0] : 0, flyoutExtent.y[1] > extent.y[1] ? flyoutExtent.y[1] - extent.y[1] : 0]\n };\n return {\n x: Math.round(x + adjustments.x[0] - adjustments.x[1]),\n y: Math.round(y + adjustments.y[0] - adjustments.y[1])\n };\n } // eslint-disable-next-line complexity\n\n }, {\n key: \"getFlyoutCenter\",\n value: function getFlyoutCenter(props, dimensions) {\n var x = props.x,\n y = props.y,\n dx = props.dx,\n dy = props.dy,\n pointerLength = props.pointerLength,\n orientation = props.orientation,\n constrainToVisibleArea = props.constrainToVisibleArea,\n centerOffset = props.centerOffset;\n var height = dimensions.height,\n width = dimensions.width;\n var xSign = orientation === \"left\" ? -1 : 1;\n var ySign = orientation === \"bottom\" ? -1 : 1;\n var flyoutCenter = {\n x: orientation === \"left\" || orientation === \"right\" ? x + xSign * (pointerLength + width / 2 + xSign * dx) : x + dx,\n y: orientation === \"top\" || orientation === \"bottom\" ? y - ySign * (pointerLength + height / 2 - ySign * dy) : y + dy\n };\n var center = {\n x: _isPlainObject(props.center) && props.center.x !== undefined ? props.center.x : flyoutCenter.x,\n y: _isPlainObject(props.center) && props.center.y !== undefined ? props.center.y : flyoutCenter.y\n };\n var centerWithOffset = {\n x: center.x + centerOffset.x,\n y: center.y + centerOffset.y\n };\n return constrainToVisibleArea ? this.constrainTooltip(centerWithOffset, props, dimensions) : centerWithOffset;\n }\n }, {\n key: \"getLabelPadding\",\n value: function getLabelPadding(style) {\n if (!style) {\n return 0;\n }\n\n var paddings = Array.isArray(style) ? style.map(function (s) {\n return s.padding;\n }) : [style.padding];\n return Math.max.apply(Math, _toConsumableArray(paddings).concat([0]));\n }\n }, {\n key: \"getDimensions\",\n value: function getDimensions(props, labelSize) {\n var orientation = props.orientation,\n pointerLength = props.pointerLength,\n pointerWidth = props.pointerWidth,\n style = props.style,\n flyoutHeight = props.flyoutHeight,\n flyoutWidth = props.flyoutWidth;\n var padding = this.getLabelPadding(style);\n var cornerRadius = Helpers.evaluateProp(props.cornerRadius, props);\n\n var getHeight = function () {\n var calculatedHeight = labelSize.height + padding;\n var minHeight = orientation === \"top\" || orientation === \"bottom\" ? 2 * cornerRadius : 2 * cornerRadius + pointerWidth;\n return Math.max(minHeight, calculatedHeight);\n };\n\n var getWidth = function () {\n var calculatedWidth = labelSize.width + padding;\n var minWidth = orientation === \"left\" || orientation === \"right\" ? 2 * cornerRadius + pointerLength : 2 * cornerRadius;\n return Math.max(minWidth, calculatedWidth);\n };\n\n return {\n flyoutHeight: flyoutHeight ? Helpers.evaluateProp(flyoutHeight, props) : getHeight(props, labelSize, orientation) + padding / 2,\n flyoutWidth: flyoutWidth ? Helpers.evaluateProp(flyoutWidth, props) : getWidth(props, labelSize, orientation) + padding\n };\n }\n }, {\n key: \"getLabelProps\",\n value: function getLabelProps(props, calculatedValues) {\n var flyoutCenter = calculatedValues.flyoutCenter,\n style = calculatedValues.style,\n labelSize = calculatedValues.labelSize,\n dy = calculatedValues.dy,\n dx = calculatedValues.dx;\n var text = props.text,\n datum = props.datum,\n labelComponent = props.labelComponent,\n index = props.index;\n var textAnchor = (Array.isArray(style) && style.length ? style[0].textAnchor : style.textAnchor) || \"middle\";\n\n var getLabelX = function () {\n var sign = textAnchor === \"end\" ? -1 : 1;\n return flyoutCenter.x - sign * (labelSize.width / 2);\n };\n\n return _defaults({}, labelComponent.props, {\n key: \"\".concat(this.id, \"-label-\").concat(index),\n text: text,\n datum: datum,\n textAnchor: textAnchor,\n dy: dy,\n dx: dx,\n style: style,\n x: !textAnchor || textAnchor === \"middle\" ? flyoutCenter.x : getLabelX(),\n y: flyoutCenter.y,\n verticalAnchor: \"middle\",\n angle: style.angle\n });\n }\n }, {\n key: \"getPointerOrientation\",\n value: function getPointerOrientation(point, center, flyoutDimensions) {\n var edges = {\n bottom: center.y + flyoutDimensions.height / 2,\n top: center.y - flyoutDimensions.height / 2,\n left: center.x - flyoutDimensions.width / 2,\n right: center.x + flyoutDimensions.width / 2\n };\n var gaps = [{\n side: \"top\",\n val: edges.top > point.y ? edges.top - point.y : -1\n }, {\n side: \"bottom\",\n val: edges.bottom < point.y ? point.y - edges.bottom : -1\n }, {\n side: \"right\",\n val: edges.right < point.x ? point.x - edges.right : -1\n }, {\n side: \"left\",\n val: edges.left > point.x ? edges.left - point.x : -1\n }];\n return _orderBy(gaps, \"val\", \"desc\")[0].side;\n }\n }, {\n key: \"getFlyoutProps\",\n value: function getFlyoutProps(props, calculatedValues) {\n var flyoutDimensions = calculatedValues.flyoutDimensions,\n flyoutStyle = calculatedValues.flyoutStyle,\n flyoutCenter = calculatedValues.flyoutCenter;\n var x = props.x,\n y = props.y,\n dx = props.dx,\n dy = props.dy,\n datum = props.datum,\n index = props.index,\n pointerLength = props.pointerLength,\n pointerWidth = props.pointerWidth,\n cornerRadius = props.cornerRadius,\n events = props.events,\n flyoutComponent = props.flyoutComponent;\n var pointerOrientation = Helpers.evaluateProp(props.pointerOrientation, props);\n return _defaults({}, flyoutComponent.props, {\n x: x,\n y: y,\n dx: dx,\n dy: dy,\n datum: datum,\n index: index,\n pointerLength: pointerLength,\n pointerWidth: pointerWidth,\n cornerRadius: cornerRadius,\n events: events,\n orientation: pointerOrientation || this.getPointerOrientation({\n x: x,\n y: y\n }, flyoutCenter, flyoutDimensions),\n key: \"\".concat(this.id, \"-tooltip-\").concat(index),\n width: flyoutDimensions.width,\n height: flyoutDimensions.height,\n style: flyoutStyle,\n center: flyoutCenter\n });\n } // Overridden in victory-core-native\n\n }, {\n key: \"renderTooltip\",\n value: function renderTooltip(props) {\n var evaluatedProps = this.getEvaluatedProps(props);\n var flyoutComponent = evaluatedProps.flyoutComponent,\n labelComponent = evaluatedProps.labelComponent,\n groupComponent = evaluatedProps.groupComponent,\n active = evaluatedProps.active,\n renderInPortal = evaluatedProps.renderInPortal;\n\n if (!active) {\n return renderInPortal ? React.createElement(VictoryPortal, null, null) : null;\n }\n\n var calculatedValues = this.getCalculatedValues(evaluatedProps);\n var children = [React.cloneElement(flyoutComponent, this.getFlyoutProps(evaluatedProps, calculatedValues)), React.cloneElement(labelComponent, this.getLabelProps(evaluatedProps, calculatedValues))];\n var tooltip = React.cloneElement(groupComponent, {\n role: \"presentation\",\n transform: calculatedValues.transform\n }, children);\n return renderInPortal ? React.createElement(VictoryPortal, null, tooltip) : tooltip;\n }\n }, {\n key: \"render\",\n value: function render() {\n var props = Helpers.modifyProps(this.props, fallbackProps, \"tooltip\");\n return this.renderTooltip(props);\n }\n }]);\n\n return VictoryTooltip;\n}(React.Component);\n\nObject.defineProperty(VictoryTooltip, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryTooltip\"\n});\nObject.defineProperty(VictoryTooltip, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n activateData: PropTypes.bool,\n active: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n angle: PropTypes.number,\n center: PropTypes.shape({\n x: CustomPropTypes.nonNegative,\n y: CustomPropTypes.nonNegative\n }),\n centerOffset: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.func])\n }),\n constrainToVisibleArea: PropTypes.bool,\n cornerRadius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n data: PropTypes.array,\n datum: PropTypes.object,\n dx: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n dy: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n events: PropTypes.object,\n flyoutComponent: PropTypes.element,\n flyoutHeight: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n flyoutStyle: PropTypes.object,\n flyoutWidth: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n groupComponent: PropTypes.element,\n height: PropTypes.number,\n horizontal: PropTypes.bool,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n index: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n labelComponent: PropTypes.element,\n orientation: PropTypes.oneOfType([PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]), PropTypes.func]),\n pointerLength: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n pointerOrientation: PropTypes.oneOfType([PropTypes.oneOf([\"top\", \"bottom\", \"left\", \"right\"]), PropTypes.func]),\n pointerWidth: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),\n polar: PropTypes.bool,\n renderInPortal: PropTypes.bool,\n scale: PropTypes.shape({\n x: CustomPropTypes.scale,\n y: CustomPropTypes.scale\n }),\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.array]),\n theme: PropTypes.object,\n width: PropTypes.number,\n x: PropTypes.number,\n y: PropTypes.number\n }\n});\nObject.defineProperty(VictoryTooltip, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: {\n active: false,\n renderInPortal: true,\n labelComponent: React.createElement(VictoryLabel, null),\n flyoutComponent: React.createElement(Flyout, null),\n groupComponent: React.createElement(\"g\", null)\n }\n});\nObject.defineProperty(VictoryTooltip, \"defaultEvents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return [{\n target: \"data\",\n eventHandlers: {\n onMouseOver: function () {\n return props.activateData ? [{\n target: \"labels\",\n mutation: function () {\n return {\n active: true\n };\n }\n }, {\n target: \"data\",\n mutation: function () {\n return {\n active: true\n };\n }\n }] : [{\n target: \"labels\",\n mutation: function () {\n return {\n active: true\n };\n }\n }];\n },\n onTouchStart: function () {\n return props.activateData ? [{\n target: \"labels\",\n mutation: function () {\n return {\n active: true\n };\n }\n }, {\n target: \"data\",\n mutation: function () {\n return {\n active: true\n };\n }\n }] : [{\n target: \"labels\",\n mutation: function () {\n return {\n active: true\n };\n }\n }];\n },\n onMouseOut: function () {\n return props.activateData ? [{\n target: \"labels\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }, {\n target: \"data\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }] : [{\n target: \"labels\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }];\n },\n onTouchEnd: function () {\n return props.activateData ? [{\n target: \"labels\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }, {\n target: \"data\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }] : [{\n target: \"labels\",\n mutation: function () {\n return {\n active: undefined\n };\n }\n }];\n }\n }\n }];\n }\n});\nexport { VictoryTooltip as default };","/* eslint-disable func-style */\n\n/* eslint-disable no-use-before-define */\nimport Collection from \"./collection\"; // Private Functions\n\nfunction transformTarget(target, matrix, dimension) {\n var a = matrix.a,\n d = matrix.d,\n e = matrix.e,\n f = matrix.f;\n return dimension === \"y\" ? d * target + f : a * target + e;\n}\n\nfunction getTransformationMatrix(svg) {\n return svg.getScreenCTM().inverse();\n} // Exported Functions\n\n\nfunction getParentSVG(evt) {\n if (evt.nativeEvent && evt.nativeEvent.identifier !== undefined) {\n return undefined;\n }\n\n var getParent = function (target) {\n if (target.nodeName === \"svg\") {\n return target;\n } else {\n return target.parentNode ? getParent(target.parentNode) : target;\n }\n };\n\n return getParent(evt.target);\n}\n\nfunction getSVGEventCoordinates(evt, svg) {\n if (evt.nativeEvent && evt.nativeEvent.identifier !== undefined) {\n // react-native override. relies on the RN.View being the _exact_ same size as its child SVG.\n // this should be fine: the svg is the only child of View and the View shirks to its children\n return {\n x: evt.nativeEvent.locationX,\n y: evt.nativeEvent.locationY\n };\n }\n\n evt = evt.changedTouches && evt.changedTouches.length ? evt.changedTouches[0] : evt;\n svg = svg || getParentSVG(evt);\n var matrix = getTransformationMatrix(svg);\n return {\n x: transformTarget(evt.clientX, matrix, \"x\"),\n y: transformTarget(evt.clientY, matrix, \"y\")\n };\n}\n\nfunction getDomainCoordinates(props, domain) {\n var scale = props.scale,\n horizontal = props.horizontal;\n domain = domain || {\n x: scale.x.domain(),\n y: scale.y.domain()\n };\n return {\n x: horizontal ? [scale.y(domain.y[0]), scale.y(domain.y[1])] : [scale.x(domain.x[0]), scale.x(domain.x[1])],\n y: horizontal ? [scale.x(domain.x[0]), scale.x(domain.x[1])] : [scale.y(domain.y[0]), scale.y(domain.y[1])]\n };\n} // eslint-disable-next-line max-params\n\n\nfunction getDataCoordinates(props, scale, x, y) {\n var polar = props.polar,\n horizontal = props.horizontal;\n\n if (!polar) {\n return {\n x: horizontal ? scale.x.invert(y) : scale.x.invert(x),\n y: horizontal ? scale.y.invert(x) : scale.y.invert(y)\n };\n } else {\n var origin = props.origin || {\n x: 0,\n y: 0\n };\n var baseX = x - origin.x;\n var baseY = y - origin.y;\n var radius = Math.abs(baseX * Math.sqrt(1 + Math.pow(-baseY / baseX, 2)));\n var angle = (-Math.atan2(baseY, baseX) + Math.PI * 2) % (Math.PI * 2);\n return {\n x: scale.x.invert(angle),\n y: scale.y.invert(radius)\n };\n }\n}\n\nfunction getBounds(props) {\n var x1 = props.x1,\n x2 = props.x2,\n y1 = props.y1,\n y2 = props.y2,\n scale = props.scale;\n var point1 = getDataCoordinates(props, scale, x1, y1);\n var point2 = getDataCoordinates(props, scale, x2, y2);\n\n var makeBound = function (a, b) {\n return [Collection.getMinValue([a, b]), Collection.getMaxValue([a, b])];\n };\n\n return {\n x: makeBound(point1.x, point2.x),\n y: makeBound(point1.y, point2.y)\n };\n}\n\nexport default {\n getParentSVG: getParentSVG,\n getSVGEventCoordinates: getSVGEventCoordinates,\n getDomainCoordinates: getDomainCoordinates,\n getDataCoordinates: getDataCoordinates,\n getBounds: getBounds\n};","import _isRegExp from \"lodash/isRegExp\";\nimport _isString from \"lodash/isString\";\nimport _includes from \"lodash/includes\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isFunction from \"lodash/isFunction\";\nimport _throttle from \"lodash/throttle\";\nimport _assign from \"lodash/assign\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { Selection, Data, Helpers } from \"victory-core\";\nimport isEqual from \"react-fast-compare\";\nimport Delaunay from \"delaunay-find/lib/index.js\";\nimport React from \"react\";\nvar VoronoiHelpers = {\n withinBounds: function (props, point) {\n var width = props.width,\n height = props.height,\n voronoiPadding = props.voronoiPadding,\n polar = props.polar,\n origin = props.origin,\n scale = props.scale;\n var padding = voronoiPadding || 0;\n var x = point.x,\n y = point.y;\n\n if (polar) {\n var distanceSquared = Math.pow(x - origin.x, 2) + Math.pow(y - origin.y, 2);\n var radius = Math.max.apply(Math, _toConsumableArray(scale.y.range()));\n return distanceSquared < Math.pow(radius, 2);\n } else {\n return x >= padding && x <= width - padding && y >= padding && y <= height - padding;\n }\n },\n getDatasets: function (props) {\n var children = React.Children.toArray(props.children);\n\n var addMeta = function (data, name, child) {\n var continuous = child && child.type && child.type.continuous;\n var style = child ? child.props && child.props.style : props.style;\n return data.map(function (datum, index) {\n var _Helpers$getPoint = Helpers.getPoint(datum),\n x = _Helpers$getPoint.x,\n y = _Helpers$getPoint.y,\n y0 = _Helpers$getPoint.y0,\n x0 = _Helpers$getPoint.x0;\n\n var voronoiX = (+x + +x0) / 2;\n var voronoiY = (+y + +y0) / 2;\n return _assign({\n _voronoiX: props.voronoiDimension === \"y\" ? 0 : voronoiX,\n _voronoiY: props.voronoiDimension === \"x\" ? 0 : voronoiY,\n eventKey: index,\n childName: name,\n continuous: continuous,\n style: style\n }, datum);\n });\n };\n\n if (props.data) {\n return addMeta(props.data);\n }\n\n var getData = function (childProps) {\n var data = Data.getData(childProps);\n return Array.isArray(data) && data.length > 0 ? data : undefined;\n };\n\n var iteratee = function (child, childName) {\n var childProps = child.props || {};\n var name = childProps.name || childName;\n var blacklist = props.voronoiBlacklist || [];\n var blacklistStr = blacklist.filter(_isString);\n var blacklistRegExp = blacklist.filter(_isRegExp);\n var isRegExpMatch = blacklistRegExp.some(function (regExp) {\n return regExp.test(name);\n });\n\n if (!Data.isDataComponent(child) || _includes(blacklistStr, name) || isRegExpMatch) {\n return null;\n }\n\n var getChildData = child.type && _isFunction(child.type.getData) ? child.type.getData : getData;\n var childData = getChildData(child.props);\n return childData ? addMeta(childData, name, child) : null;\n };\n\n return Helpers.reduceChildren(children, iteratee, props);\n },\n findPoints: function (datasets, point) {\n return datasets.filter(function (d) {\n return point._voronoiX === d._voronoiX && point._voronoiY === d._voronoiY;\n });\n },\n withinRadius: function (point, mousePosition, radius) {\n if (!radius) {\n return true;\n }\n\n var x = mousePosition.x,\n y = mousePosition.y;\n var distanceSquared = Math.pow(x - point[0], 2) + Math.pow(y - point[1], 2);\n return distanceSquared < Math.pow(radius, 2);\n },\n getVoronoiPoints: function (props, mousePosition) {\n var datasets = this.getDatasets(props);\n var scaledData = datasets.map(function (d) {\n var _Helpers$scalePoint = Helpers.scalePoint(props, d),\n x = _Helpers$scalePoint.x,\n y = _Helpers$scalePoint.y;\n\n return [x, y];\n });\n var delaunay = Delaunay.from(scaledData);\n var index = delaunay.find(mousePosition.x, mousePosition.y);\n var withinRadius = this.withinRadius(scaledData[index], mousePosition, props.radius);\n var points = withinRadius ? this.findPoints(datasets, datasets[index]) : [];\n return {\n points: points,\n index: index\n };\n },\n getActiveMutations: function (props, point) {\n var childName = point.childName,\n continuous = point.continuous;\n var activateData = props.activateData,\n activateLabels = props.activateLabels,\n labels = props.labels;\n\n if (!activateData && !activateLabels) {\n return [];\n }\n\n var defaultTarget = activateData ? [\"data\"] : [];\n var targets = labels && !activateLabels ? defaultTarget : defaultTarget.concat(\"labels\");\n\n if (_isEmpty(targets)) {\n return [];\n }\n\n return targets.map(function (target) {\n var eventKey = continuous === true && target === \"data\" ? \"all\" : point.eventKey;\n return {\n childName: childName,\n eventKey: eventKey,\n target: target,\n mutation: function () {\n return {\n active: true\n };\n }\n };\n });\n },\n getInactiveMutations: function (props, point) {\n var childName = point.childName,\n continuous = point.continuous;\n var activateData = props.activateData,\n activateLabels = props.activateLabels,\n labels = props.labels;\n\n if (!activateData && !activateLabels) {\n return [];\n }\n\n var defaultTarget = activateData ? [\"data\"] : [];\n var targets = labels && !activateLabels ? defaultTarget : defaultTarget.concat(\"labels\");\n\n if (_isEmpty(targets)) {\n return [];\n }\n\n return targets.map(function (target) {\n var eventKey = continuous && target === \"data\" ? \"all\" : point.eventKey;\n return {\n childName: childName,\n eventKey: eventKey,\n target: target,\n mutation: function () {\n return null;\n }\n };\n });\n },\n // eslint-disable-next-line max-params\n getParentMutation: function (activePoints, mousePosition, parentSVG, vIndex) {\n return [{\n target: \"parent\",\n eventKey: \"parent\",\n mutation: function () {\n return {\n activePoints: activePoints,\n mousePosition: mousePosition,\n parentSVG: parentSVG,\n vIndex: vIndex\n };\n }\n }];\n },\n onActivated: function (props, points) {\n if (_isFunction(props.onActivated)) {\n props.onActivated(points, props);\n }\n },\n onDeactivated: function (props, points) {\n if (_isFunction(props.onDeactivated)) {\n props.onDeactivated(points, props);\n }\n },\n onMouseLeave: function (evt, targetProps) {\n var _this = this,\n _getParentMutation;\n\n var activePoints = targetProps.activePoints || [];\n this.onDeactivated(targetProps, activePoints);\n var inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n return _this.getInactiveMutations(targetProps, point);\n }) : [];\n return (_getParentMutation = this.getParentMutation([])).concat.apply(_getParentMutation, _toConsumableArray(inactiveMutations));\n },\n onMouseMove: function (evt, targetProps) {\n var _this2 = this;\n\n // eslint-disable-line max-statements\n var activePoints = targetProps.activePoints || [];\n var parentSVG = targetProps.parentSVG || Selection.getParentSVG(evt);\n var mousePosition = Selection.getSVGEventCoordinates(evt, parentSVG);\n\n if (!this.withinBounds(targetProps, mousePosition)) {\n var _getParentMutation2;\n\n this.onDeactivated(targetProps, activePoints);\n var inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n return _this2.getInactiveMutations(targetProps, point);\n }) : [];\n return (_getParentMutation2 = this.getParentMutation([], mousePosition, parentSVG)).concat.apply(_getParentMutation2, _toConsumableArray(inactiveMutations));\n }\n\n var _getVoronoiPoints = this.getVoronoiPoints(targetProps, mousePosition),\n _getVoronoiPoints$poi = _getVoronoiPoints.points,\n points = _getVoronoiPoints$poi === void 0 ? [] : _getVoronoiPoints$poi,\n index = _getVoronoiPoints.index;\n\n var parentMutations = this.getParentMutation(points, mousePosition, parentSVG, index);\n\n if (activePoints.length && isEqual(points, activePoints)) {\n return parentMutations;\n } else {\n this.onActivated(targetProps, points);\n this.onDeactivated(targetProps, activePoints);\n var activeMutations = points.length ? points.map(function (point) {\n return _this2.getActiveMutations(targetProps, point);\n }) : [];\n\n var _inactiveMutations = activePoints.length ? activePoints.map(function (point) {\n return _this2.getInactiveMutations(targetProps, point);\n }) : [];\n\n return parentMutations.concat.apply(parentMutations, _toConsumableArray(_inactiveMutations).concat(_toConsumableArray(activeMutations)));\n }\n }\n};\nexport default {\n onMouseLeave: VoronoiHelpers.onMouseLeave.bind(VoronoiHelpers),\n onMouseMove: _throttle(VoronoiHelpers.onMouseMove.bind(VoronoiHelpers), 32, // eslint-disable-line no-magic-numbers\n {\n leading: true,\n trailing: false\n })\n};","import _pick from \"lodash/pick\";\nimport _isFunction from \"lodash/isFunction\";\nimport _defaults from \"lodash/defaults\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (typeof call === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\nimport { VictoryTooltip } from \"victory-tooltip\";\nimport { VictoryContainer, Helpers, PropTypes as CustomPropTypes } from \"victory-core\";\nimport VoronoiHelpers from \"./voronoi-helpers\";\nexport var voronoiContainerMixin = function (base) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_base) {\n _inherits(VictoryVoronoiContainer, _base);\n\n function VictoryVoronoiContainer() {\n _classCallCheck(this, VictoryVoronoiContainer);\n\n return _possibleConstructorReturn(this, (VictoryVoronoiContainer.__proto__ || Object.getPrototypeOf(VictoryVoronoiContainer)).apply(this, arguments));\n }\n\n _createClass(VictoryVoronoiContainer, [{\n key: \"getDimension\",\n value: function getDimension(props) {\n var horizontal = props.horizontal,\n voronoiDimension = props.voronoiDimension;\n\n if (!horizontal || !voronoiDimension) {\n return voronoiDimension;\n }\n\n return voronoiDimension === \"x\" ? \"y\" : \"x\";\n }\n }, {\n key: \"getPoint\",\n value: function getPoint(point) {\n var whitelist = [\"_x\", \"_x1\", \"_x0\", \"_y\", \"_y1\", \"_y0\"];\n return _pick(point, whitelist);\n }\n }, {\n key: \"getLabelPosition\",\n value: function getLabelPosition(props, labelProps, points) {\n var mousePosition = props.mousePosition,\n mouseFollowTooltips = props.mouseFollowTooltips;\n var voronoiDimension = this.getDimension(props);\n var point = this.getPoint(points[0]);\n var basePosition = Helpers.scalePoint(props, point);\n var center = mouseFollowTooltips ? mousePosition : undefined;\n\n if (!voronoiDimension || points.length < 2) {\n return _objectSpread({}, basePosition, {\n center: _defaults({}, labelProps.center, center)\n });\n }\n\n var x = voronoiDimension === \"y\" ? mousePosition.x : basePosition.x;\n var y = voronoiDimension === \"x\" ? mousePosition.y : basePosition.y;\n center = mouseFollowTooltips ? mousePosition : {\n x: x,\n y: y\n };\n return {\n x: x,\n y: y,\n center: _defaults({}, labelProps.center, center)\n };\n }\n }, {\n key: \"getStyle\",\n value: function getStyle(props, points, type) {\n var labels = props.labels,\n labelComponent = props.labelComponent,\n theme = props.theme;\n var componentProps = labelComponent.props || {};\n var themeStyles = theme && theme.voronoi && theme.voronoi.style ? theme.voronoi.style : {};\n var componentStyleArray = type === \"flyout\" ? componentProps.flyoutStyle : componentProps.style;\n return points.reduce(function (memo, datum, index) {\n var labelProps = _defaults({}, componentProps, {\n datum: datum,\n active: true\n });\n\n var text = _isFunction(labels) ? labels(labelProps) : undefined;\n var textArray = text !== undefined ? \"\".concat(text).split(\"\\n\") : [];\n var baseStyle = datum.style && datum.style[type] || {};\n var componentStyle = Array.isArray(componentStyleArray) ? componentStyleArray[index] : componentStyleArray;\n var style = Helpers.evaluateStyle(_defaults({}, componentStyle, baseStyle, themeStyles[type]), labelProps);\n var styleArray = textArray.length ? textArray.map(function () {\n return style;\n }) : [style];\n memo = memo.concat(styleArray);\n return memo;\n }, []);\n }\n }, {\n key: \"getDefaultLabelProps\",\n value: function getDefaultLabelProps(props, points) {\n var voronoiDimension = props.voronoiDimension,\n horizontal = props.horizontal,\n mouseFollowTooltips = props.mouseFollowTooltips;\n var point = this.getPoint(points[0]);\n var multiPoint = voronoiDimension && points.length > 1;\n var y = point._y1 !== undefined ? point._y1 : point._y;\n var defaultHorizontalOrientation = y < 0 ? \"left\" : \"right\";\n var defaultOrientation = y < 0 ? \"bottom\" : \"top\";\n var labelOrientation = horizontal ? defaultHorizontalOrientation : defaultOrientation;\n var orientation = mouseFollowTooltips ? undefined : labelOrientation;\n return {\n orientation: orientation,\n pointerLength: multiPoint ? 0 : undefined,\n constrainToVisibleArea: multiPoint || mouseFollowTooltips ? true : undefined\n };\n }\n }, {\n key: \"getLabelProps\",\n value: function getLabelProps(props, points) {\n var labels = props.labels,\n scale = props.scale,\n labelComponent = props.labelComponent,\n theme = props.theme,\n width = props.width,\n height = props.height;\n var componentProps = labelComponent.props || {};\n var text = points.reduce(function (memo, datum) {\n var labelProps = _defaults({}, componentProps, {\n datum: datum,\n active: true\n });\n\n var t = _isFunction(labels) ? labels(labelProps) : null;\n\n if (t === null || t === undefined) {\n return memo;\n }\n\n memo = memo.concat(\"\".concat(t).split(\"\\n\"));\n return memo;\n }, []); // remove properties from first point to make datum\n // eslint-disable-next-line no-unused-vars\n\n var _points$ = points[0],\n childName = _points$.childName,\n eventKey = _points$.eventKey,\n style = _points$.style,\n continuous = _points$.continuous,\n datum = _objectWithoutProperties(_points$, [\"childName\", \"eventKey\", \"style\", \"continuous\"]);\n\n var name = props.name === childName ? childName : \"\".concat(props.name, \"-\").concat(childName);\n\n var labelProps = _defaults({\n key: \"\".concat(name, \"-\").concat(eventKey, \"-voronoi-tooltip\"),\n id: \"\".concat(name, \"-\").concat(eventKey, \"-voronoi-tooltip\"),\n active: true,\n flyoutStyle: this.getStyle(props, points, \"flyout\")[0],\n renderInPortal: false,\n style: this.getStyle(props, points, \"labels\"),\n datum: datum,\n scale: scale,\n theme: theme,\n text: text,\n width: width,\n height: height\n }, componentProps, this.getDefaultLabelProps(props, points));\n\n var labelPosition = this.getLabelPosition(props, labelProps, points);\n return _defaults({}, labelPosition, labelProps);\n }\n }, {\n key: \"getTooltip\",\n value: function getTooltip(props) {\n var labels = props.labels,\n activePoints = props.activePoints,\n labelComponent = props.labelComponent;\n\n if (!labels) {\n return null;\n }\n\n if (Array.isArray(activePoints) && activePoints.length) {\n var labelProps = this.getLabelProps(props, activePoints);\n return React.cloneElement(labelComponent, labelProps);\n } else {\n return null;\n }\n } // Overrides method in VictoryContainer\n\n }, {\n key: \"getChildren\",\n value: function getChildren(props) {\n return _toConsumableArray(React.Children.toArray(props.children)).concat([this.getTooltip(props)]);\n }\n }]);\n\n return VictoryVoronoiContainer;\n }(base), Object.defineProperty(_class, \"displayName\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: \"VictoryVoronoiContainer\"\n }), Object.defineProperty(_class, \"propTypes\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, VictoryContainer.propTypes, {\n activateData: PropTypes.bool,\n activateLabels: PropTypes.bool,\n disable: PropTypes.bool,\n labelComponent: PropTypes.element,\n labels: PropTypes.func,\n mouseFollowTooltips: PropTypes.bool,\n onActivated: PropTypes.func,\n onDeactivated: PropTypes.func,\n radius: PropTypes.number,\n voronoiBlacklist: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, CustomPropTypes.regExp])),\n voronoiDimension: PropTypes.oneOf([\"x\", \"y\"]),\n voronoiPadding: PropTypes.number\n })\n }), Object.defineProperty(_class, \"defaultProps\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: _objectSpread({}, VictoryContainer.defaultProps, {\n activateData: true,\n activateLabels: true,\n labelComponent: React.createElement(VictoryTooltip, null),\n voronoiPadding: 5\n })\n }), Object.defineProperty(_class, \"defaultEvents\", {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function (props) {\n return [{\n target: \"parent\",\n eventHandlers: {\n onMouseLeave: function (evt, targetProps) {\n return props.disable ? {} : VoronoiHelpers.onMouseLeave(evt, targetProps);\n },\n onTouchCancel: function (evt, targetProps) {\n return props.disable ? {} : VoronoiHelpers.onMouseLeave(evt, targetProps);\n },\n onMouseMove: function (evt, targetProps) {\n return props.disable ? {} : VoronoiHelpers.onMouseMove(evt, targetProps);\n },\n onTouchMove: function (evt, targetProps) {\n return props.disable ? {} : VoronoiHelpers.onMouseMove(evt, targetProps);\n }\n }\n }, {\n target: \"data\",\n eventHandlers: props.disable ? {} : {\n onMouseOver: function () {\n return null;\n },\n onMouseOut: function () {\n return null;\n },\n onMouseMove: function () {\n return null;\n }\n }\n }];\n }\n }), _temp;\n};\nexport default voronoiContainerMixin(VictoryContainer);"],"names":["Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","this","rgb","formatHex","color_formatRgb","formatRgb","color","format","m","l","trim","toLowerCase","exec","length","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","NaN","n","r","g","b","a","rgbConvert","o","opacity","arguments","rgb_formatHex","hex","rgb_formatRgb","isNaN","Math","max","min","round","value","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","copy","channels","Object","assign","constructor","displayable","formatHsl","k","pow","factory","prototype","extend","parent","definition","create","key","linear","d","t","hue","gamma","y","nogamma","exponential","x","basis","t1","v0","v1","v2","v3","t2","t3","rgbGamma","start","end","rgbSpline","spline","colors","i","Array","values","floor","genericArray","nb","na","c","Date","setTime","reA","reB","source","am","bm","bs","bi","lastIndex","q","index","slice","push","number","one","zero","join","constant","string","date","ArrayBuffer","isView","DataView","isArray","valueOf","object","module","exports","EPSILON","EDGE_STACK","Uint32Array","Delaunator","coords","Error","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","ceil","sqrt","_hullPrev","_hullNext","_hullTri","_hullHash","fill","_ids","_dists","Float64Array","update","pseudoAngle","dx","dy","p","abs","dist","ax","ay","bx","by","orientIfSure","px","py","rx","ry","qx","qy","orient","inCircle","cx","cy","ex","ey","fx","fy","bp","cp","circumradius","bl","cl","circumcenter","quicksort","ids","dists","left","right","temp","tempDist","j","i$1","j$1","swap","temp$1","tempDist$1","arr","tmp","defaultGetX","defaultGetY","from","points","getX","getY","ref","hullPrev","hullNext","hullTri","hullHash","minX","Infinity","minY","maxX","maxY","i0","i1","i2","minDist","i0x","i0y","i$2","d$1","i1x","i1y","minRadius","i$3","i2x","i2y","i$4","hull","i$5","d0","id","subarray","triangles","halfedges","i$6","x$1","y$1","center","_cx","_cy","i$7","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","yp","i$8","x$2","y$2","e","_legalize","n$1","i$9","e$1","ar","a0","b0","al","p0","pr","pl","p1","hbl","_link","br","obj","_delaunator","__esModule","pointX","pointY","jitter","sin","cos","Delaunay","delaunator","inedges","_hullIndex","_init","_proto","collinear","_","sort","f","bounds","hullIndex","_e","_n","_p","_i","_n2","neighbors","results","e0","find","_step","dc","_iterator","_isArray","_i2","Symbol","iterator","_ref","next","done","dt","that","array","call","flatArray","func","thisArg","args","apply","setter","iteratee","accumulator","baseIndexOf","comparator","baseAssignValue","eq","objValue","undefined","baseEach","collection","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","includes","isCommon","result","valuesLength","outer","computed","valuesIndex","baseForOwn","createBaseEach","predicate","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","isObject","isPrototype","nativeKeysIn","isProto","isArrayLike","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","identity","iteratees","orders","other","basePickBy","hasIn","paths","path","baseSet","castPath","nativeCeil","nativeMax","step","overRest","setToString","assignValue","isIndex","toKey","customizer","nested","newValue","defineProperty","baseSetToString","comparer","resIndex","seen","trimmedEndIndex","reTrimStart","replace","createSet","setToArray","set","seenIndex","props","isSymbol","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","isNew","arrayAggregator","baseAggregator","initializer","baseRest","isIterateeCall","assigner","sources","guard","eachFunc","iterable","keys","findIndexFunc","baseInverter","toIteratee","baseRange","toFinite","Set","noop","flatten","baseGetAllKeys","getSymbolsIn","keysIn","getPrototype","overArg","getPrototypeOf","getSymbols","stubArray","getOwnPropertySymbols","isArguments","spreadableSymbol","isConcatSpreadable","type","transform","otherArgs","shortOut","nativeNow","now","count","lastCalled","stamp","remaining","reWhitespace","test","charAt","copyObject","createAssigner","toNumber","nativeMin","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","flush","objectProto","defaults","propsIndex","propsLength","createFind","toInteger","pairs","pair","createAggregator","groupBy","isString","indexOf","createInverter","nativeObjectToString","invert","baseKeys","getTag","isBuffer","isTypedArray","splice","tag","size","baseIsEqual","funcProto","Function","funcToString","objectCtorString","proto","Ctor","baseIsRegExp","nodeUtil","nodeIsRegExp","isRegExp","arrayLikeKeys","baseKeysIn","root","baseOrderBy","basePick","pick","flatRest","getAllKeysIn","prop","range","createRange","arraySome","baseSome","baseSortedUniq","debounce","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","baseUniq","idCounter","prefix","baseValues","baseDifference","isArrayLikeObject","without","keyList","hasProp","hasElementType","Element","equal","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","$$typeof","error","message","match","console","warn","name","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","prev","createCacheKeyComparator","cache","equals","entry","get","put","getEntries","clear","createSingletonCache","entries","cacheIndex","findIndex","unshift","pop","createLruCache","memoized","matchingEntry","clearCache","getDependencies","funcs","dependencies","every","dep","dependencyTypes","map","createSelectorCreator","memoize","_len","memoizeOptionsFromArgs","_key","createSelector","_len2","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","finalMemoizeOptions","memoizedResultFunc","concat","selector","params","lastResult","recomputations","resetRecomputations","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","getAxis","dependentAxis","findAxisComponents","childComponents","findAxes","children","reduce","memo","child","role","isVertical","top","bottom","orientation","stringTicks","tickValues","getTickArray","tickFormat","axis","stringMap","ticks","categories","ticksFromCategories","tick","ticksFromStringMap","getStringTicks","tickArray","getTicksFromFormat","domain","filter","filterArray","downsampleTicks","tickCount","getDomainFromData","polar","_props$startAngle","startAngle","_props$endAngle","endAngle","minDomain","maxDomain","tickStrings","defaultMin","defaultMax","initialDomain","reverse","getTicks","scale","filterZero","defaultTickCount","scaleTicks","filteredTicks","getTickFormat","invertedStringMap","stringTickArray","defaultTickFormat","fallbackFormat","dataNames","dataTicks","getDefaultTickFormat","scaleTickFormat","getAxisComponent","component","getAxisComponentsWithParent","findComponents","matchesType","getAxisValue","axisValue","scaleAxis","stringMapAxis","getOrigin","getSingleOrigin","domainMin","domainMax","getOriginSign","origin","getDomain","inherentAxis","modifyProps","fallbackProps","theme","independentAxis","axisTheme","getData","data","getDataFromChildren","getDefaultDomainPadding","groupComponent","_groupComponent$0$pro","offset","propsDomain","domainPadding","dataset","dataDomain","childDomain","getDomainFromChildren","getScale","childScale","sharedProps","horizontal","setAnimationState","nextProps","animate","parentState","oldProps","nodesWillExit","setState","oldChildren","nextChildren","isContinuous","check","continuous","_Transitions$getIniti","_nodesWillExit","nodesWillEnter","childrenTransitions","nodesShouldEnter","getAllEvents","componentEvents","_componentEvents","events","getAnimationProps","_this","getTransitions","state","getFilteredState","getTransitionProps","newState","childComponent","parentData","baseParentProps","parentProps","childDomains","stack","stacked","datasets","childName","childData","childProps","datum","_stack","_group","val","group","getColor","calculatedProps","style","colorScale","getWidth","extent","seriesLength","bars","width","getStyle","defaultStyle","getChildStyle","childStyle","childRole","defaultFill","defaultColor","stroke","dataWidth","dataStyle","labelsStyle","labels","getStringsFromCategories","categoryStrings","getStringsFromData","xName","yName","Boolean","getCategoryAndAxisStringsFromChildren","axisComponent","axisStrings","getStringsFromChildren","xStrings","yStrings","dataStrings","getCategories","xPropCategories","yPropCategories","xCategories","yCategories","_defineProperties","target","descriptor","enumerable","configurable","writable","_assertThisInitialized","self","ReferenceError","VictorySharedEvents","_React$Component","instance","Constructor","_classCallCheck","_possibleConstructorReturn","__proto__","getScopedEvents","getEventState","getTimer","bind","baseProps","getBaseProps","protoProps","staticProps","subClass","superClass","setPrototypeOf","_inherits","externalMutations","getExternalMutations","applyExternalMutations","context","timer","callbacks","externalEventMutations","mutation","callback","compiledCallbacks","forEach","container","childBaseProps","getBasePropsFromChildren","parentBaseProps","_baseProps","_this2","eventKey","alterChildren","childNames","newChildren","names","sharedEvents","event","getEvents","evts","_this3","getNewChildren","parents","containerProps","boundGetEvents","parentEvents","containerEvents","getContainer","eventHandlers","_extends","desc","rest","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","vectorEffect","_objectSpread","ownKeys","sym","getOwnPropertyDescriptor","_defineProperty","LineSegment","lineComponent","tabIndex","className","shapeRendering","x1","x2","y1","y2","clipPath","propTypes","defaultProps","orientationSign","getStyles","styleObject","height","axisLabel","grid","tickLabels","getTickProps","layout","position","getTickLabelProps","anchors","text","verticalAnchor","textAnchor","angle","getGridProps","edge","getTransform","calculatedValues","getTickPosition","tickStyle","labelStyle","tickSpacing","padding","sign","getTickTransform","globalTransform","getGridEdge","getGridOffset","xPadding","yPadding","crossAxis","getLayoutProps","modifiedProps","labelPadding","fontSize","offsetX","offsetY","tickSizes","totalPadding","minimumPadding","getOffset","gridOffset","gridEdge","getCalculatedValues","defaultStyles","generalAxisStyle","axisType","specificAxisStyle","curr","getStyleObject","label","getLabelPadding","defaultOrientations","dependent","independent","getOrientation","currentAxis","getCurrentAxis","anchor","getAnchors","otherAxis","_props","standalone","_getLayoutProps","axisProps","getAxisProps","axisLabelProps","hPadding","vPadding","getAxisLabelProps","initialChildProps","gridProps","dimension","tickValue","styles","gridStyle","getEvaluatedStyles","tickLayout","gridLayout","VictoryAxis","getComponentProps","axisLabelComponent","tickComponent","tickLabelComponent","gridComponent","shouldRender","componentProps","_componentProps$style","_componentProps$event","strokeWidth","dataKeys","tickProps","BaseTickComponent","TickComponent","BaseGridComponent","GridComponent","tickLabelProps","gridAndTicks","isVictoryLabel","gridAndTick","childArr","labelsSumSize","sum","paddingToObject","labelSize","letterSpacing","fontFamily","availiableLabelCount","divider","getLabelCoord","animationWhitelist","shouldAnimate","animateComponent","renderGridAndTicks","modifiedGridAndTicks","fixLabelOverlap","renderLine","renderLabel","renderContainer","containerComponent","onExit","duration","onEnter","invertAxis","components","getArcPath","closedPath","halfAngle","x3","y3","largerArcFlag1","largerArcFlag2","arcStart","arc1","arc2","arcEnd","Arc","pathComponent","getPosition","getAxisType","typicalType","invertedType","getRadius","_Helpers$getPadding","getRange","radius","innerRadius","getAxisAngle","axisAngle","tickPadding","angularPadding","labelPlacement","labelAngle","textAngle","labelRadius","_props$innerRadius","initialTicks","PI","filterTicks","_modifiedProps$innerR","VictoryPolarAxis","circularAxisComponent","circularGridComponent","tickComponents","gridComponents","tickLabelComponents","renderAxisLine","renderGroup","groupComponentProps","renderAxis","getChildProps","axisChild","orientations","axisOffset","getHorizontalAxisOffset","getAxisOffset","originSign","positive","negative","getCalculatedProps","styleProps","userSelect","createStringMap","baseScale","getChildComponents","defaultAxes","axisComponents","prependDefaultAxes","orientationOffset","originOffset","originPosition","allStrings","VictoryChart","nodesShouldLoad","nodesDoneLoad","animating","baseStyle","_calculatedProps","parentName","newProps","getChildren","axes","defaultPolarAxes","getContainerProps","Portal","portalUpdate","portalRegister","portalDeregister","element","forceUpdate","el","viewBox","VictoryContainer","containerId","savePortalRef","portal","portalRef","saveContainerRef","containerRef","shouldHandleWheel","onWheel","handleWheel","preventDefault","addEventListener","stop","removeEventListener","elementName","svgProps","title","portalComponent","portalZIndex","responsive","dimensions","divStyle","pointerEvents","touchAction","portalDivStyle","zIndex","svgStyle","portalSvgStyle","overflow","portalProps","getIdForElement","Text","getFontSize","baseSize","getHeight","checkLineHeight","lineHeight","fallbackVal","renderElements","inline","direction","capHeight","getDy","defaultAngle","baseAngle","transformPart","rotatePart","rotate","textChildren","line","currentStyle","lastStyle","currentLineHeight","tspanProps","tspanComponent","textComponent","evaluateProps","split","getContent","getSingleStyle","baseStyles","VictoryLabel","renderInPortal","displayName","active","VictoryPortal","checkedContext","renderInPlace","portalKey","standardProps","renderPortal","blueGrey50","blueGrey300","blueGrey700","grey900","baseLabelStyles","centeredLabelStyles","strokeLinecap","strokeLinejoin","area","strokeDasharray","bar","boxplot","maxLabels","median","medianLabels","minLabels","q1","q1Labels","q3","q3Labels","boxWidth","candlestick","candleColors","chart","errorbar","borderWidth","legend","gutter","titleOrientation","pie","scatter","tooltip","flyoutStyle","cornerRadius","pointerLength","voronoi","flyout","charcoal","material","grayscale","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","polyIn","custom","exponent","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","tpmt","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b1","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","tau","elasticIn","asin","amplitude","period","elasticOut","elasticInOut","isInterpolatable","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","interpolateImmediate","when","interpolateFunction","aval","bval","interpolateObject","keyData","victoryInterpolator","interpolateString","VictoryAnimation","animationInfo","progress","interpolator","queue","ease","toNewName","easing","functionToBeRunEachFrame","traverseQueue","nextState","_queue","equalProps","unsubscribe","loopID","terminating","toUpperCase","delay","subscribe","onEnd","elapsed","shift","VictoryTransition","getTransitionState","bypassAnimation","resumeAnimation","getChildDomains","continous","clipWidth","transitionProps","getDefaultClipWidth","pickProps","pickDomainProps","getClipWidth","combinedProps","whitelist","propsToAnimate","datumHasXandY","_x","_y","defaultComponents","WrappedComponent","_WrappedComponent","addEvents","cacheValues","calculatedState","getStateChanges","newMutation","hasEvents","getSharedEventState","getState","expectedComponents","sharedParentState","parentPropsList","parentControlledProps","baseEvents","defaultAnimationWhitelist","_this4","dataComponent","labelComponent","labelComponents","labelProps","dataProps","_this5","shouldRenderDatum","dataComponents","validDataComponents","_dataKey","isNonEmptyArray","containsDates","some","containsNumbers","containsOnlyStrings","containsStrings","getMaxValue","getMinValue","isArrayOfArrays","removeUndefined","samples","sortKey","sortOrder","y0","singleQuadrantDomainPadding","primitiveProps","IMMUTABLE_ITERABLE","IMMUTABLE_RECORD","IMMUTABLE_LIST","IMMUTABLE_MAP","isImmutable","isIterable","isRecord","isList","isMap","shallowToJS","parseDatum","errorX","errorY","getLength","generateDataArray","sortData","order","cleanData","smallNumber","MAX_SAFE_INTEGER","scaleType","rules","_y0","sanitize","addEventKeys","hasEventKeyAccessor","eventKeyAccessor","stringsFromAxes","getStringsFromAxes","stringsFromCategories","stringsFromData","formatData","expectedKeys","defaultKeys","accessor","preformattedData","cleanedData","dataArr","fallbackValues","processedValues","processedValue","formattedDatum","generateData","xValues","yValues","downsample","maxPoints","startingIndex","dataLength","log2","isDataComponent","getRole","getExtremeFromData","getExtreme","initialValue","containsDate","current0","current1","current","padDomain","getMinFromProps","getMaxFromProps","formatPadding","getDomainPadding","rangeExtent","initialPadding","adjust","adjustedDomain","finalPadding","paddedDomain","finalDomain","getDomainFromMinMax","createDomainFunction","getDomainFromDataFunction","formatDomainFunction","formatDomain","getDomainFromProps","getDomainFromCategories","dom","almostZero","cleanDomain","stringArray","categoryValues","categoryDomain","getSymmetricDomain","_props$startAngle2","_props$endAngle2","getFlatData","verySmallNumber","minVal","maxVal","getSinglePointDomain","processedData","getDomainWithZero","y0Min","maxDomainProp","minDomainProp","ensureZero","isDomainComponent","getEventsByTarget","selectedEvents","targetEvents","targetKeys","useKey","getSelectedEvents","allEvents","_this$componentEvents","ownEvents","getSharedEvents","namespace","childType","getTargetProps","identifier","baseType","base","parseEvent","eventReturn","getMutationObject","baseState","mutationTargetProps","mutationTargetState","mutatedProps","childState","updateState","extendState","filterState","getReturnByChild","mutationKeys","getKeys","allChildNames","onEvent","evt","eventName","getCallback","callbackArray","evtObj","compileCallbacks","parseEventReturn","getPartialEvents","getExternalMutationsWithChildren","mutations","v","keyState","keyProps","getExternalMutation","targets","filterMutations","scopedMutations","targetMutations","keyMutations","currentMutation","getComponentEvents","componentName","_memo","defaultEvents","omit","originalObject","newObject","getPoint","exists","_x1","_x0","_voronoiX","_y1","_voronoiY","defaultX","defaultY","point","x0","getPadding","paddingVal","paddingObj","evaluateProp","degreesToRadians","degrees","_getPadding","isHorizontal","traverseChildren","childArray","scalePoint","defaultParent","defaultLabels","defaultData","evaluateStyle","radiansToDegrees","radians","getPolarOrigin","_getPadding2","offsetWidth","offsetHeight","getPolarRange","vertical","getCartesianRange","createAccessor","themeProps","defaultObject","reduceChildren","initialMemo","combine","item","nestedChildren","nestedChildProps","_childNames","nestedResults","defaultPadding","_Helpers$scalePoint","polarPadding","getDegrees","getPolarPadding","getLabelPlacement","defaultLabelPlacement","getText","getPolarTextAnchor","getPolarVerticalAnchor","getPolarOrientation","getPolarAngle","getProps","getTextAnchor","getVerticalAnchor","getAngle","_getPosition","_getOffset","makeChainable","validator","_chainable","isRequired","propName","chainable","nullConstructor","undefinedConstructor","getConstructor","getConstructorName","deprecated","propType","explanation","allOfType","validators","nonNegative","integer","greaterThanZero","scl","supportedScaleStrings","homogeneousArray","comparisonConstructor","typeMismatchedValue","constructorName","otherConstructorName","matchDataLength","regExp","compare","lo","hi","mid","ascendingBisect","bisector","bisectRight","e10","e5","e2","tickIncrement","isFinite","power","log","LN10","step0","step1","valueof","value0","Map","each","has","remove","property","empty","add","implicit","ordinal","unknown","band","bandwidth","ordinalRange","paddingInner","paddingOuter","align","rescale","rangeRound","pointish","unit","deinterpolateLinear","bimap","deinterpolate","reinterpolate","d1","r0","r1","polymap","interpolate","clamp","piecewise","output","input","deinterpolateClamp","reinterpolateClamp","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","symbol","comma","precision","formatDecimalParts","toExponential","coefficient","toFixed","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","locale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","precisionPrefix","precisionRound","precisionFixed","linearish","nice","interval","pow10","powp","E","exp","logp","log10","reflect","logs","pows","u","z","raise","thresholds","invertExtent","quantiles","quantize","threshold","t0","newInterval","floori","offseti","field","previous","year","setMonth","setHours","setFullYear","getFullYear","month","setDate","getMonth","durationSecond","durationMinute","durationHour","durationDay","durationWeek","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","day","hour","getMilliseconds","getSeconds","getMinutes","getHours","minute","second","getUTCSeconds","millisecond","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","UTC","newDate","timeFormat","utcFormat","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","week","parse","X","utcParse","formatLocale","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickIntervals","tickInterval","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","deg2rad","rad2deg","A","B","C","D","ED","EB","BC_DA","cubehelixConvert","Cubehelix","atan2","cosh","sinh","cubehelix","cubehelixGamma","cubehelixLong","warm","cool","rainbow","ts","ramp","magma","inferno","plasma","sequential","validScale","isScaleDefined","getScaleTypeFromData","axisData","getScaleFromName","getScaleFromProps","getType","method","getBaseScale","defaultScale","getScaleFromDomain","getDefaultScale","getScaleType","getScaleTypeFromProps","toTransformString","more","currentObj","transforms","getColorScale","scales","qualitative","heatmap","fontDictionary","Baskerville","Georgia","Palatino","Arial","Tahoma","Verdana","cursive","fantasy","monospace","serif","absoluteMeasurementUnitsToPixels","mm","sm","pt","pc","in","relativeMeasurementUnitsCoef","em","coefficients","_getFontCharacterConstant","firstFont","_splitToLines","_getSizeWithRotate","axisSize","dependentSize","angleInRadian","_degreeToRadian","convertLengthToPixels","attribute","_prepareParams","inputStyle","lineStyle","characterConstant","approximateTextSize","total","emptySpace","_approximateTextHeightInternal","widths","len","_prepareParams2","_approximateTextWidthInternal","widthWithRotate","heightWithRotate","taskHead","taskTail","timeout","clockLast","clockNow","clockSkew","clock","performance","setFrame","window","requestAnimationFrame","clearNow","Timer","_call","_time","_next","restart","wake","timerFlush","sleep","nap","poke","clearInterval","setInterval","subscribers","loop","startTime","getDatumKey","idx","getKeyedData","keyedData","getKeyedDataDifference","hasDifference","difference","_difference","getChildData","getInitialTransitionState","getTransition","oldChild","newChild","oldData","nextData","oldDataKeyed","nextDataKeyed","entering","exiting","getNodeTransitions","getTransitionsFromChildren","old","getTransitionPropsFactory","transitionDurations","enter","exit","load","onLoad","move","cb","after","getChildOnLoad","before","getChildBeforeLoad","nodes","exitingNodes","getChildPropsOnExit","enteringNodes","getChildPropsOnEnter","getChildPropsBeforeEnter","getChildTransitionDuration","defaultTransitions","defaultPolarTransitions","animationDuration","childTransitions","animation","_animation","_animation2","getInitialChildProps","interpolation","all","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","curveRadialLinear","curveRadial","Radial","curve","_curve","radial","epsilon","tauEpsilon","Path","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a1","ccw","cw","da","rect","defined","buffer","defined0","lineRadial","arcInnerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","intersect","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","padRadius","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","oc","kc","lc","centroid","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","descending","arcs","pa","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","link","argv","curveHorizontal","curveVertical","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","draw","tan30","tan30_2","kr","kx","ky","sqrt3","symbols","circle","cross","diamond","square","star","triangle","wye","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","_x2","_x3","_x4","_y2","_y3","_y4","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","alpha","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","series","stackValue","oz","kz","sz","sij","ki","si","none","yn","s2","sij0","s3","sk","peaks","peak","vi","vj","sums","ascending","appearance","tops","bottoms","_t0","getXAccessor","getYAccessor","capitalize","getLineFunction","defaultOpenCurve","openCurve","interpolationFunction","interpolationName","getAngleAccessor","Curve","lineFunction","defaultTransform","adjacent","attr","ClipPath","clipId","VictoryClipContainer","_props$clipWidth","_props$clipHeight","clipHeight","_props$translateX","translateX","_props$translateY","translateY","clipPadding","clipComponent","renderClipComponent","groupProps","_props$clipWidth2","_props$clipHeight2","_props$translateX2","_props$translateY2","circleComponent","rectComponent","clipPathComponent","circleProps","rectProps","clipValues","translateValues","getClipValue","getTranslateValue","clipProps","renderClippedGroup","VictoryLine","renderContinuousData","getFlyoutPath","pointerWidth","centerX","centerY","pointerEdge","oppositeEdge","bottomEdge","topEdge","getHorizontalPath","rightEdge","leftEdge","getVerticalPath","Flyout","VictoryTooltip","placement","getVerticalOrientations","defaultLabelStyles","baseLabelStyle","defaultFlyoutStyles","baseFlyoutStyle","centerOffset","_getStyles","getDefaultOrientation","_getDimensions","getDimensions","flyoutHeight","flyoutWidth","evaluatedProps","defaultDx","defaultDy","flyoutDimensions","flyoutCenter","getFlyoutCenter","getDefaultAngle","flyoutExtent","adjustments","constrainToVisibleArea","xSign","ySign","centerWithOffset","constrainTooltip","paddings","calculatedHeight","minHeight","calculatedWidth","minWidth","getLabelX","edges","gaps","side","flyoutComponent","pointerOrientation","getPointerOrientation","getEvaluatedProps","getFlyoutProps","getLabelProps","renderTooltip","activateData","onMouseOver","onTouchStart","onMouseOut","onTouchEnd","transformTarget","matrix","getParentSVG","nativeEvent","getParent","nodeName","parentNode","getDataCoordinates","baseX","baseY","getSVGEventCoordinates","svg","locationX","locationY","changedTouches","getScreenCTM","inverse","getTransformationMatrix","clientX","clientY","getDomainCoordinates","getBounds","point1","point2","makeBound","VoronoiHelpers","withinBounds","voronoiPadding","distanceSquared","getDatasets","addMeta","_Helpers$getPoint","voronoiX","voronoiY","voronoiDimension","blacklist","voronoiBlacklist","blacklistStr","isRegExpMatch","findPoints","withinRadius","mousePosition","getVoronoiPoints","scaledData","getActiveMutations","activateLabels","defaultTarget","getInactiveMutations","getParentMutation","activePoints","parentSVG","vIndex","onActivated","onDeactivated","onMouseLeave","targetProps","_getParentMutation","inactiveMutations","onMouseMove","_getParentMutation2","_getVoronoiPoints","_getVoronoiPoints$poi","parentMutations","activeMutations","_inactiveMutations","_class","_temp","_base","VictoryVoronoiContainer","mouseFollowTooltips","getDimension","basePosition","themeStyles","componentStyleArray","textArray","componentStyle","styleArray","multiPoint","_points$","getDefaultLabelProps","labelPosition","getLabelPosition","getTooltip","disable","onTouchCancel","onTouchMove"],"mappings":"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","debug_id":"894e5aa2-2c81-586d-b893-882e935a280d"}