{"version":3,"file":"7833.a1838899.js","mappings":"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","sources":["webpack://@finviz/website/../node_modules/decimal.js-light/decimal.js","webpack://@finviz/website/../node_modules/eventemitter3/index.js","webpack://@finviz/website/../node_modules/lodash/_DataView.js","webpack://@finviz/website/../node_modules/lodash/_Hash.js","webpack://@finviz/website/../node_modules/lodash/_ListCache.js","webpack://@finviz/website/../node_modules/lodash/_Map.js","webpack://@finviz/website/../node_modules/lodash/_MapCache.js","webpack://@finviz/website/../node_modules/lodash/_Promise.js","webpack://@finviz/website/../node_modules/lodash/_Set.js","webpack://@finviz/website/../node_modules/lodash/_SetCache.js","webpack://@finviz/website/../node_modules/lodash/_Stack.js","webpack://@finviz/website/../node_modules/lodash/_Symbol.js","webpack://@finviz/website/../node_modules/lodash/_Uint8Array.js","webpack://@finviz/website/../node_modules/lodash/_WeakMap.js","webpack://@finviz/website/../node_modules/lodash/_apply.js","webpack://@finviz/website/../node_modules/lodash/_arrayEvery.js","webpack://@finviz/website/../node_modules/lodash/_arrayFilter.js","webpack://@finviz/website/../node_modules/lodash/_arrayIncludes.js","webpack://@finviz/website/../node_modules/lodash/_arrayIncludesWith.js","webpack://@finviz/website/../node_modules/lodash/_arrayLikeKeys.js","webpack://@finviz/website/../node_modules/lodash/_arrayMap.js","webpack://@finviz/website/../node_modules/lodash/_arrayPush.js","webpack://@finviz/website/../node_modules/lodash/_arraySome.js","webpack://@finviz/website/../node_modules/lodash/_asciiToArray.js","webpack://@finviz/website/../node_modules/lodash/_assocIndexOf.js","webpack://@finviz/website/../node_modules/lodash/_baseAssignValue.js","webpack://@finviz/website/../node_modules/lodash/_baseEach.js","webpack://@finviz/website/../node_modules/lodash/_baseEvery.js","webpack://@finviz/website/../node_modules/lodash/_baseExtremum.js","webpack://@finviz/website/../node_modules/lodash/_baseFindIndex.js","webpack://@finviz/website/../node_modules/lodash/_baseFlatten.js","webpack://@finviz/website/../node_modules/lodash/_baseFor.js","webpack://@finviz/website/../node_modules/lodash/_baseForOwn.js","webpack://@finviz/website/../node_modules/lodash/_baseGet.js","webpack://@finviz/website/../node_modules/lodash/_baseGetAllKeys.js","webpack://@finviz/website/../node_modules/lodash/_baseGetTag.js","webpack://@finviz/website/../node_modules/lodash/_baseGt.js","webpack://@finviz/website/../node_modules/lodash/_baseHasIn.js","webpack://@finviz/website/../node_modules/lodash/_baseIndexOf.js","webpack://@finviz/website/../node_modules/lodash/_baseIsArguments.js","webpack://@finviz/website/../node_modules/lodash/_baseIsEqual.js","webpack://@finviz/website/../node_modules/lodash/_baseIsEqualDeep.js","webpack://@finviz/website/../node_modules/lodash/_baseIsMatch.js","webpack://@finviz/website/../node_modules/lodash/_baseIsNaN.js","webpack://@finviz/website/../node_modules/lodash/_baseIsNative.js","webpack://@finviz/website/../node_modules/lodash/_baseIsTypedArray.js","webpack://@finviz/website/../node_modules/lodash/_baseIteratee.js","webpack://@finviz/website/../node_modules/lodash/_baseKeys.js","webpack://@finviz/website/../node_modules/lodash/_baseLt.js","webpack://@finviz/website/../node_modules/lodash/_baseMap.js","webpack://@finviz/website/../node_modules/lodash/_baseMatches.js","webpack://@finviz/website/../node_modules/lodash/_baseMatchesProperty.js","webpack://@finviz/website/../node_modules/lodash/_baseOrderBy.js","webpack://@finviz/website/../node_modules/lodash/_baseProperty.js","webpack://@finviz/website/../node_modules/lodash/_basePropertyDeep.js","webpack://@finviz/website/../node_modules/lodash/_baseRange.js","webpack://@finviz/website/../node_modules/lodash/_baseRest.js","webpack://@finviz/website/../node_modules/lodash/_baseSetToString.js","webpack://@finviz/website/../node_modules/lodash/_baseSlice.js","webpack://@finviz/website/../node_modules/lodash/_baseSome.js","webpack://@finviz/website/../node_modules/lodash/_baseSortBy.js","webpack://@finviz/website/../node_modules/lodash/_baseTimes.js","webpack://@finviz/website/../node_modules/lodash/_baseToString.js","webpack://@finviz/website/../node_modules/lodash/_baseTrim.js","webpack://@finviz/website/../node_modules/lodash/_baseUnary.js","webpack://@finviz/website/../node_modules/lodash/_baseUniq.js","webpack://@finviz/website/../node_modules/lodash/_cacheHas.js","webpack://@finviz/website/../node_modules/lodash/_castPath.js","webpack://@finviz/website/../node_modules/lodash/_castSlice.js","webpack://@finviz/website/../node_modules/lodash/_compareAscending.js","webpack://@finviz/website/../node_modules/lodash/_compareMultiple.js","webpack://@finviz/website/../node_modules/lodash/_coreJsData.js","webpack://@finviz/website/../node_modules/lodash/_createBaseEach.js","webpack://@finviz/website/../node_modules/lodash/_createBaseFor.js","webpack://@finviz/website/../node_modules/lodash/_createCaseFirst.js","webpack://@finviz/website/../node_modules/lodash/_createFind.js","webpack://@finviz/website/../node_modules/lodash/_createRange.js","webpack://@finviz/website/../node_modules/lodash/_createSet.js","webpack://@finviz/website/../node_modules/lodash/_defineProperty.js","webpack://@finviz/website/../node_modules/lodash/_equalArrays.js","webpack://@finviz/website/../node_modules/lodash/_equalByTag.js","webpack://@finviz/website/../node_modules/lodash/_equalObjects.js","webpack://@finviz/website/../node_modules/lodash/_freeGlobal.js","webpack://@finviz/website/../node_modules/lodash/_getAllKeys.js","webpack://@finviz/website/../node_modules/lodash/_getMapData.js","webpack://@finviz/website/../node_modules/lodash/_getMatchData.js","webpack://@finviz/website/../node_modules/lodash/_getNative.js","webpack://@finviz/website/../node_modules/lodash/_getPrototype.js","webpack://@finviz/website/../node_modules/lodash/_getRawTag.js","webpack://@finviz/website/../node_modules/lodash/_getSymbols.js","webpack://@finviz/website/../node_modules/lodash/_getTag.js","webpack://@finviz/website/../node_modules/lodash/_getValue.js","webpack://@finviz/website/../node_modules/lodash/_hasPath.js","webpack://@finviz/website/../node_modules/lodash/_hasUnicode.js","webpack://@finviz/website/../node_modules/lodash/_hashClear.js","webpack://@finviz/website/../node_modules/lodash/_hashDelete.js","webpack://@finviz/website/../node_modules/lodash/_hashGet.js","webpack://@finviz/website/../node_modules/lodash/_hashHas.js","webpack://@finviz/website/../node_modules/lodash/_hashSet.js","webpack://@finviz/website/../node_modules/lodash/_isFlattenable.js","webpack://@finviz/website/../node_modules/lodash/_isIndex.js","webpack://@finviz/website/../node_modules/lodash/_isIterateeCall.js","webpack://@finviz/website/../node_modules/lodash/_isKey.js","webpack://@finviz/website/../node_modules/lodash/_isKeyable.js","webpack://@finviz/website/../node_modules/lodash/_isMasked.js","webpack://@finviz/website/../node_modules/lodash/_isPrototype.js","webpack://@finviz/website/../node_modules/lodash/_isStrictComparable.js","webpack://@finviz/website/../node_modules/lodash/_listCacheClear.js","webpack://@finviz/website/../node_modules/lodash/_listCacheDelete.js","webpack://@finviz/website/../node_modules/lodash/_listCacheGet.js","webpack://@finviz/website/../node_modules/lodash/_listCacheHas.js","webpack://@finviz/website/../node_modules/lodash/_listCacheSet.js","webpack://@finviz/website/../node_modules/lodash/_mapCacheClear.js","webpack://@finviz/website/../node_modules/lodash/_mapCacheDelete.js","webpack://@finviz/website/../node_modules/lodash/_mapCacheGet.js","webpack://@finviz/website/../node_modules/lodash/_mapCacheHas.js","webpack://@finviz/website/../node_modules/lodash/_mapCacheSet.js","webpack://@finviz/website/../node_modules/lodash/_mapToArray.js","webpack://@finviz/website/../node_modules/lodash/_matchesStrictComparable.js","webpack://@finviz/website/../node_modules/lodash/_memoizeCapped.js","webpack://@finviz/website/../node_modules/lodash/_nativeCreate.js","webpack://@finviz/website/../node_modules/lodash/_nativeKeys.js","webpack://@finviz/website/../node_modules/lodash/_nodeUtil.js","webpack://@finviz/website/../node_modules/lodash/_objectToString.js","webpack://@finviz/website/../node_modules/lodash/_overArg.js","webpack://@finviz/website/../node_modules/lodash/_overRest.js","webpack://@finviz/website/../node_modules/lodash/_root.js","webpack://@finviz/website/../node_modules/lodash/_setCacheAdd.js","webpack://@finviz/website/../node_modules/lodash/_setCacheHas.js","webpack://@finviz/website/../node_modules/lodash/_setToArray.js","webpack://@finviz/website/../node_modules/lodash/_setToString.js","webpack://@finviz/website/../node_modules/lodash/_shortOut.js","webpack://@finviz/website/../node_modules/lodash/_stackClear.js","webpack://@finviz/website/../node_modules/lodash/_stackDelete.js","webpack://@finviz/website/../node_modules/lodash/_stackGet.js","webpack://@finviz/website/../node_modules/lodash/_stackHas.js","webpack://@finviz/website/../node_modules/lodash/_stackSet.js","webpack://@finviz/website/../node_modules/lodash/_strictIndexOf.js","webpack://@finviz/website/../node_modules/lodash/_stringToArray.js","webpack://@finviz/website/../node_modules/lodash/_stringToPath.js","webpack://@finviz/website/../node_modules/lodash/_toKey.js","webpack://@finviz/website/../node_modules/lodash/_toSource.js","webpack://@finviz/website/../node_modules/lodash/_trimmedEndIndex.js","webpack://@finviz/website/../node_modules/lodash/_unicodeToArray.js","webpack://@finviz/website/../node_modules/lodash/constant.js","webpack://@finviz/website/../node_modules/lodash/debounce.js","webpack://@finviz/website/../node_modules/lodash/eq.js","webpack://@finviz/website/../node_modules/lodash/every.js","webpack://@finviz/website/../node_modules/lodash/find.js","webpack://@finviz/website/../node_modules/lodash/findIndex.js","webpack://@finviz/website/../node_modules/lodash/flatMap.js","webpack://@finviz/website/../node_modules/lodash/get.js","webpack://@finviz/website/../node_modules/lodash/hasIn.js","webpack://@finviz/website/../node_modules/lodash/identity.js","webpack://@finviz/website/../node_modules/lodash/isArguments.js","webpack://@finviz/website/../node_modules/lodash/isArray.js","webpack://@finviz/website/../node_modules/lodash/isArrayLike.js","webpack://@finviz/website/../node_modules/lodash/isBoolean.js","webpack://@finviz/website/../node_modules/lodash/isBuffer.js","webpack://@finviz/website/../node_modules/lodash/isEqual.js","webpack://@finviz/website/../node_modules/lodash/isFunction.js","webpack://@finviz/website/../node_modules/lodash/isLength.js","webpack://@finviz/website/../node_modules/lodash/isNaN.js","webpack://@finviz/website/../node_modules/lodash/isNil.js","webpack://@finviz/website/../node_modules/lodash/isNumber.js","webpack://@finviz/website/../node_modules/lodash/isObject.js","webpack://@finviz/website/../node_modules/lodash/isObjectLike.js","webpack://@finviz/website/../node_modules/lodash/isPlainObject.js","webpack://@finviz/website/../node_modules/lodash/isString.js","webpack://@finviz/website/../node_modules/lodash/isSymbol.js","webpack://@finviz/website/../node_modules/lodash/isTypedArray.js","webpack://@finviz/website/../node_modules/lodash/keys.js","webpack://@finviz/website/../node_modules/lodash/last.js","webpack://@finviz/website/../node_modules/lodash/map.js","webpack://@finviz/website/../node_modules/lodash/mapValues.js","webpack://@finviz/website/../node_modules/lodash/max.js","webpack://@finviz/website/../node_modules/lodash/memoize.js","webpack://@finviz/website/../node_modules/lodash/min.js","webpack://@finviz/website/../node_modules/lodash/noop.js","webpack://@finviz/website/../node_modules/lodash/now.js","webpack://@finviz/website/../node_modules/lodash/property.js","webpack://@finviz/website/../node_modules/lodash/range.js","webpack://@finviz/website/../node_modules/lodash/some.js","webpack://@finviz/website/../node_modules/lodash/sortBy.js","webpack://@finviz/website/../node_modules/lodash/stubArray.js","webpack://@finviz/website/../node_modules/lodash/stubFalse.js","webpack://@finviz/website/../node_modules/lodash/throttle.js","webpack://@finviz/website/../node_modules/lodash/toFinite.js","webpack://@finviz/website/../node_modules/lodash/toInteger.js","webpack://@finviz/website/../node_modules/lodash/toNumber.js","webpack://@finviz/website/../node_modules/lodash/toString.js","webpack://@finviz/website/../node_modules/lodash/uniqBy.js","webpack://@finviz/website/../node_modules/lodash/upperFirst.js","webpack://@finviz/website/../node_modules/prop-types/factoryWithThrowingShims.js","webpack://@finviz/website/../node_modules/prop-types/index.js","webpack://@finviz/website/../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@finviz/website/../node_modules/react-is/cjs/react-is.production.min.js","webpack://@finviz/website/../node_modules/react-is/index.js","webpack://@finviz/website/../node_modules/fast-equals/dist/esm/index.mjs","webpack://@finviz/website/../node_modules/react-smooth/es6/setRafTimeout.js","webpack://@finviz/website/../node_modules/react-smooth/es6/AnimateManager.js","webpack://@finviz/website/../node_modules/react-smooth/es6/util.js","webpack://@finviz/website/../node_modules/react-smooth/es6/easing.js","webpack://@finviz/website/../node_modules/react-smooth/es6/configUpdate.js","webpack://@finviz/website/../node_modules/react-smooth/es6/Animate.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/TransitionGroup.js","webpack://@finviz/website/../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/config.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/utils/reflow.js","webpack://@finviz/website/../node_modules/react-transition-group/esm/Transition.js","webpack://@finviz/website/../node_modules/react-smooth/es6/AnimateGroupChild.js","webpack://@finviz/website/../node_modules/react-smooth/es6/AnimateGroup.js","webpack://@finviz/website/../node_modules/react-smooth/es6/index.js","webpack://@finviz/website/../node_modules/recharts/es6/util/BarUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Bar.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/CartesianAxis.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ErrorBar.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/XAxis.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/YAxis.js","webpack://@finviz/website/../node_modules/recharts/es6/util/getEveryNthWithCondition.js","webpack://@finviz/website/../node_modules/recharts/es6/util/TickUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/getTicks.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/getEquidistantTicks.js","webpack://@finviz/website/../node_modules/recharts/es6/util/CssPrefixUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Brush.js","webpack://@finviz/website/../node_modules/recharts/es6/util/IfOverflowMatches.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ReferenceDot.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ReferenceLine.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ReferenceArea.js","webpack://@finviz/website/../node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","webpack://@finviz/website/../node_modules/recharts/es6/util/Events.js","webpack://@finviz/website/../node_modules/recharts/es6/chart/AccessibilityManager.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Cross.js","webpack://@finviz/website/../node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js","webpack://@finviz/website/../node_modules/recharts/es6/util/cursor/getCursorPoints.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Cursor.js","webpack://@finviz/website/../node_modules/recharts/es6/util/cursor/getCursorRectangle.js","webpack://@finviz/website/../node_modules/recharts/es6/chart/generateCategoricalChart.js","webpack://@finviz/website/../node_modules/recharts/es6/util/isDomainSpecifiedByUser.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Cell.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Label.js","webpack://@finviz/website/../node_modules/recharts/es6/component/LabelList.js","webpack://@finviz/website/../node_modules/recharts/es6/component/DefaultLegendContent.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Legend.js","webpack://@finviz/website/../node_modules/recharts/es6/component/ResponsiveContainer.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ReduceCSSCalc.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Text.js","webpack://@finviz/website/../node_modules/recharts/es6/component/DefaultTooltipContent.js","webpack://@finviz/website/../node_modules/recharts/es6/util/tooltip/translate.js","webpack://@finviz/website/../node_modules/recharts/es6/component/TooltipBoundingBox.js","webpack://@finviz/website/../node_modules/recharts/es6/component/Tooltip.js","webpack://@finviz/website/../node_modules/recharts/es6/container/Layer.js","webpack://@finviz/website/../node_modules/recharts/es6/container/Surface.js","webpack://@finviz/website/../node_modules/recharts/es6/util/calculateViewBox.js","webpack://@finviz/website/../node_modules/recharts/es6/context/chartLayoutContext.js","webpack://@finviz/website/../node_modules/d3-shape/src/noop.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/basisClosed.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/basisOpen.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/bump.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/linearClosed.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/monotone.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/natural.js","webpack://@finviz/website/../node_modules/d3-shape/src/curve/step.js","webpack://@finviz/website/../node_modules/d3-shape/src/area.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Curve.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Dot.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Rectangle.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Sector.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/circle.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/cross.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/diamond.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/square.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/star.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/triangle.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/wye.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/asterisk.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol/triangle2.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Symbols.js","webpack://@finviz/website/../node_modules/d3-shape/src/symbol.js","webpack://@finviz/website/../node_modules/recharts/es6/shape/Trapezoid.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ActiveShapeUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/CartesianUtils.js","webpack://@finviz/website/../node_modules/d3-shape/src/offset/none.js","webpack://@finviz/website/../node_modules/d3-shape/src/order/none.js","webpack://@finviz/website/../node_modules/d3-shape/src/stack.js","webpack://@finviz/website/../node_modules/recharts-scale/es6/util/utils.js","webpack://@finviz/website/../node_modules/recharts-scale/es6/util/arithmetic.js","webpack://@finviz/website/../node_modules/recharts-scale/es6/getNiceTickValues.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ChartUtils.js","webpack://@finviz/website/../node_modules/d3-shape/src/offset/expand.js","webpack://@finviz/website/../node_modules/d3-shape/src/offset/silhouette.js","webpack://@finviz/website/../node_modules/d3-shape/src/offset/wiggle.js","webpack://@finviz/website/../node_modules/recharts/es6/util/DOMUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/DataUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/Global.js","webpack://@finviz/website/../node_modules/recharts/es6/util/LogUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/PolarUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ReactUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ShallowEqual.js","webpack://@finviz/website/../node_modules/recharts/es6/util/getLegendProps.js","webpack://@finviz/website/../node_modules/recharts/es6/util/payload/getUniqPayload.js","webpack://@finviz/website/../node_modules/recharts/es6/util/types.js","webpack://@finviz/website/../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@finviz/website/../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@finviz/website/../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@finviz/website/../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@finviz/website/../node_modules/clsx/dist/clsx.mjs","webpack://@finviz/website/../node_modules/tiny-invariant/dist/esm/tiny-invariant.js"],"sourcesContent":["/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n  'use strict';\r\n\r\n\r\n  /*\r\n   *  decimal.js-light v2.5.1\r\n   *  An arbitrary-precision Decimal type for JavaScript.\r\n   *  https://github.com/MikeMcl/decimal.js-light\r\n   *  Copyright (c) 2020 Michael Mclaughlin <M8ch88l@gmail.com>\r\n   *  MIT Expat Licence\r\n   */\r\n\r\n\r\n  // -----------------------------------  EDITABLE DEFAULTS  ------------------------------------ //\r\n\r\n\r\n    // The limit on the value of `precision`, and on the value of the first argument to\r\n    // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n  var MAX_DIGITS = 1e9,                        // 0 to 1e9\r\n\r\n\r\n    // The initial configuration properties of the Decimal constructor.\r\n    Decimal = {\r\n\r\n      // These values must be integers within the stated ranges (inclusive).\r\n      // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n      // The maximum number of significant digits of the result of a calculation or base conversion.\r\n      // E.g. `Decimal.config({ precision: 20 });`\r\n      precision: 20,                         // 1 to MAX_DIGITS\r\n\r\n      // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n      // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n      //\r\n      // ROUND_UP         0 Away from zero.\r\n      // ROUND_DOWN       1 Towards zero.\r\n      // ROUND_CEIL       2 Towards +Infinity.\r\n      // ROUND_FLOOR      3 Towards -Infinity.\r\n      // ROUND_HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n      // ROUND_HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n      // ROUND_HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n      // ROUND_HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n      // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n      //\r\n      // E.g.\r\n      // `Decimal.rounding = 4;`\r\n      // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n      rounding: 4,                           // 0 to 8\r\n\r\n      // The exponent value at and beneath which `toString` returns exponential notation.\r\n      // JavaScript numbers: -7\r\n      toExpNeg: -7,                          // 0 to -MAX_E\r\n\r\n      // The exponent value at and above which `toString` returns exponential notation.\r\n      // JavaScript numbers: 21\r\n      toExpPos:  21,                         // 0 to MAX_E\r\n\r\n      // The natural logarithm of 10.\r\n      // 115 digits\r\n      LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n    },\r\n\r\n\r\n  // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n    external = true,\r\n\r\n    decimalError = '[DecimalError] ',\r\n    invalidArgument = decimalError + 'Invalid argument: ',\r\n    exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n    mathfloor = Math.floor,\r\n    mathpow = Math.pow,\r\n\r\n    isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n    ONE,\r\n    BASE = 1e7,\r\n    LOG_BASE = 7,\r\n    MAX_SAFE_INTEGER = 9007199254740991,\r\n    MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE),    // 1286742750677284\r\n\r\n    // Decimal.prototype object\r\n    P = {};\r\n\r\n\r\n  // Decimal prototype methods\r\n\r\n\r\n  /*\r\n   *  absoluteValue                       abs\r\n   *  comparedTo                          cmp\r\n   *  decimalPlaces                       dp\r\n   *  dividedBy                           div\r\n   *  dividedToIntegerBy                  idiv\r\n   *  equals                              eq\r\n   *  exponent\r\n   *  greaterThan                         gt\r\n   *  greaterThanOrEqualTo                gte\r\n   *  isInteger                           isint\r\n   *  isNegative                          isneg\r\n   *  isPositive                          ispos\r\n   *  isZero\r\n   *  lessThan                            lt\r\n   *  lessThanOrEqualTo                   lte\r\n   *  logarithm                           log\r\n   *  minus                               sub\r\n   *  modulo                              mod\r\n   *  naturalExponential                  exp\r\n   *  naturalLogarithm                    ln\r\n   *  negated                             neg\r\n   *  plus                                add\r\n   *  precision                           sd\r\n   *  squareRoot                          sqrt\r\n   *  times                               mul\r\n   *  toDecimalPlaces                     todp\r\n   *  toExponential\r\n   *  toFixed\r\n   *  toInteger                           toint\r\n   *  toNumber\r\n   *  toPower                             pow\r\n   *  toPrecision\r\n   *  toSignificantDigits                 tosd\r\n   *  toString\r\n   *  valueOf                             val\r\n   */\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the absolute value of this Decimal.\r\n   *\r\n   */\r\n  P.absoluteValue = P.abs = function () {\r\n    var x = new this.constructor(this);\r\n    if (x.s) x.s = 1;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return\r\n   *   1    if the value of this Decimal is greater than the value of `y`,\r\n   *  -1    if the value of this Decimal is less than the value of `y`,\r\n   *   0    if they have the same value\r\n   *\r\n   */\r\n  P.comparedTo = P.cmp = function (y) {\r\n    var i, j, xdL, ydL,\r\n      x = this;\r\n\r\n    y = new x.constructor(y);\r\n\r\n    // Signs differ?\r\n    if (x.s !== y.s) return x.s || -y.s;\r\n\r\n    // Compare exponents.\r\n    if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n    xdL = x.d.length;\r\n    ydL = y.d.length;\r\n\r\n    // Compare digit by digit.\r\n    for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n      if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n    }\r\n\r\n    // Compare lengths.\r\n    return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of decimal places of the value of this Decimal.\r\n   *\r\n   */\r\n  P.decimalPlaces = P.dp = function () {\r\n    var x = this,\r\n      w = x.d.length - 1,\r\n      dp = (w - x.e) * LOG_BASE;\r\n\r\n    // Subtract the number of trailing zeros of the last word.\r\n    w = x.d[w];\r\n    if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n    return dp < 0 ? 0 : dp;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.dividedBy = P.div = function (y) {\r\n    return divide(this, new this.constructor(y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n   * by the value of `y`, truncated to `precision` significant digits.\r\n   *\r\n   */\r\n  P.dividedToIntegerBy = P.idiv = function (y) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n    return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.equals = P.eq = function (y) {\r\n    return !this.cmp(y);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n   *\r\n   */\r\n  P.exponent = function () {\r\n    return getBase10Exponent(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n   * false.\r\n   *\r\n   */\r\n  P.greaterThan = P.gt = function (y) {\r\n    return this.cmp(y) > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n   * otherwise return false.\r\n   *\r\n   */\r\n  P.greaterThanOrEqualTo = P.gte = function (y) {\r\n    return this.cmp(y) >= 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is an integer, otherwise return false.\r\n   *\r\n   */\r\n  P.isInteger = P.isint = function () {\r\n    return this.e > this.d.length - 2;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is negative, otherwise return false.\r\n   *\r\n   */\r\n  P.isNegative = P.isneg = function () {\r\n    return this.s < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is positive, otherwise return false.\r\n   *\r\n   */\r\n  P.isPositive = P.ispos = function () {\r\n    return this.s > 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is 0, otherwise return false.\r\n   *\r\n   */\r\n  P.isZero = function () {\r\n    return this.s === 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThan = P.lt = function (y) {\r\n    return this.cmp(y) < 0;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n   *\r\n   */\r\n  P.lessThanOrEqualTo = P.lte = function (y) {\r\n    return this.cmp(y) < 1;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   * If no base is specified, return log[10](x).\r\n   *\r\n   * log[base](x) = ln(x) / ln(base)\r\n   *\r\n   * The maximum error of the result is 1 ulp (unit in the last place).\r\n   *\r\n   * [base] {number|string|Decimal} The base of the logarithm.\r\n   *\r\n   */\r\n  P.logarithm = P.log = function (base) {\r\n    var r,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision,\r\n      wpr = pr + 5;\r\n\r\n    // Default base is 10.\r\n    if (base === void 0) {\r\n      base = new Ctor(10);\r\n    } else {\r\n      base = new Ctor(base);\r\n\r\n      // log[-b](x) = NaN\r\n      // log[0](x)  = NaN\r\n      // log[1](x)  = NaN\r\n      if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n    }\r\n\r\n    // log[b](-x) = NaN\r\n    // log[b](0) = -Infinity\r\n    if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n    // log[b](1) = 0\r\n    if (x.eq(ONE)) return new Ctor(0);\r\n\r\n    external = false;\r\n    r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n    external = true;\r\n\r\n    return round(r, pr);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.minus = P.sub = function (y) {\r\n    var x = this;\r\n    y = new x.constructor(y);\r\n    return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.modulo = P.mod = function (y) {\r\n    var q,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    y = new Ctor(y);\r\n\r\n    // x % 0 = NaN\r\n    if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n    // Return x if x is 0.\r\n    if (!x.s) return round(new Ctor(x), pr);\r\n\r\n    // Prevent rounding of intermediate calculations.\r\n    external = false;\r\n    q = divide(x, y, 0, 1).times(y);\r\n    external = true;\r\n\r\n    return x.minus(q);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n   * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n   * significant digits.\r\n   *\r\n   */\r\n  P.naturalExponential = P.exp = function () {\r\n    return exp(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n   * truncated to `precision` significant digits.\r\n   *\r\n   */\r\n  P.naturalLogarithm = P.ln = function () {\r\n    return ln(this);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n   * -1.\r\n   *\r\n   */\r\n  P.negated = P.neg = function () {\r\n    var x = new this.constructor(this);\r\n    x.s = -x.s || 0;\r\n    return x;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.plus = P.add = function (y) {\r\n    var x = this;\r\n    y = new x.constructor(y);\r\n    return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the number of significant digits of the value of this Decimal.\r\n   *\r\n   * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n   *\r\n   */\r\n  P.precision = P.sd = function (z) {\r\n    var e, sd, w,\r\n      x = this;\r\n\r\n    if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n    e = getBase10Exponent(x) + 1;\r\n    w = x.d.length - 1;\r\n    sd = w * LOG_BASE + 1;\r\n    w = x.d[w];\r\n\r\n    // If non-zero...\r\n    if (w) {\r\n\r\n      // Subtract the number of trailing zeros of the last word.\r\n      for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n      // Add the number of digits of the first word.\r\n      for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n    }\r\n\r\n    return z && e > sd ? e : sd;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n   * significant digits.\r\n   *\r\n   */\r\n  P.squareRoot = P.sqrt = function () {\r\n    var e, n, pr, r, s, t, wpr,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    // Negative or zero?\r\n    if (x.s < 1) {\r\n      if (!x.s) return new Ctor(0);\r\n\r\n      // sqrt(-x) = NaN\r\n      throw Error(decimalError + 'NaN');\r\n    }\r\n\r\n    e = getBase10Exponent(x);\r\n    external = false;\r\n\r\n    // Initial estimate.\r\n    s = Math.sqrt(+x);\r\n\r\n    // Math.sqrt underflow/overflow?\r\n    // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    if (s == 0 || s == 1 / 0) {\r\n      n = digitsToString(x.d);\r\n      if ((n.length + e) % 2 == 0) n += '0';\r\n      s = Math.sqrt(n);\r\n      e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n      if (s == 1 / 0) {\r\n        n = '5e' + e;\r\n      } else {\r\n        n = s.toExponential();\r\n        n = n.slice(0, n.indexOf('e') + 1) + e;\r\n      }\r\n\r\n      r = new Ctor(n);\r\n    } else {\r\n      r = new Ctor(s.toString());\r\n    }\r\n\r\n    pr = Ctor.precision;\r\n    s = wpr = pr + 3;\r\n\r\n    // Newton-Raphson iteration.\r\n    for (;;) {\r\n      t = r;\r\n      r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n        n = n.slice(wpr - 3, wpr + 1);\r\n\r\n        // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n        // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n        if (s == wpr && n == '4999') {\r\n\r\n          // On the first iteration only, check to see if rounding up gives the exact result as the\r\n          // nines may infinitely repeat.\r\n          round(t, pr + 1, 0);\r\n\r\n          if (t.times(t).eq(x)) {\r\n            r = t;\r\n            break;\r\n          }\r\n        } else if (n != '9999') {\r\n          break;\r\n        }\r\n\r\n        wpr += 4;\r\n      }\r\n    }\r\n\r\n    external = true;\r\n\r\n    return round(r, pr);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n   * `precision` significant digits.\r\n   *\r\n   */\r\n  P.times = P.mul = function (y) {\r\n    var carry, e, i, k, r, rL, t, xdL, ydL,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      xd = x.d,\r\n      yd = (y = new Ctor(y)).d;\r\n\r\n    // Return 0 if either is 0.\r\n    if (!x.s || !y.s) return new Ctor(0);\r\n\r\n    y.s *= x.s;\r\n    e = x.e + y.e;\r\n    xdL = xd.length;\r\n    ydL = yd.length;\r\n\r\n    // Ensure xd points to the longer array.\r\n    if (xdL < ydL) {\r\n      r = xd;\r\n      xd = yd;\r\n      yd = r;\r\n      rL = xdL;\r\n      xdL = ydL;\r\n      ydL = rL;\r\n    }\r\n\r\n    // Initialise the result array with zeros.\r\n    r = [];\r\n    rL = xdL + ydL;\r\n    for (i = rL; i--;) r.push(0);\r\n\r\n    // Multiply!\r\n    for (i = ydL; --i >= 0;) {\r\n      carry = 0;\r\n      for (k = xdL + i; k > i;) {\r\n        t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n        r[k--] = t % BASE | 0;\r\n        carry = t / BASE | 0;\r\n      }\r\n\r\n      r[k] = (r[k] + carry) % BASE | 0;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; !r[--rL];) r.pop();\r\n\r\n    if (carry) ++e;\r\n    else r.shift();\r\n\r\n    y.d = r;\r\n    y.e = e;\r\n\r\n    return external ? round(y, Ctor.precision) : y;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n   * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n   *\r\n   * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    x = new Ctor(x);\r\n    if (dp === void 0) return x;\r\n\r\n    checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n    if (rm === void 0) rm = Ctor.rounding;\r\n    else checkInt32(rm, 0, 8);\r\n\r\n    return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in exponential notation rounded to\r\n   * `dp` fixed decimal places using rounding mode `rounding`.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toExponential = function (dp, rm) {\r\n    var str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) {\r\n      str = toString(x, true);\r\n    } else {\r\n      checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = round(new Ctor(x), dp + 1, rm);\r\n      str = toString(x, true, dp + 1);\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n   * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n   * omitted.\r\n   *\r\n   * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n   *\r\n   * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n   * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n   * (-0).toFixed(3) is '0.000'.\r\n   * (-0.5).toFixed(0) is '-0'.\r\n   *\r\n   */\r\n  P.toFixed = function (dp, rm) {\r\n    var str, y,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (dp === void 0) return toString(x);\r\n\r\n    checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n    if (rm === void 0) rm = Ctor.rounding;\r\n    else checkInt32(rm, 0, 8);\r\n\r\n    y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n    str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n    // To determine whether to add the minus sign look at the value before it was rounded,\r\n    // i.e. look at `x` rather than `y`.\r\n    return x.isneg() && !x.isZero() ? '-' + str : str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n   * rounding mode `rounding`.\r\n   *\r\n   */\r\n  P.toInteger = P.toint = function () {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n    return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return the value of this Decimal converted to a number primitive.\r\n   *\r\n   */\r\n  P.toNumber = function () {\r\n    return +this;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n   * truncated to `precision` significant digits.\r\n   *\r\n   * For non-integer or very large exponents pow(x, y) is calculated using\r\n   *\r\n   *   x^y = exp(y*ln(x))\r\n   *\r\n   * The maximum error is 1 ulp (unit in last place).\r\n   *\r\n   * y {number|string|Decimal} The power to which to raise this Decimal.\r\n   *\r\n   */\r\n  P.toPower = P.pow = function (y) {\r\n    var e, k, pr, r, sign, yIsInt,\r\n      x = this,\r\n      Ctor = x.constructor,\r\n      guard = 12,\r\n      yn = +(y = new Ctor(y));\r\n\r\n    // pow(x, 0) = 1\r\n    if (!y.s) return new Ctor(ONE);\r\n\r\n    x = new Ctor(x);\r\n\r\n    // pow(0, y > 0) = 0\r\n    // pow(0, y < 0) = Infinity\r\n    if (!x.s) {\r\n      if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n      return x;\r\n    }\r\n\r\n    // pow(1, y) = 1\r\n    if (x.eq(ONE)) return x;\r\n\r\n    pr = Ctor.precision;\r\n\r\n    // pow(x, 1) = x\r\n    if (y.eq(ONE)) return round(x, pr);\r\n\r\n    e = y.e;\r\n    k = y.d.length - 1;\r\n    yIsInt = e >= k;\r\n    sign = x.s;\r\n\r\n    if (!yIsInt) {\r\n\r\n      // pow(x < 0, y non-integer) = NaN\r\n      if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n    // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n    } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n      r = new Ctor(ONE);\r\n\r\n      // Max k of 9007199254740991 takes 53 loop iterations.\r\n      // Maximum digits array length; leaves [28, 34] guard digits.\r\n      e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n      external = false;\r\n\r\n      for (;;) {\r\n        if (k % 2) {\r\n          r = r.times(x);\r\n          truncate(r.d, e);\r\n        }\r\n\r\n        k = mathfloor(k / 2);\r\n        if (k === 0) break;\r\n\r\n        x = x.times(x);\r\n        truncate(x.d, e);\r\n      }\r\n\r\n      external = true;\r\n\r\n      return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n    }\r\n\r\n    // Result is negative if x is negative and the last digit of integer y is odd.\r\n    sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n    x.s = 1;\r\n    external = false;\r\n    r = y.times(ln(x, pr + guard));\r\n    external = true;\r\n    r = exp(r);\r\n    r.s = sign;\r\n\r\n    return r;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n   * using rounding mode `rounding`.\r\n   *\r\n   * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n   * the integer part of the value in normal notation.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toPrecision = function (sd, rm) {\r\n    var e, str,\r\n      x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      e = getBase10Exponent(x);\r\n      str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n\r\n      x = round(new Ctor(x), sd, rm);\r\n      e = getBase10Exponent(x);\r\n      str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n    }\r\n\r\n    return str;\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n   * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n   * omitted.\r\n   *\r\n   * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n   * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n   *\r\n   */\r\n  P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n    var x = this,\r\n      Ctor = x.constructor;\r\n\r\n    if (sd === void 0) {\r\n      sd = Ctor.precision;\r\n      rm = Ctor.rounding;\r\n    } else {\r\n      checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n      if (rm === void 0) rm = Ctor.rounding;\r\n      else checkInt32(rm, 0, 8);\r\n    }\r\n\r\n    return round(new Ctor(x), sd, rm);\r\n  };\r\n\r\n\r\n  /*\r\n   * Return a string representing the value of this Decimal.\r\n   *\r\n   * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n   * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n   *\r\n   */\r\n  P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n    var x = this,\r\n      e = getBase10Exponent(x),\r\n      Ctor = x.constructor;\r\n\r\n    return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n  };\r\n\r\n\r\n  // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n  /*\r\n   *  add                 P.minus, P.plus\r\n   *  checkInt32          P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n   *  digitsToString      P.log, P.sqrt, P.pow, toString, exp, ln\r\n   *  divide              P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n   *  exp                 P.exp, P.pow\r\n   *  getBase10Exponent   P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n   *                      P.toString, divide, round, toString, exp, ln\r\n   *  getLn10             P.log, ln\r\n   *  getZeroString       digitsToString, toString\r\n   *  ln                  P.log, P.ln, P.pow, exp\r\n   *  parseDecimal        Decimal\r\n   *  round               P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n   *                      P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n   *                      divide, getLn10, exp, ln\r\n   *  subtract            P.minus, P.plus\r\n   *  toString            P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n   *  truncate            P.pow\r\n   *\r\n   *  Throws:             P.log, P.mod, P.sd, P.sqrt, P.pow,  checkInt32, divide, round,\r\n   *                      getLn10, exp, ln, parseDecimal, Decimal, config\r\n   */\r\n\r\n\r\n  function add(x, y) {\r\n    var carry, d, e, i, k, len, xd, yd,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // If either is zero...\r\n    if (!x.s || !y.s) {\r\n\r\n      // Return x if y is zero.\r\n      // Return y if y is non-zero.\r\n      if (!y.s) y = new Ctor(x);\r\n      return external ? round(y, pr) : y;\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n\r\n    // x and y are finite, non-zero numbers with the same sign.\r\n\r\n    k = x.e;\r\n    e = y.e;\r\n    xd = xd.slice();\r\n    i = k - e;\r\n\r\n    // If base 1e7 exponents differ...\r\n    if (i) {\r\n      if (i < 0) {\r\n        d = xd;\r\n        i = -i;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = k;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n      k = Math.ceil(pr / LOG_BASE);\r\n      len = k > len ? k + 1 : len + 1;\r\n\r\n      if (i > len) {\r\n        i = len;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n      d.reverse();\r\n      for (; i--;) d.push(0);\r\n      d.reverse();\r\n    }\r\n\r\n    len = xd.length;\r\n    i = yd.length;\r\n\r\n    // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n    if (len - i < 0) {\r\n      i = len;\r\n      d = yd;\r\n      yd = xd;\r\n      xd = d;\r\n    }\r\n\r\n    // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n    for (carry = 0; i;) {\r\n      carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n      xd[i] %= BASE;\r\n    }\r\n\r\n    if (carry) {\r\n      xd.unshift(carry);\r\n      ++e;\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n    y.d = xd;\r\n    y.e = e;\r\n\r\n    return external ? round(y, pr) : y;\r\n  }\r\n\r\n\r\n  function checkInt32(i, min, max) {\r\n    if (i !== ~~i || i < min || i > max) {\r\n      throw Error(invalidArgument + i);\r\n    }\r\n  }\r\n\r\n\r\n  function digitsToString(d) {\r\n    var i, k, ws,\r\n      indexOfLastWord = d.length - 1,\r\n      str = '',\r\n      w = d[0];\r\n\r\n    if (indexOfLastWord > 0) {\r\n      str += w;\r\n      for (i = 1; i < indexOfLastWord; i++) {\r\n        ws = d[i] + '';\r\n        k = LOG_BASE - ws.length;\r\n        if (k) str += getZeroString(k);\r\n        str += ws;\r\n      }\r\n\r\n      w = d[i];\r\n      ws = w + '';\r\n      k = LOG_BASE - ws.length;\r\n      if (k) str += getZeroString(k);\r\n    } else if (w === 0) {\r\n      return '0';\r\n    }\r\n\r\n    // Remove trailing zeros of last w.\r\n    for (; w % 10 === 0;) w /= 10;\r\n\r\n    return str + w;\r\n  }\r\n\r\n\r\n  var divide = (function () {\r\n\r\n    // Assumes non-zero x and k, and hence non-zero result.\r\n    function multiplyInteger(x, k) {\r\n      var temp,\r\n        carry = 0,\r\n        i = x.length;\r\n\r\n      for (x = x.slice(); i--;) {\r\n        temp = x[i] * k + carry;\r\n        x[i] = temp % BASE | 0;\r\n        carry = temp / BASE | 0;\r\n      }\r\n\r\n      if (carry) x.unshift(carry);\r\n\r\n      return x;\r\n    }\r\n\r\n    function compare(a, b, aL, bL) {\r\n      var i, r;\r\n\r\n      if (aL != bL) {\r\n        r = aL > bL ? 1 : -1;\r\n      } else {\r\n        for (i = r = 0; i < aL; i++) {\r\n          if (a[i] != b[i]) {\r\n            r = a[i] > b[i] ? 1 : -1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      return r;\r\n    }\r\n\r\n    function subtract(a, b, aL) {\r\n      var i = 0;\r\n\r\n      // Subtract b from a.\r\n      for (; aL--;) {\r\n        a[aL] -= i;\r\n        i = a[aL] < b[aL] ? 1 : 0;\r\n        a[aL] = i * BASE + a[aL] - b[aL];\r\n      }\r\n\r\n      // Remove leading zeros.\r\n      for (; !a[0] && a.length > 1;) a.shift();\r\n    }\r\n\r\n    return function (x, y, pr, dp) {\r\n      var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n        Ctor = x.constructor,\r\n        sign = x.s == y.s ? 1 : -1,\r\n        xd = x.d,\r\n        yd = y.d;\r\n\r\n      // Either 0?\r\n      if (!x.s) return new Ctor(x);\r\n      if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n      e = x.e - y.e;\r\n      yL = yd.length;\r\n      xL = xd.length;\r\n      q = new Ctor(sign);\r\n      qd = q.d = [];\r\n\r\n      // Result exponent may be one less than e.\r\n      for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n      if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n      if (pr == null) {\r\n        sd = pr = Ctor.precision;\r\n      } else if (dp) {\r\n        sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n      } else {\r\n        sd = pr;\r\n      }\r\n\r\n      if (sd < 0) return new Ctor(0);\r\n\r\n      // Convert precision in number of base 10 digits to base 1e7 digits.\r\n      sd = sd / LOG_BASE + 2 | 0;\r\n      i = 0;\r\n\r\n      // divisor < 1e7\r\n      if (yL == 1) {\r\n        k = 0;\r\n        yd = yd[0];\r\n        sd++;\r\n\r\n        // k is the carry.\r\n        for (; (i < xL || k) && sd--; i++) {\r\n          t = k * BASE + (xd[i] || 0);\r\n          qd[i] = t / yd | 0;\r\n          k = t % yd | 0;\r\n        }\r\n\r\n      // divisor >= 1e7\r\n      } else {\r\n\r\n        // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n        k = BASE / (yd[0] + 1) | 0;\r\n\r\n        if (k > 1) {\r\n          yd = multiplyInteger(yd, k);\r\n          xd = multiplyInteger(xd, k);\r\n          yL = yd.length;\r\n          xL = xd.length;\r\n        }\r\n\r\n        xi = yL;\r\n        rem = xd.slice(0, yL);\r\n        remL = rem.length;\r\n\r\n        // Add zeros to make remainder as long as divisor.\r\n        for (; remL < yL;) rem[remL++] = 0;\r\n\r\n        yz = yd.slice();\r\n        yz.unshift(0);\r\n        yd0 = yd[0];\r\n\r\n        if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n        do {\r\n          k = 0;\r\n\r\n          // Compare divisor and remainder.\r\n          cmp = compare(yd, rem, yL, remL);\r\n\r\n          // If divisor < remainder.\r\n          if (cmp < 0) {\r\n\r\n            // Calculate trial digit, k.\r\n            rem0 = rem[0];\r\n            if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n            // k will be how many times the divisor goes into the current remainder.\r\n            k = rem0 / yd0 | 0;\r\n\r\n            //  Algorithm:\r\n            //  1. product = divisor * trial digit (k)\r\n            //  2. if product > remainder: product -= divisor, k--\r\n            //  3. remainder -= product\r\n            //  4. if product was < remainder at 2:\r\n            //    5. compare new remainder and divisor\r\n            //    6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n            if (k > 1) {\r\n              if (k >= BASE) k = BASE - 1;\r\n\r\n              // product = divisor * trial digit.\r\n              prod = multiplyInteger(yd, k);\r\n              prodL = prod.length;\r\n              remL = rem.length;\r\n\r\n              // Compare product and remainder.\r\n              cmp = compare(prod, rem, prodL, remL);\r\n\r\n              // product > remainder.\r\n              if (cmp == 1) {\r\n                k--;\r\n\r\n                // Subtract divisor from product.\r\n                subtract(prod, yL < prodL ? yz : yd, prodL);\r\n              }\r\n            } else {\r\n\r\n              // cmp is -1.\r\n              // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n              // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n              if (k == 0) cmp = k = 1;\r\n              prod = yd.slice();\r\n            }\r\n\r\n            prodL = prod.length;\r\n            if (prodL < remL) prod.unshift(0);\r\n\r\n            // Subtract product from remainder.\r\n            subtract(rem, prod, remL);\r\n\r\n            // If product was < previous remainder.\r\n            if (cmp == -1) {\r\n              remL = rem.length;\r\n\r\n              // Compare divisor and new remainder.\r\n              cmp = compare(yd, rem, yL, remL);\r\n\r\n              // If divisor < new remainder, subtract divisor from remainder.\r\n              if (cmp < 1) {\r\n                k++;\r\n\r\n                // Subtract divisor from remainder.\r\n                subtract(rem, yL < remL ? yz : yd, remL);\r\n              }\r\n            }\r\n\r\n            remL = rem.length;\r\n          } else if (cmp === 0) {\r\n            k++;\r\n            rem = [0];\r\n          }    // if cmp === 1, k will be 0\r\n\r\n          // Add the next digit, k, to the result array.\r\n          qd[i++] = k;\r\n\r\n          // Update the remainder.\r\n          if (cmp && rem[0]) {\r\n            rem[remL++] = xd[xi] || 0;\r\n          } else {\r\n            rem = [xd[xi]];\r\n            remL = 1;\r\n          }\r\n\r\n        } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n      }\r\n\r\n      // Leading zero?\r\n      if (!qd[0]) qd.shift();\r\n\r\n      q.e = e;\r\n\r\n      return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n    };\r\n  })();\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n   * significant digits.\r\n   *\r\n   * Taylor/Maclaurin series.\r\n   *\r\n   * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n   *\r\n   * Argument reduction:\r\n   *   Repeat x = x / 32, k += 5, until |x| < 0.1\r\n   *   exp(x) = exp(x / 2^k)^(2^k)\r\n   *\r\n   * Previously, the argument was initially reduced by\r\n   * exp(x) = exp(r) * 10^k  where r = x - k * ln10, k = floor(x / ln10)\r\n   * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n   * found to be slower than just dividing repeatedly by 32 as above.\r\n   *\r\n   * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n   *\r\n   *  exp(x) is non-terminating for any finite, non-zero x.\r\n   *\r\n   */\r\n  function exp(x, sd) {\r\n    var denominator, guard, pow, sum, t, wpr,\r\n      i = 0,\r\n      k = 0,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n    // exp(0) = 1\r\n    if (!x.s) return new Ctor(ONE);\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    t = new Ctor(0.03125);\r\n\r\n    while (x.abs().gte(0.1)) {\r\n      x = x.times(t);    // x = x / 2^5\r\n      k += 5;\r\n    }\r\n\r\n    // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n    guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n    wpr += guard;\r\n    denominator = pow = sum = new Ctor(ONE);\r\n    Ctor.precision = wpr;\r\n\r\n    for (;;) {\r\n      pow = round(pow.times(x), wpr);\r\n      denominator = denominator.times(++i);\r\n      t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        while (k--) sum = round(sum.times(sum), wpr);\r\n        Ctor.precision = pr;\r\n        return sd == null ? (external = true, round(sum, pr)) : sum;\r\n      }\r\n\r\n      sum = t;\r\n    }\r\n  }\r\n\r\n\r\n  // Calculate the base 10 exponent from the base 1e7 exponent.\r\n  function getBase10Exponent(x) {\r\n    var e = x.e * LOG_BASE,\r\n      w = x.d[0];\r\n\r\n    // Add the number of digits of the first word of the digits array.\r\n    for (; w >= 10; w /= 10) e++;\r\n    return e;\r\n  }\r\n\r\n\r\n  function getLn10(Ctor, sd, pr) {\r\n\r\n    if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n      // Reset global state in case the exception is caught.\r\n      external = true;\r\n      if (pr) Ctor.precision = pr;\r\n      throw Error(decimalError + 'LN10 precision limit exceeded');\r\n    }\r\n\r\n    return round(new Ctor(Ctor.LN10), sd);\r\n  }\r\n\r\n\r\n  function getZeroString(k) {\r\n    var zs = '';\r\n    for (; k--;) zs += '0';\r\n    return zs;\r\n  }\r\n\r\n\r\n  /*\r\n   * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n   * digits.\r\n   *\r\n   *  ln(n) is non-terminating (n != 1)\r\n   *\r\n   */\r\n  function ln(y, sd) {\r\n    var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n      n = 1,\r\n      guard = 10,\r\n      x = y,\r\n      xd = x.d,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // ln(-x) = NaN\r\n    // ln(0) = -Infinity\r\n    if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n    // ln(1) = 0\r\n    if (x.eq(ONE)) return new Ctor(0);\r\n\r\n    if (sd == null) {\r\n      external = false;\r\n      wpr = pr;\r\n    } else {\r\n      wpr = sd;\r\n    }\r\n\r\n    if (x.eq(10)) {\r\n      if (sd == null) external = true;\r\n      return getLn10(Ctor, wpr);\r\n    }\r\n\r\n    wpr += guard;\r\n    Ctor.precision = wpr;\r\n    c = digitsToString(xd);\r\n    c0 = c.charAt(0);\r\n    e = getBase10Exponent(x);\r\n\r\n    if (Math.abs(e) < 1.5e15) {\r\n\r\n      // Argument reduction.\r\n      // The series converges faster the closer the argument is to 1, so using\r\n      // ln(a^b) = b * ln(a),   ln(a) = ln(a^b) / b\r\n      // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n      // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n      // later be divided by this number, then separate out the power of 10 using\r\n      // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n      // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n      //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n      // max n is 6 (gives 0.7 - 1.3)\r\n      while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n        x = x.times(y);\r\n        c = digitsToString(x.d);\r\n        c0 = c.charAt(0);\r\n        n++;\r\n      }\r\n\r\n      e = getBase10Exponent(x);\r\n\r\n      if (c0 > 1) {\r\n        x = new Ctor('0.' + c);\r\n        e++;\r\n      } else {\r\n        x = new Ctor(c0 + '.' + c.slice(1));\r\n      }\r\n    } else {\r\n\r\n      // The argument reduction method above may result in overflow if the argument y is a massive\r\n      // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n      // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n      t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n      x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n      Ctor.precision = pr;\r\n      return sd == null ? (external = true, round(x, pr)) : x;\r\n    }\r\n\r\n    // x is reduced to a value near 1.\r\n\r\n    // Taylor series.\r\n    // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n    // where x = (y - 1)/(y + 1)    (|x| < 1)\r\n    sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n    x2 = round(x.times(x), wpr);\r\n    denominator = 3;\r\n\r\n    for (;;) {\r\n      numerator = round(numerator.times(x2), wpr);\r\n      t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n      if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n        sum = sum.times(2);\r\n\r\n        // Reverse the argument reduction.\r\n        if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n        sum = divide(sum, new Ctor(n), wpr);\r\n\r\n        Ctor.precision = pr;\r\n        return sd == null ? (external = true, round(sum, pr)) : sum;\r\n      }\r\n\r\n      sum = t;\r\n      denominator += 2;\r\n    }\r\n  }\r\n\r\n\r\n  /*\r\n   * Parse the value of a new Decimal `x` from string `str`.\r\n   */\r\n  function parseDecimal(x, str) {\r\n    var e, i, len;\r\n\r\n    // Decimal point?\r\n    if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n    // Exponential form?\r\n    if ((i = str.search(/e/i)) > 0) {\r\n\r\n      // Determine exponent.\r\n      if (e < 0) e = i;\r\n      e += +str.slice(i + 1);\r\n      str = str.substring(0, i);\r\n    } else if (e < 0) {\r\n\r\n      // Integer.\r\n      e = str.length;\r\n    }\r\n\r\n    // Determine leading zeros.\r\n    for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n    // Determine trailing zeros.\r\n    for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n    str = str.slice(i, len);\r\n\r\n    if (str) {\r\n      len -= i;\r\n      e = e - i - 1;\r\n      x.e = mathfloor(e / LOG_BASE);\r\n      x.d = [];\r\n\r\n      // Transform base\r\n\r\n      // e is the base 10 exponent.\r\n      // i is where to slice str to get the first word of the digits array.\r\n      i = (e + 1) % LOG_BASE;\r\n      if (e < 0) i += LOG_BASE;\r\n\r\n      if (i < len) {\r\n        if (i) x.d.push(+str.slice(0, i));\r\n        for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n        str = str.slice(i);\r\n        i = LOG_BASE - str.length;\r\n      } else {\r\n        i -= len;\r\n      }\r\n\r\n      for (; i--;) str += '0';\r\n      x.d.push(+str);\r\n\r\n      if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n    } else {\r\n\r\n      // Zero.\r\n      x.s = 0;\r\n      x.e = 0;\r\n      x.d = [0];\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  /*\r\n   * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n   */\r\n   function round(x, sd, rm) {\r\n    var i, j, k, n, rd, doRound, w, xdi,\r\n      xd = x.d;\r\n\r\n    // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n    // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n    // xdi: the index of w within xd.\r\n    // n: the number of digits of w.\r\n    // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n    // they had leading zeros)\r\n    // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n    // Get the length of the first word of the digits array xd.\r\n    for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n    i = sd - n;\r\n\r\n    // Is the rounding digit in the first word of xd?\r\n    if (i < 0) {\r\n      i += LOG_BASE;\r\n      j = sd;\r\n      w = xd[xdi = 0];\r\n    } else {\r\n      xdi = Math.ceil((i + 1) / LOG_BASE);\r\n      k = xd.length;\r\n      if (xdi >= k) return x;\r\n      w = k = xd[xdi];\r\n\r\n      // Get the number of digits of w.\r\n      for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n      // Get the index of rd within w.\r\n      i %= LOG_BASE;\r\n\r\n      // Get the index of rd within w, adjusted for leading zeros.\r\n      // The number of leading zeros of w is given by LOG_BASE - n.\r\n      j = i - LOG_BASE + n;\r\n    }\r\n\r\n    if (rm !== void 0) {\r\n      k = mathpow(10, n - j - 1);\r\n\r\n      // Get the rounding digit at index j of w.\r\n      rd = w / k % 10 | 0;\r\n\r\n      // Are there any non-zero digits after the rounding digit?\r\n      doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n      // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n      // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n      // 714.\r\n\r\n      doRound = rm < 4\r\n        ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n        : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n          // Check whether the digit to the left of the rounding digit is odd.\r\n          ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n            rm == (x.s < 0 ? 8 : 7));\r\n    }\r\n\r\n    if (sd < 1 || !xd[0]) {\r\n      if (doRound) {\r\n        k = getBase10Exponent(x);\r\n        xd.length = 1;\r\n\r\n        // Convert sd to decimal places.\r\n        sd = sd - k - 1;\r\n\r\n        // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n        xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n        x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n      } else {\r\n        xd.length = 1;\r\n\r\n        // Zero.\r\n        xd[0] = x.e = x.s = 0;\r\n      }\r\n\r\n      return x;\r\n    }\r\n\r\n    // Remove excess digits.\r\n    if (i == 0) {\r\n      xd.length = xdi;\r\n      k = 1;\r\n      xdi--;\r\n    } else {\r\n      xd.length = xdi + 1;\r\n      k = mathpow(10, LOG_BASE - i);\r\n\r\n      // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n      // j > 0 means i > number of leading zeros of w.\r\n      xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n    }\r\n\r\n    if (doRound) {\r\n      for (;;) {\r\n\r\n        // Is the digit to be rounded up in the first word of xd?\r\n        if (xdi == 0) {\r\n          if ((xd[0] += k) == BASE) {\r\n            xd[0] = 1;\r\n            ++x.e;\r\n          }\r\n\r\n          break;\r\n        } else {\r\n          xd[xdi] += k;\r\n          if (xd[xdi] != BASE) break;\r\n          xd[xdi--] = 0;\r\n          k = 1;\r\n        }\r\n      }\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n    if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n      throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n    }\r\n\r\n    return x;\r\n  }\r\n\r\n\r\n  function subtract(x, y) {\r\n    var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n      Ctor = x.constructor,\r\n      pr = Ctor.precision;\r\n\r\n    // Return y negated if x is zero.\r\n    // Return x if y is zero and x is non-zero.\r\n    if (!x.s || !y.s) {\r\n      if (y.s) y.s = -y.s;\r\n      else y = new Ctor(x);\r\n      return external ? round(y, pr) : y;\r\n    }\r\n\r\n    xd = x.d;\r\n    yd = y.d;\r\n\r\n    // x and y are non-zero numbers with the same sign.\r\n\r\n    e = y.e;\r\n    xe = x.e;\r\n    xd = xd.slice();\r\n    k = xe - e;\r\n\r\n    // If exponents differ...\r\n    if (k) {\r\n      xLTy = k < 0;\r\n\r\n      if (xLTy) {\r\n        d = xd;\r\n        k = -k;\r\n        len = yd.length;\r\n      } else {\r\n        d = yd;\r\n        e = xe;\r\n        len = xd.length;\r\n      }\r\n\r\n      // Numbers with massively different exponents would result in a very high number of zeros\r\n      // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n      // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n      i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n      if (k > i) {\r\n        k = i;\r\n        d.length = 1;\r\n      }\r\n\r\n      // Prepend zeros to equalise exponents.\r\n      d.reverse();\r\n      for (i = k; i--;) d.push(0);\r\n      d.reverse();\r\n\r\n    // Base 1e7 exponents equal.\r\n    } else {\r\n\r\n      // Check digits to determine which is the bigger number.\r\n\r\n      i = xd.length;\r\n      len = yd.length;\r\n      xLTy = i < len;\r\n      if (xLTy) len = i;\r\n\r\n      for (i = 0; i < len; i++) {\r\n        if (xd[i] != yd[i]) {\r\n          xLTy = xd[i] < yd[i];\r\n          break;\r\n        }\r\n      }\r\n\r\n      k = 0;\r\n    }\r\n\r\n    if (xLTy) {\r\n      d = xd;\r\n      xd = yd;\r\n      yd = d;\r\n      y.s = -y.s;\r\n    }\r\n\r\n    len = xd.length;\r\n\r\n    // Append zeros to xd if shorter.\r\n    // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n    for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n    // Subtract yd from xd.\r\n    for (i = yd.length; i > k;) {\r\n      if (xd[--i] < yd[i]) {\r\n        for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n        --xd[j];\r\n        xd[i] += BASE;\r\n      }\r\n\r\n      xd[i] -= yd[i];\r\n    }\r\n\r\n    // Remove trailing zeros.\r\n    for (; xd[--len] === 0;) xd.pop();\r\n\r\n    // Remove leading zeros and adjust exponent accordingly.\r\n    for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n    // Zero?\r\n    if (!xd[0]) return new Ctor(0);\r\n\r\n    y.d = xd;\r\n    y.e = e;\r\n\r\n    //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n    return external ? round(y, pr) : y;\r\n  }\r\n\r\n\r\n  function toString(x, isExp, sd) {\r\n    var k,\r\n      e = getBase10Exponent(x),\r\n      str = digitsToString(x.d),\r\n      len = str.length;\r\n\r\n    if (isExp) {\r\n      if (sd && (k = sd - len) > 0) {\r\n        str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n      } else if (len > 1) {\r\n        str = str.charAt(0) + '.' + str.slice(1);\r\n      }\r\n\r\n      str = str + (e < 0 ? 'e' : 'e+') + e;\r\n    } else if (e < 0) {\r\n      str = '0.' + getZeroString(-e - 1) + str;\r\n      if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n    } else if (e >= len) {\r\n      str += getZeroString(e + 1 - len);\r\n      if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n    } else {\r\n      if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n      if (sd && (k = sd - len) > 0) {\r\n        if (e + 1 === len) str += '.';\r\n        str += getZeroString(k);\r\n      }\r\n    }\r\n\r\n    return x.s < 0 ? '-' + str : str;\r\n  }\r\n\r\n\r\n  // Does not strip trailing zeros.\r\n  function truncate(arr, len) {\r\n    if (arr.length > len) {\r\n      arr.length = len;\r\n      return true;\r\n    }\r\n  }\r\n\r\n\r\n  // Decimal methods\r\n\r\n\r\n  /*\r\n   *  clone\r\n   *  config/set\r\n   */\r\n\r\n\r\n  /*\r\n   * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n   * constructor.\r\n   *\r\n   */\r\n  function clone(obj) {\r\n    var i, p, ps;\r\n\r\n    /*\r\n     * The Decimal constructor and exported function.\r\n     * Return a new Decimal instance.\r\n     *\r\n     * value {number|string|Decimal} A numeric value.\r\n     *\r\n     */\r\n    function Decimal(value) {\r\n      var x = this;\r\n\r\n      // Decimal called without new.\r\n      if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n      // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n      // which points to Object.\r\n      x.constructor = Decimal;\r\n\r\n      // Duplicate.\r\n      if (value instanceof Decimal) {\r\n        x.s = value.s;\r\n        x.e = value.e;\r\n        x.d = (value = value.d) ? value.slice() : value;\r\n        return;\r\n      }\r\n\r\n      if (typeof value === 'number') {\r\n\r\n        // Reject Infinity/NaN.\r\n        if (value * 0 !== 0) {\r\n          throw Error(invalidArgument + value);\r\n        }\r\n\r\n        if (value > 0) {\r\n          x.s = 1;\r\n        } else if (value < 0) {\r\n          value = -value;\r\n          x.s = -1;\r\n        } else {\r\n          x.s = 0;\r\n          x.e = 0;\r\n          x.d = [0];\r\n          return;\r\n        }\r\n\r\n        // Fast path for small integers.\r\n        if (value === ~~value && value < 1e7) {\r\n          x.e = 0;\r\n          x.d = [value];\r\n          return;\r\n        }\r\n\r\n        return parseDecimal(x, value.toString());\r\n      } else if (typeof value !== 'string') {\r\n        throw Error(invalidArgument + value);\r\n      }\r\n\r\n      // Minus sign?\r\n      if (value.charCodeAt(0) === 45) {\r\n        value = value.slice(1);\r\n        x.s = -1;\r\n      } else {\r\n        x.s = 1;\r\n      }\r\n\r\n      if (isDecimal.test(value)) parseDecimal(x, value);\r\n      else throw Error(invalidArgument + value);\r\n    }\r\n\r\n    Decimal.prototype = P;\r\n\r\n    Decimal.ROUND_UP = 0;\r\n    Decimal.ROUND_DOWN = 1;\r\n    Decimal.ROUND_CEIL = 2;\r\n    Decimal.ROUND_FLOOR = 3;\r\n    Decimal.ROUND_HALF_UP = 4;\r\n    Decimal.ROUND_HALF_DOWN = 5;\r\n    Decimal.ROUND_HALF_EVEN = 6;\r\n    Decimal.ROUND_HALF_CEIL = 7;\r\n    Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n    Decimal.clone = clone;\r\n    Decimal.config = Decimal.set = config;\r\n\r\n    if (obj === void 0) obj = {};\r\n    if (obj) {\r\n      ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n      for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n    }\r\n\r\n    Decimal.config(obj);\r\n\r\n    return Decimal;\r\n  }\r\n\r\n\r\n  /*\r\n   * Configure global settings for a Decimal constructor.\r\n   *\r\n   * `obj` is an object with one or more of the following properties,\r\n   *\r\n   *   precision  {number}\r\n   *   rounding   {number}\r\n   *   toExpNeg   {number}\r\n   *   toExpPos   {number}\r\n   *\r\n   * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n   *\r\n   */\r\n  function config(obj) {\r\n    if (!obj || typeof obj !== 'object') {\r\n      throw Error(decimalError + 'Object expected');\r\n    }\r\n    var i, p, v,\r\n      ps = [\r\n        'precision', 1, MAX_DIGITS,\r\n        'rounding', 0, 8,\r\n        'toExpNeg', -1 / 0, 0,\r\n        'toExpPos', 0, 1 / 0\r\n      ];\r\n\r\n    for (i = 0; i < ps.length; i += 3) {\r\n      if ((v = obj[p = ps[i]]) !== void 0) {\r\n        if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n        else throw Error(invalidArgument + p + ': ' + v);\r\n      }\r\n    }\r\n\r\n    if ((v = obj[p = 'LN10']) !== void 0) {\r\n        if (v == Math.LN10) this[p] = new this(v);\r\n        else throw Error(invalidArgument + p + ': ' + v);\r\n    }\r\n\r\n    return this;\r\n  }\r\n\r\n\r\n  // Create and configure initial Decimal constructor.\r\n  Decimal = clone(Decimal);\r\n\r\n  Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n  // Internal constant.\r\n  ONE = new Decimal(1);\r\n\r\n\r\n  // Export.\r\n\r\n\r\n  // AMD.\r\n  if (typeof define == 'function' && define.amd) {\r\n    define(function () {\r\n      return Decimal;\r\n    });\r\n\r\n  // Node and other environments that support module.exports.\r\n  } else if (typeof module != 'undefined' && module.exports) {\r\n    module.exports = Decimal;\r\n\r\n    // Browser.\r\n  } else {\r\n    if (!globalScope) {\r\n      globalScope = typeof self != 'undefined' && self && self.self == self\r\n        ? self : Function('return this')();\r\n    }\r\n\r\n    globalScope.Decimal = Decimal;\r\n  }\r\n})(this);\r\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n  Events.prototype = Object.create(null);\n\n  //\n  // This hack is needed because the `__proto__` property is still inherited in\n  // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n  //\n  if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n  this.fn = fn;\n  this.context = context;\n  this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('The listener must be a function');\n  }\n\n  var listener = new EE(fn, context || emitter, once)\n    , evt = prefix ? prefix + event : event;\n\n  if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n  else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n  else emitter._events[evt] = [emitter._events[evt], listener];\n\n  return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n  if (--emitter._eventsCount === 0) emitter._events = new Events();\n  else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n  this._events = new Events();\n  this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n  var names = []\n    , events\n    , name;\n\n  if (this._eventsCount === 0) return names;\n\n  for (name in (events = this._events)) {\n    if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n  }\n\n  if (Object.getOwnPropertySymbols) {\n    return names.concat(Object.getOwnPropertySymbols(events));\n  }\n\n  return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n  var evt = prefix ? prefix + event : event\n    , handlers = this._events[evt];\n\n  if (!handlers) return [];\n  if (handlers.fn) return [handlers.fn];\n\n  for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n    ee[i] = handlers[i].fn;\n  }\n\n  return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n  var evt = prefix ? prefix + event : event\n    , listeners = this._events[evt];\n\n  if (!listeners) return 0;\n  if (listeners.fn) return 1;\n  return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return false;\n\n  var listeners = this._events[evt]\n    , len = arguments.length\n    , args\n    , i;\n\n  if (listeners.fn) {\n    if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n    switch (len) {\n      case 1: return listeners.fn.call(listeners.context), true;\n      case 2: return listeners.fn.call(listeners.context, a1), true;\n      case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n      case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n      case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n      case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n    }\n\n    for (i = 1, args = new Array(len -1); i < len; i++) {\n      args[i - 1] = arguments[i];\n    }\n\n    listeners.fn.apply(listeners.context, args);\n  } else {\n    var length = listeners.length\n      , j;\n\n    for (i = 0; i < length; i++) {\n      if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n      switch (len) {\n        case 1: listeners[i].fn.call(listeners[i].context); break;\n        case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n        case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n        case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n        default:\n          if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n            args[j - 1] = arguments[j];\n          }\n\n          listeners[i].fn.apply(listeners[i].context, args);\n      }\n    }\n  }\n\n  return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n  return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n  return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n  var evt = prefix ? prefix + event : event;\n\n  if (!this._events[evt]) return this;\n  if (!fn) {\n    clearEvent(this, evt);\n    return this;\n  }\n\n  var listeners = this._events[evt];\n\n  if (listeners.fn) {\n    if (\n      listeners.fn === fn &&\n      (!once || listeners.once) &&\n      (!context || listeners.context === context)\n    ) {\n      clearEvent(this, evt);\n    }\n  } else {\n    for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n      if (\n        listeners[i].fn !== fn ||\n        (once && !listeners[i].once) ||\n        (context && listeners[i].context !== context)\n      ) {\n        events.push(listeners[i]);\n      }\n    }\n\n    //\n    // Reset the array, or remove it completely if we have no more listeners.\n    //\n    if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n    else clearEvent(this, evt);\n  }\n\n  return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n  var evt;\n\n  if (event) {\n    evt = prefix ? prefix + event : event;\n    if (this._events[evt]) clearEvent(this, evt);\n  } else {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n\n  return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n  module.exports = EventEmitter;\n}\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n    setCacheAdd = require('./_setCacheAdd'),\n    setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values == null ? 0 : values.length;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n    stackClear = require('./_stackClear'),\n    stackDelete = require('./_stackDelete'),\n    stackGet = require('./_stackGet'),\n    stackHas = require('./_stackHas'),\n    stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\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 `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n *  else `false`.\n */\nfunction arrayEvery(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (!predicate(array[index], index, array)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nmodule.exports = arrayEvery;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      resIndex = 0,\n      result = [];\n\n  while (++index < length) {\n    var value = array[index];\n    if (predicate(value, index, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayFilter;\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 baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\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 array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array 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 arraySome(array, predicate) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\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 baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\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","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` 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 all elements pass the predicate check,\n *  else `false`\n */\nfunction baseEvery(collection, predicate) {\n  var result = true;\n  baseEach(collection, function(value, index, collection) {\n    result = !!predicate(value, index, collection);\n    return result;\n  });\n  return result;\n}\n\nmodule.exports = baseEvery;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n  var index = -1,\n      length = array.length;\n\n  while (++index < length) {\n    var value = array[index],\n        current = iteratee(value);\n\n    if (current != null && (computed === undefined\n          ? (current === current && !isSymbol(current))\n          : comparator(current, computed)\n        )) {\n      var computed = current,\n          result = value;\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseExtremum;\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 createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n    toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = castPath(path, object);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n    isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n *  else `false`.\n */\nfunction baseGt(value, other) {\n  return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\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 baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n    isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Unordered comparison\n *  2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n    equalArrays = require('./_equalArrays'),\n    equalByTag = require('./_equalByTag'),\n    equalObjects = require('./_equalObjects'),\n    getTag = require('./_getTag'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    objectTag = '[object Object]';\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 * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = objIsArr ? arrayTag : getTag(object),\n      othTag = othIsArr ? arrayTag : getTag(other);\n\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n\n  var objIsObj = objTag == objectTag,\n      othIsObj = othTag == objectTag,\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n    baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\nmodule.exports = baseIsMatch;\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 isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\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 detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n    baseMatchesProperty = require('./_baseMatchesProperty'),\n    identity = require('./identity'),\n    isArray = require('./isArray'),\n    property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\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 `_.keys` 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 baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n *  else `false`.\n */\nfunction baseLt(value, other) {\n  return value < other;\n}\n\nmodule.exports = baseLt;\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 baseIsMatch = require('./_baseIsMatch'),\n    getMatchData = require('./_getMatchData'),\n    matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n    get = require('./get'),\n    hasIn = require('./hasIn'),\n    isKey = require('./_isKey'),\n    isStrictComparable = require('./_isStrictComparable'),\n    matchesStrictComparable = require('./_matchesStrictComparable'),\n    toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n  };\n}\n\nmodule.exports = baseMatchesProperty;\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","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\nmodule.exports = basePropertyDeep;\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 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","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\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","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\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","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\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","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n    isKey = require('./_isKey'),\n    stringToPath = require('./_stringToPath'),\n    toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n  if (isArray(value)) {\n    return value;\n  }\n  return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\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 root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\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","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringToArray = require('./_stringToArray'),\n    toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\nmodule.exports = createCaseFirst;\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 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 getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n    arraySome = require('./_arraySome'),\n    cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Check that cyclic values are equal.\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!cacheHas(seen, othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n              return seen.push(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, bitmask, customizer, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n    Uint8Array = require('./_Uint8Array'),\n    eq = require('./eq'),\n    equalArrays = require('./_equalArrays'),\n    mapToArray = require('./_mapToArray'),\n    setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n    COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n      objProps = getAllKeys(object),\n      objLength = objProps.length,\n      othProps = getAllKeys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Check that cyclic values are equal.\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n    getSymbols = require('./_getSymbols'),\n    keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and 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 getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n    keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\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 * 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/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n    stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\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 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 getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n    Map = require('./_Map'),\n    Promise = require('./_Promise'),\n    Set = require('./_Set'),\n    WeakMap = require('./_WeakMap'),\n    baseGetTag = require('./_baseGetTag'),\n    toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    setTag = '[object Set]',\n    weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = baseGetTag(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : '';\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isIndex = require('./_isIndex'),\n    isLength = require('./isLength'),\n    toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = castPath(path, object);\n\n  var index = -1,\n      length = path.length,\n      result = false;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result || ++index != length) {\n    return result;\n  }\n  length = object == null ? 0 : object.length;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\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 a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\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","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\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","var isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n  var result = memoize(func, function(key) {\n    if (cache.size === MAX_MEMOIZE_SIZE) {\n      cache.clear();\n    }\n    return key;\n  });\n\n  var cache = result.cache;\n  return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\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 * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\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 freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\nmodule.exports = setToArray;\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","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n    Map = require('./_Map'),\n    MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\nmodule.exports = stackSet;\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","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n  var result = [];\n  if (string.charCodeAt(0) === 46 /* . */) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, subString) {\n    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\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","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\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","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.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 * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayEvery = require('./_arrayEvery'),\n    baseEvery = require('./_baseEvery'),\n    baseIteratee = require('./_baseIteratee'),\n    isArray = require('./isArray'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\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 all elements pass the predicate check,\n *  else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': false },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n  var func = isArray(collection) ? arrayEvery : baseEvery;\n  if (guard && isIterateeCall(collection, predicate, guard)) {\n    predicate = undefined;\n  }\n  return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\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    map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\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 {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n *   return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n  return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n    hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\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/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` 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 an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` 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 an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n  return value === true || value === false ||\n    (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\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","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` 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 function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n  // An `NaN` primitive is the only value that is not equal to itself.\n  // Perform the `toStringTag` check first to avoid errors with some\n  // ActiveX objects in IE.\n  return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\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    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n  return typeof value == 'number' ||\n    (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\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 an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"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 object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\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 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 baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\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 names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\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","var arrayMap = require('./_arrayMap'),\n    baseIteratee = require('./_baseIteratee'),\n    baseMap = require('./_baseMap'),\n    isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\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 function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n *   return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n *   { 'user': 'barney' },\n *   { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n  var func = isArray(collection) ? arrayMap : baseMap;\n  return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n    baseForOwn = require('./_baseForOwn'),\n    baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n *   'fred':    { 'user': 'fred',    'age': 40 },\n *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n  var result = {};\n  iteratee = baseIteratee(iteratee, 3);\n\n  baseForOwn(object, function(value, key, object) {\n    baseAssignValue(result, key, iteratee(value, key, object));\n  });\n  return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n    baseGt = require('./_baseGt'),\n    identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseGt)\n    : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseExtremum = require('./_baseExtremum'),\n    baseLt = require('./_baseLt'),\n    identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n  return (array && array.length)\n    ? baseExtremum(array, identity, baseLt)\n    : undefined;\n}\n\nmodule.exports = min;\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 baseProperty = require('./_baseProperty'),\n    basePropertyDeep = require('./_basePropertyDeep'),\n    isKey = require('./_isKey'),\n    toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\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 baseFlatten = require('./_baseFlatten'),\n    baseOrderBy = require('./_baseOrderBy'),\n    baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are 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|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 30 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\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 baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\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 createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Combine two comparators into a single comparators.\n */\nfunction combineComparators(comparatorA, comparatorB) {\n    return function isEqual(a, b, state) {\n        return comparatorA(a, b, state) && comparatorB(a, b, state);\n    };\n}\n/**\n * Wrap the provided `areItemsEqual` method to manage the circular state, allowing\n * for circular references to be safely included in the comparison without creating\n * stack overflows.\n */\nfunction createIsCircular(areItemsEqual) {\n    return function isCircular(a, b, state) {\n        if (!a || !b || typeof a !== 'object' || typeof b !== 'object') {\n            return areItemsEqual(a, b, state);\n        }\n        var cache = state.cache;\n        var cachedA = cache.get(a);\n        var cachedB = cache.get(b);\n        if (cachedA && cachedB) {\n            return cachedA === b && cachedB === a;\n        }\n        cache.set(a, b);\n        cache.set(b, a);\n        var result = areItemsEqual(a, b, state);\n        cache.delete(a);\n        cache.delete(b);\n        return result;\n    };\n}\n/**\n * Get the properties to strictly examine, which include both own properties that are\n * not enumerable and symbol properties.\n */\nfunction getStrictProperties(object) {\n    return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));\n}\n/**\n * Whether the object contains the property passed as an own property.\n */\nvar hasOwn = Object.hasOwn ||\n    (function (object, property) {\n        return hasOwnProperty.call(object, property);\n    });\n/**\n * Whether the values passed are strictly equal or both NaN.\n */\nfunction sameValueZeroEqual(a, b) {\n    return a || b ? a === b : a === b || (a !== a && b !== b);\n}\n\nvar OWNER = '_owner';\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, keys = Object.keys;\n/**\n * Whether the arrays are equal in value.\n */\nfunction areArraysEqual(a, b, state) {\n    var index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (!state.equals(a[index], b[index], index, index, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the dates passed are equal in value.\n */\nfunction areDatesEqual(a, b) {\n    return sameValueZeroEqual(a.getTime(), b.getTime());\n}\n/**\n * Whether the `Map`s are equal in value.\n */\nfunction areMapsEqual(a, b, state) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    var matchedIndices = {};\n    var aIterable = a.entries();\n    var index = 0;\n    var aResult;\n    var bResult;\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        var bIterable = b.entries();\n        var hasMatch = false;\n        var matchIndex = 0;\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            var _a = aResult.value, aKey = _a[0], aValue = _a[1];\n            var _b = bResult.value, bKey = _b[0], bValue = _b[1];\n            if (!hasMatch &&\n                !matchedIndices[matchIndex] &&\n                (hasMatch =\n                    state.equals(aKey, bKey, index, matchIndex, a, b, state) &&\n                        state.equals(aValue, bValue, aKey, bKey, a, b, state))) {\n                matchedIndices[matchIndex] = true;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n        index++;\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value.\n */\nfunction areObjectsEqual(a, b, state) {\n    var properties = keys(a);\n    var index = properties.length;\n    if (keys(b).length !== index) {\n        return false;\n    }\n    var property;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (property === OWNER &&\n            (a.$$typeof || b.$$typeof) &&\n            a.$$typeof !== b.$$typeof) {\n            return false;\n        }\n        if (!hasOwn(b, property) ||\n            !state.equals(a[property], b[property], property, property, a, b, state)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the objects are equal in value with strict property checking.\n */\nfunction areObjectsEqualStrict(a, b, state) {\n    var properties = getStrictProperties(a);\n    var index = properties.length;\n    if (getStrictProperties(b).length !== index) {\n        return false;\n    }\n    var property;\n    var descriptorA;\n    var descriptorB;\n    // Decrementing `while` showed faster results than either incrementing or\n    // decrementing `for` loop and than an incrementing `while` loop. Declarative\n    // methods like `some` / `every` were not used to avoid incurring the garbage\n    // cost of anonymous callbacks.\n    while (index-- > 0) {\n        property = properties[index];\n        if (property === OWNER &&\n            (a.$$typeof || b.$$typeof) &&\n            a.$$typeof !== b.$$typeof) {\n            return false;\n        }\n        if (!hasOwn(b, property)) {\n            return false;\n        }\n        if (!state.equals(a[property], b[property], property, property, a, b, state)) {\n            return false;\n        }\n        descriptorA = getOwnPropertyDescriptor(a, property);\n        descriptorB = getOwnPropertyDescriptor(b, property);\n        if ((descriptorA || descriptorB) &&\n            (!descriptorA ||\n                !descriptorB ||\n                descriptorA.configurable !== descriptorB.configurable ||\n                descriptorA.enumerable !== descriptorB.enumerable ||\n                descriptorA.writable !== descriptorB.writable)) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the primitive wrappers passed are equal in value.\n */\nfunction arePrimitiveWrappersEqual(a, b) {\n    return sameValueZeroEqual(a.valueOf(), b.valueOf());\n}\n/**\n * Whether the regexps passed are equal in value.\n */\nfunction areRegExpsEqual(a, b) {\n    return a.source === b.source && a.flags === b.flags;\n}\n/**\n * Whether the `Set`s are equal in value.\n */\nfunction areSetsEqual(a, b, state) {\n    if (a.size !== b.size) {\n        return false;\n    }\n    var matchedIndices = {};\n    var aIterable = a.values();\n    var aResult;\n    var bResult;\n    while ((aResult = aIterable.next())) {\n        if (aResult.done) {\n            break;\n        }\n        var bIterable = b.values();\n        var hasMatch = false;\n        var matchIndex = 0;\n        while ((bResult = bIterable.next())) {\n            if (bResult.done) {\n                break;\n            }\n            if (!hasMatch &&\n                !matchedIndices[matchIndex] &&\n                (hasMatch = state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state))) {\n                matchedIndices[matchIndex] = true;\n            }\n            matchIndex++;\n        }\n        if (!hasMatch) {\n            return false;\n        }\n    }\n    return true;\n}\n/**\n * Whether the TypedArray instances are equal in value.\n */\nfunction areTypedArraysEqual(a, b) {\n    var index = a.length;\n    if (b.length !== index) {\n        return false;\n    }\n    while (index-- > 0) {\n        if (a[index] !== b[index]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nvar ARGUMENTS_TAG = '[object Arguments]';\nvar BOOLEAN_TAG = '[object Boolean]';\nvar DATE_TAG = '[object Date]';\nvar MAP_TAG = '[object Map]';\nvar NUMBER_TAG = '[object Number]';\nvar OBJECT_TAG = '[object Object]';\nvar REG_EXP_TAG = '[object RegExp]';\nvar SET_TAG = '[object Set]';\nvar STRING_TAG = '[object String]';\nvar isArray = Array.isArray;\nvar isTypedArray = typeof ArrayBuffer === 'function' && ArrayBuffer.isView\n    ? ArrayBuffer.isView\n    : null;\nvar assign = Object.assign;\nvar getTag = Object.prototype.toString.call.bind(Object.prototype.toString);\n/**\n * Create a comparator method based on the type-specific equality comparators passed.\n */\nfunction createEqualityComparator(_a) {\n    var areArraysEqual = _a.areArraysEqual, areDatesEqual = _a.areDatesEqual, areMapsEqual = _a.areMapsEqual, areObjectsEqual = _a.areObjectsEqual, arePrimitiveWrappersEqual = _a.arePrimitiveWrappersEqual, areRegExpsEqual = _a.areRegExpsEqual, areSetsEqual = _a.areSetsEqual, areTypedArraysEqual = _a.areTypedArraysEqual;\n    /**\n     * compare the value of the two objects and return true if they are equivalent in values\n     */\n    return function comparator(a, b, state) {\n        // If the items are strictly equal, no need to do a value comparison.\n        if (a === b) {\n            return true;\n        }\n        // If the items are not non-nullish objects, then the only possibility\n        // of them being equal but not strictly is if they are both `NaN`. Since\n        // `NaN` is uniquely not equal to itself, we can use self-comparison of\n        // both objects, which is faster than `isNaN()`.\n        if (a == null ||\n            b == null ||\n            typeof a !== 'object' ||\n            typeof b !== 'object') {\n            return a !== a && b !== b;\n        }\n        var constructor = a.constructor;\n        // Checks are listed in order of commonality of use-case:\n        //   1. Common complex object types (plain object, array)\n        //   2. Common data values (date, regexp)\n        //   3. Less-common complex object types (map, set)\n        //   4. Less-common data values (promise, primitive wrappers)\n        // Inherently this is both subjective and assumptive, however\n        // when reviewing comparable libraries in the wild this order\n        // appears to be generally consistent.\n        // Constructors should match, otherwise there is potential for false positives\n        // between class and subclass or custom object and POJO.\n        if (constructor !== b.constructor) {\n            return false;\n        }\n        // `isPlainObject` only checks against the object's own realm. Cross-realm\n        // comparisons are rare, and will be handled in the ultimate fallback, so\n        // we can avoid capturing the string tag.\n        if (constructor === Object) {\n            return areObjectsEqual(a, b, state);\n        }\n        // `isArray()` works on subclasses and is cross-realm, so we can avoid capturing\n        // the string tag or doing an `instanceof` check.\n        if (isArray(a)) {\n            return areArraysEqual(a, b, state);\n        }\n        // `isTypedArray()` works on all possible TypedArray classes, so we can avoid\n        // capturing the string tag or comparing against all possible constructors.\n        if (isTypedArray != null && isTypedArray(a)) {\n            return areTypedArraysEqual(a, b, state);\n        }\n        // Try to fast-path equality checks for other complex object types in the\n        // same realm to avoid capturing the string tag. Strict equality is used\n        // instead of `instanceof` because it is more performant for the common\n        // use-case. If someone is subclassing a native class, it will be handled\n        // with the string tag comparison.\n        if (constructor === Date) {\n            return areDatesEqual(a, b, state);\n        }\n        if (constructor === RegExp) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (constructor === Map) {\n            return areMapsEqual(a, b, state);\n        }\n        if (constructor === Set) {\n            return areSetsEqual(a, b, state);\n        }\n        // Since this is a custom object, capture the string tag to determing its type.\n        // This is reasonably performant in modern environments like v8 and SpiderMonkey.\n        var tag = getTag(a);\n        if (tag === DATE_TAG) {\n            return areDatesEqual(a, b, state);\n        }\n        if (tag === REG_EXP_TAG) {\n            return areRegExpsEqual(a, b, state);\n        }\n        if (tag === MAP_TAG) {\n            return areMapsEqual(a, b, state);\n        }\n        if (tag === SET_TAG) {\n            return areSetsEqual(a, b, state);\n        }\n        if (tag === OBJECT_TAG) {\n            // The exception for value comparison is custom `Promise`-like class instances. These should\n            // be treated the same as standard `Promise` objects, which means strict equality, and if\n            // it reaches this point then that strict equality comparison has already failed.\n            return (typeof a.then !== 'function' &&\n                typeof b.then !== 'function' &&\n                areObjectsEqual(a, b, state));\n        }\n        // If an arguments tag, it should be treated as a standard object.\n        if (tag === ARGUMENTS_TAG) {\n            return areObjectsEqual(a, b, state);\n        }\n        // As the penultimate fallback, check if the values passed are primitive wrappers. This\n        // is very rare in modern JS, which is why it is deprioritized compared to all other object\n        // types.\n        if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {\n            return arePrimitiveWrappersEqual(a, b, state);\n        }\n        // If not matching any tags that require a specific type of comparison, then we hard-code false because\n        // the only thing remaining is strict equality, which has already been compared. This is for a few reasons:\n        //   - Certain types that cannot be introspected (e.g., `WeakMap`). For these types, this is the only\n        //     comparison that can be made.\n        //   - For types that can be introspected, but rarely have requirements to be compared\n        //     (`ArrayBuffer`, `DataView`, etc.), the cost is avoided to prioritize the common\n        //     use-cases (may be included in a future release, if requested enough).\n        //   - For types that can be introspected but do not have an objective definition of what\n        //     equality is (`Error`, etc.), the subjective decision is to be conservative and strictly compare.\n        // In all cases, these decisions should be reevaluated based on changes to the language and\n        // common development practices.\n        return false;\n    };\n}\n/**\n * Create the configuration object used for building comparators.\n */\nfunction createEqualityComparatorConfig(_a) {\n    var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;\n    var config = {\n        areArraysEqual: strict\n            ? areObjectsEqualStrict\n            : areArraysEqual,\n        areDatesEqual: areDatesEqual,\n        areMapsEqual: strict\n            ? combineComparators(areMapsEqual, areObjectsEqualStrict)\n            : areMapsEqual,\n        areObjectsEqual: strict\n            ? areObjectsEqualStrict\n            : areObjectsEqual,\n        arePrimitiveWrappersEqual: arePrimitiveWrappersEqual,\n        areRegExpsEqual: areRegExpsEqual,\n        areSetsEqual: strict\n            ? combineComparators(areSetsEqual, areObjectsEqualStrict)\n            : areSetsEqual,\n        areTypedArraysEqual: strict\n            ? areObjectsEqualStrict\n            : areTypedArraysEqual,\n    };\n    if (createCustomConfig) {\n        config = assign({}, config, createCustomConfig(config));\n    }\n    if (circular) {\n        var areArraysEqual$1 = createIsCircular(config.areArraysEqual);\n        var areMapsEqual$1 = createIsCircular(config.areMapsEqual);\n        var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);\n        var areSetsEqual$1 = createIsCircular(config.areSetsEqual);\n        config = assign({}, config, {\n            areArraysEqual: areArraysEqual$1,\n            areMapsEqual: areMapsEqual$1,\n            areObjectsEqual: areObjectsEqual$1,\n            areSetsEqual: areSetsEqual$1,\n        });\n    }\n    return config;\n}\n/**\n * Default equality comparator pass-through, used as the standard `isEqual` creator for\n * use inside the built comparator.\n */\nfunction createInternalEqualityComparator(compare) {\n    return function (a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {\n        return compare(a, b, state);\n    };\n}\n/**\n * Create the `isEqual` function used by the consuming application.\n */\nfunction createIsEqual(_a) {\n    var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;\n    if (createState) {\n        return function isEqual(a, b) {\n            var _a = createState(), _b = _a.cache, cache = _b === void 0 ? circular ? new WeakMap() : undefined : _b, meta = _a.meta;\n            return comparator(a, b, {\n                cache: cache,\n                equals: equals,\n                meta: meta,\n                strict: strict,\n            });\n        };\n    }\n    if (circular) {\n        return function isEqual(a, b) {\n            return comparator(a, b, {\n                cache: new WeakMap(),\n                equals: equals,\n                meta: undefined,\n                strict: strict,\n            });\n        };\n    }\n    var state = {\n        cache: undefined,\n        equals: equals,\n        meta: undefined,\n        strict: strict,\n    };\n    return function isEqual(a, b) {\n        return comparator(a, b, state);\n    };\n}\n\n/**\n * Whether the items passed are deeply-equal in value.\n */\nvar deepEqual = createCustomEqual();\n/**\n * Whether the items passed are deeply-equal in value based on strict comparison.\n */\nvar strictDeepEqual = createCustomEqual({ strict: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references.\n */\nvar circularDeepEqual = createCustomEqual({ circular: true });\n/**\n * Whether the items passed are deeply-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularDeepEqual = createCustomEqual({\n    circular: true,\n    strict: true,\n});\n/**\n * Whether the items passed are shallowly-equal in value.\n */\nvar shallowEqual = createCustomEqual({\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value based on strict comparison\n */\nvar strictShallowEqual = createCustomEqual({\n    strict: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references.\n */\nvar circularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n});\n/**\n * Whether the items passed are shallowly-equal in value, including circular references,\n * based on strict comparison.\n */\nvar strictCircularShallowEqual = createCustomEqual({\n    circular: true,\n    createInternalComparator: function () { return sameValueZeroEqual; },\n    strict: true,\n});\n/**\n * Create a custom equality comparison method.\n *\n * This can be done to create very targeted comparisons in extreme hot-path scenarios\n * where the standard methods are not performant enough, but can also be used to provide\n * support for legacy environments that do not support expected features like\n * `RegExp.prototype.flags` out of the box.\n */\nfunction createCustomEqual(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;\n    var config = createEqualityComparatorConfig(options);\n    var comparator = createEqualityComparator(config);\n    var equals = createCustomInternalComparator\n        ? createCustomInternalComparator(comparator)\n        : createInternalEqualityComparator(comparator);\n    return createIsEqual({ circular: circular, comparator: comparator, createState: createState, equals: equals, strict: strict });\n}\n\nexport { circularDeepEqual, circularShallowEqual, createCustomEqual, deepEqual, sameValueZeroEqual, shallowEqual, strictCircularDeepEqual, strictCircularShallowEqual, strictDeepEqual, strictShallowEqual };\n//# sourceMappingURL=index.mjs.map\n","function safeRequestAnimationFrame(callback) {\n  if (typeof requestAnimationFrame !== 'undefined') requestAnimationFrame(callback);\n}\nexport default function setRafTimeout(callback) {\n  var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  var currTime = -1;\n  var shouldUpdate = function shouldUpdate(now) {\n    if (currTime < 0) {\n      currTime = now;\n    }\n    if (now - currTime > timeout) {\n      callback(now);\n      currTime = -1;\n    } else {\n      safeRequestAnimationFrame(shouldUpdate);\n    }\n  };\n  requestAnimationFrame(shouldUpdate);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n  var currStyle = {};\n  var handleChange = function handleChange() {\n    return null;\n  };\n  var shouldStop = false;\n  var setStyle = function setStyle(_style) {\n    if (shouldStop) {\n      return;\n    }\n    if (Array.isArray(_style)) {\n      if (!_style.length) {\n        return;\n      }\n      var styles = _style;\n      var _styles = _toArray(styles),\n        curr = _styles[0],\n        restStyles = _styles.slice(1);\n      if (typeof curr === 'number') {\n        setRafTimeout(setStyle.bind(null, restStyles), curr);\n        return;\n      }\n      setStyle(curr);\n      setRafTimeout(setStyle.bind(null, restStyles));\n      return;\n    }\n    if (_typeof(_style) === 'object') {\n      currStyle = _style;\n      handleChange(currStyle);\n    }\n    if (typeof _style === 'function') {\n      _style();\n    }\n  };\n  return {\n    stop: function stop() {\n      shouldStop = true;\n    },\n    start: function start(style) {\n      shouldStop = false;\n      setStyle(style);\n    },\n    subscribe: function subscribe(_handleChange) {\n      handleChange = _handleChange;\n      return function () {\n        handleChange = function handleChange() {\n          return null;\n        };\n      };\n    }\n  };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/* eslint no-console: 0 */\n\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n  return [Object.keys(preObj), Object.keys(nextObj)].reduce(function (a, b) {\n    return a.filter(function (c) {\n      return b.includes(c);\n    });\n  });\n};\nexport var identity = function identity(param) {\n  return param;\n};\n\n/*\n * @description: convert camel case to dash case\n * string => string\n */\nexport var getDashCase = function getDashCase(name) {\n  return name.replace(/([A-Z])/g, function (v) {\n    return \"-\".concat(v.toLowerCase());\n  });\n};\nexport var log = function log() {\n  var _console;\n  (_console = console).log.apply(_console, arguments);\n};\n\n/*\n * @description: log the value of a varible\n * string => any => any\n */\nexport var debug = function debug(name) {\n  return function (item) {\n    log(name, item);\n    return item;\n  };\n};\n\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\nexport var debugf = function debugf(tag, f) {\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var res = f.apply(void 0, args);\n    var name = tag || f.name || 'anonymous function';\n    var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n    log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n    return res;\n  };\n};\n\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\nexport var mapObject = function mapObject(fn, obj) {\n  return Object.keys(obj).reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, fn(key, obj[key])));\n  }, {});\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n  return props.map(function (prop) {\n    return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n  }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n  if (isDev && typeof console !== 'undefined' && console.warn) {\n    if (format === undefined) {\n      console.warn('LogUtils requires an error message argument');\n    }\n    if (!condition) {\n      if (format === undefined) {\n        console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n      } else {\n        var args = [a, b, c, d, e, f];\n        var argIndex = 0;\n        console.warn(format.replace(/%s/g, function () {\n          return args[argIndex++];\n        }));\n      }\n    }\n  }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n  return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\nvar multyTime = function multyTime(params, t) {\n  return params.map(function (param, i) {\n    return param * Math.pow(t, i);\n  }).reduce(function (pre, curr) {\n    return pre + curr;\n  });\n};\nvar cubicBezier = function cubicBezier(c1, c2) {\n  return function (t) {\n    var params = cubicBezierFactor(c1, c2);\n    return multyTime(params, t);\n  };\n};\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n  return function (t) {\n    var params = cubicBezierFactor(c1, c2);\n    var newParams = [].concat(_toConsumableArray(params.map(function (param, i) {\n      return param * i;\n    }).slice(1)), [0]);\n    return multyTime(newParams, t);\n  };\n};\n\n// calculate cubic-bezier using Newton's method\nexport var configBezier = function configBezier() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var x1 = args[0],\n    y1 = args[1],\n    x2 = args[2],\n    y2 = args[3];\n  if (args.length === 1) {\n    switch (args[0]) {\n      case 'linear':\n        x1 = 0.0;\n        y1 = 0.0;\n        x2 = 1.0;\n        y2 = 1.0;\n        break;\n      case 'ease':\n        x1 = 0.25;\n        y1 = 0.1;\n        x2 = 0.25;\n        y2 = 1.0;\n        break;\n      case 'ease-in':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 1.0;\n        y2 = 1.0;\n        break;\n      case 'ease-out':\n        x1 = 0.42;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      case 'ease-in-out':\n        x1 = 0.0;\n        y1 = 0.0;\n        x2 = 0.58;\n        y2 = 1.0;\n        break;\n      default:\n        {\n          var easing = args[0].split('(');\n          if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n            var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n              return parseFloat(x);\n            });\n            var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n            x1 = _easing$1$split$0$spl2[0];\n            y1 = _easing$1$split$0$spl2[1];\n            x2 = _easing$1$split$0$spl2[2];\n            y2 = _easing$1$split$0$spl2[3];\n          } else {\n            warn(false, '[configBezier]: arguments should be one of ' + \"oneOf 'linear', 'ease', 'ease-in', 'ease-out', \" + \"'ease-in-out','cubic-bezier(x1,y1,x2,y2)', instead received %s\", args);\n          }\n        }\n    }\n  }\n  warn([x1, x2, y1, y2].every(function (num) {\n    return typeof num === 'number' && num >= 0 && num <= 1;\n  }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n  var curveX = cubicBezier(x1, x2);\n  var curveY = cubicBezier(y1, y2);\n  var derCurveX = derivativeCubicBezier(x1, x2);\n  var rangeValue = function rangeValue(value) {\n    if (value > 1) {\n      return 1;\n    }\n    if (value < 0) {\n      return 0;\n    }\n    return value;\n  };\n  var bezier = function bezier(_t) {\n    var t = _t > 1 ? 1 : _t;\n    var x = t;\n    for (var i = 0; i < 8; ++i) {\n      var evalT = curveX(x) - t;\n      var derVal = derCurveX(x);\n      if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n        return curveY(x);\n      }\n      x = rangeValue(x - evalT / derVal);\n    }\n    return curveY(x);\n  };\n  bezier.isStepper = false;\n  return bezier;\n};\nexport var configSpring = function configSpring() {\n  var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _config$stiff = config.stiff,\n    stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n    _config$damping = config.damping,\n    damping = _config$damping === void 0 ? 8 : _config$damping,\n    _config$dt = config.dt,\n    dt = _config$dt === void 0 ? 17 : _config$dt;\n  var stepper = function stepper(currX, destX, currV) {\n    var FSpring = -(currX - destX) * stiff;\n    var FDamping = currV * damping;\n    var newV = currV + (FSpring - FDamping) * dt / 1000;\n    var newX = currV * dt / 1000 + currX;\n    if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n      return [destX, 0];\n    }\n    return [newX, newV];\n  };\n  stepper.isStepper = true;\n  stepper.dt = dt;\n  return stepper;\n};\nexport var configEasing = function configEasing() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  var easing = args[0];\n  if (typeof easing === 'string') {\n    switch (easing) {\n      case 'ease':\n      case 'ease-in-out':\n      case 'ease-out':\n      case 'ease-in':\n      case 'linear':\n        return configBezier(easing);\n      case 'spring':\n        return configSpring();\n      default:\n        if (easing.split('(')[0] === 'cubic-bezier') {\n          return configBezier(easing);\n        }\n        warn(false, \"[configEasing]: first argument should be one of 'ease', 'ease-in', \" + \"'ease-out', 'ease-in-out','cubic-bezier(x1,y1,x2,y2)', 'linear' and 'spring', instead  received %s\", args);\n    }\n  }\n  if (typeof easing === 'function') {\n    return easing;\n  }\n  warn(false, '[configEasing]: first argument type should be function or string, instead received %s', args);\n  return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport { getIntersectionKeys, mapObject } from './util';\nvar alpha = function alpha(begin, end, k) {\n  return begin + (end - begin) * k;\n};\nvar needContinue = function needContinue(_ref) {\n  var from = _ref.from,\n    to = _ref.to;\n  return from !== to;\n};\n\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n  var nextStepVals = mapObject(function (key, val) {\n    if (needContinue(val)) {\n      var _easing = easing(val.from, val.to, val.velocity),\n        _easing2 = _slicedToArray(_easing, 2),\n        newX = _easing2[0],\n        newV = _easing2[1];\n      return _objectSpread(_objectSpread({}, val), {}, {\n        from: newX,\n        velocity: newV\n      });\n    }\n    return val;\n  }, preVals);\n  if (steps < 1) {\n    return mapObject(function (key, val) {\n      if (needContinue(val)) {\n        return _objectSpread(_objectSpread({}, val), {}, {\n          velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n          from: alpha(val.from, nextStepVals[key].from, steps)\n        });\n      }\n      return val;\n    }, preVals);\n  }\n  return calStepperVals(easing, nextStepVals, steps - 1);\n};\n\n// configure update function\nexport default (function (from, to, easing, duration, render) {\n  var interKeys = getIntersectionKeys(from, to);\n  var timingStyle = interKeys.reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, [from[key], to[key]]));\n  }, {});\n  var stepperStyle = interKeys.reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, {\n      from: from[key],\n      velocity: 0,\n      to: to[key]\n    }));\n  }, {});\n  var cafId = -1;\n  var preTime;\n  var beginTime;\n  var update = function update() {\n    return null;\n  };\n  var getCurrStyle = function getCurrStyle() {\n    return mapObject(function (key, val) {\n      return val.from;\n    }, stepperStyle);\n  };\n  var shouldStopAnimation = function shouldStopAnimation() {\n    return !Object.values(stepperStyle).filter(needContinue).length;\n  };\n\n  // stepper timing function like spring\n  var stepperUpdate = function stepperUpdate(now) {\n    if (!preTime) {\n      preTime = now;\n    }\n    var deltaTime = now - preTime;\n    var steps = deltaTime / easing.dt;\n    stepperStyle = calStepperVals(easing, stepperStyle, steps);\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), getCurrStyle(stepperStyle)));\n    preTime = now;\n    if (!shouldStopAnimation()) {\n      cafId = requestAnimationFrame(update);\n    }\n  };\n\n  // t => val timing function like cubic-bezier\n  var timingUpdate = function timingUpdate(now) {\n    if (!beginTime) {\n      beginTime = now;\n    }\n    var t = (now - beginTime) / duration;\n    var currStyle = mapObject(function (key, val) {\n      return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n    }, timingStyle);\n\n    // get union set and add compatible prefix\n    render(_objectSpread(_objectSpread(_objectSpread({}, from), to), currStyle));\n    if (t < 1) {\n      cafId = requestAnimationFrame(update);\n    } else {\n      var finalStyle = mapObject(function (key, val) {\n        return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n      }, timingStyle);\n      render(_objectSpread(_objectSpread(_objectSpread({}, from), to), finalStyle));\n    }\n  };\n  update = easing.isStepper ? stepperUpdate : timingUpdate;\n\n  // return start animation method\n  return function () {\n    requestAnimationFrame(update);\n\n    // return stop animation method\n    return function () {\n      cancelAnimationFrame(cafId);\n    };\n  };\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(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]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { deepEqual } from 'fast-equals';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity } from './util';\nvar Animate = /*#__PURE__*/function (_PureComponent) {\n  _inherits(Animate, _PureComponent);\n  var _super = _createSuper(Animate);\n  function Animate(props, context) {\n    var _this;\n    _classCallCheck(this, Animate);\n    _this = _super.call(this, props, context);\n    var _this$props = _this.props,\n      isActive = _this$props.isActive,\n      attributeName = _this$props.attributeName,\n      from = _this$props.from,\n      to = _this$props.to,\n      steps = _this$props.steps,\n      children = _this$props.children,\n      duration = _this$props.duration;\n    _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_this));\n    _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_this));\n    if (!isActive || duration <= 0) {\n      _this.state = {\n        style: {}\n      };\n\n      // if children is a function and animation is not active, set style to 'to'\n      if (typeof children === 'function') {\n        _this.state = {\n          style: to\n        };\n      }\n      return _possibleConstructorReturn(_this);\n    }\n    if (steps && steps.length) {\n      _this.state = {\n        style: steps[0].style\n      };\n    } else if (from) {\n      if (typeof children === 'function') {\n        _this.state = {\n          style: from\n        };\n        return _possibleConstructorReturn(_this);\n      }\n      _this.state = {\n        style: attributeName ? _defineProperty({}, attributeName, from) : from\n      };\n    } else {\n      _this.state = {\n        style: {}\n      };\n    }\n    return _this;\n  }\n  _createClass(Animate, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props2 = this.props,\n        isActive = _this$props2.isActive,\n        canBegin = _this$props2.canBegin;\n      this.mounted = true;\n      if (!isActive || !canBegin) {\n        return;\n      }\n      this.runAnimation(this.props);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps) {\n      var _this$props3 = this.props,\n        isActive = _this$props3.isActive,\n        canBegin = _this$props3.canBegin,\n        attributeName = _this$props3.attributeName,\n        shouldReAnimate = _this$props3.shouldReAnimate,\n        to = _this$props3.to,\n        currentFrom = _this$props3.from;\n      var style = this.state.style;\n      if (!canBegin) {\n        return;\n      }\n      if (!isActive) {\n        var newState = {\n          style: attributeName ? _defineProperty({}, attributeName, to) : to\n        };\n        if (this.state && style) {\n          if (attributeName && style[attributeName] !== to || !attributeName && style !== to) {\n            // eslint-disable-next-line react/no-did-update-set-state\n            this.setState(newState);\n          }\n        }\n        return;\n      }\n      if (deepEqual(prevProps.to, to) && prevProps.canBegin && prevProps.isActive) {\n        return;\n      }\n      var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n      if (this.manager) {\n        this.manager.stop();\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      var from = isTriggered || shouldReAnimate ? currentFrom : prevProps.to;\n      if (this.state && style) {\n        var _newState = {\n          style: attributeName ? _defineProperty({}, attributeName, from) : from\n        };\n        if (attributeName && style[attributeName] !== from || !attributeName && style !== from) {\n          // eslint-disable-next-line react/no-did-update-set-state\n          this.setState(_newState);\n        }\n      }\n      this.runAnimation(_objectSpread(_objectSpread({}, this.props), {}, {\n        from: from,\n        begin: 0\n      }));\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.mounted = false;\n      var onAnimationEnd = this.props.onAnimationEnd;\n      if (this.unSubscribe) {\n        this.unSubscribe();\n      }\n      if (this.manager) {\n        this.manager.stop();\n        this.manager = null;\n      }\n      if (this.stopJSAnimation) {\n        this.stopJSAnimation();\n      }\n      if (onAnimationEnd) {\n        onAnimationEnd();\n      }\n    }\n  }, {\n    key: \"handleStyleChange\",\n    value: function handleStyleChange(style) {\n      this.changeStyle(style);\n    }\n  }, {\n    key: \"changeStyle\",\n    value: function changeStyle(style) {\n      if (this.mounted) {\n        this.setState({\n          style: style\n        });\n      }\n    }\n  }, {\n    key: \"runJSAnimation\",\n    value: function runJSAnimation(props) {\n      var _this2 = this;\n      var from = props.from,\n        to = props.to,\n        duration = props.duration,\n        easing = props.easing,\n        begin = props.begin,\n        onAnimationEnd = props.onAnimationEnd,\n        onAnimationStart = props.onAnimationStart;\n      var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n      var finalStartAnimation = function finalStartAnimation() {\n        _this2.stopJSAnimation = startAnimation();\n      };\n      this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n    }\n  }, {\n    key: \"runStepAnimation\",\n    value: function runStepAnimation(props) {\n      var _this3 = this;\n      var steps = props.steps,\n        begin = props.begin,\n        onAnimationStart = props.onAnimationStart;\n      var _steps$ = steps[0],\n        initialStyle = _steps$.style,\n        _steps$$duration = _steps$.duration,\n        initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n      var addStyle = function addStyle(sequence, nextItem, index) {\n        if (index === 0) {\n          return sequence;\n        }\n        var duration = nextItem.duration,\n          _nextItem$easing = nextItem.easing,\n          easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n          style = nextItem.style,\n          nextProperties = nextItem.properties,\n          onAnimationEnd = nextItem.onAnimationEnd;\n        var preItem = index > 0 ? steps[index - 1] : nextItem;\n        var properties = nextProperties || Object.keys(style);\n        if (typeof easing === 'function' || easing === 'spring') {\n          return [].concat(_toConsumableArray(sequence), [_this3.runJSAnimation.bind(_this3, {\n            from: preItem.style,\n            to: style,\n            duration: duration,\n            easing: easing\n          }), duration]);\n        }\n        var transition = getTransitionVal(properties, duration, easing);\n        var newStyle = _objectSpread(_objectSpread(_objectSpread({}, preItem.style), style), {}, {\n          transition: transition\n        });\n        return [].concat(_toConsumableArray(sequence), [newStyle, duration, onAnimationEnd]).filter(identity);\n      };\n      return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n    }\n  }, {\n    key: \"runAnimation\",\n    value: function runAnimation(props) {\n      if (!this.manager) {\n        this.manager = createAnimateManager();\n      }\n      var begin = props.begin,\n        duration = props.duration,\n        attributeName = props.attributeName,\n        propsTo = props.to,\n        easing = props.easing,\n        onAnimationStart = props.onAnimationStart,\n        onAnimationEnd = props.onAnimationEnd,\n        steps = props.steps,\n        children = props.children;\n      var manager = this.manager;\n      this.unSubscribe = manager.subscribe(this.handleStyleChange);\n      if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n        this.runJSAnimation(props);\n        return;\n      }\n      if (steps.length > 1) {\n        this.runStepAnimation(props);\n        return;\n      }\n      var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n      var transition = getTransitionVal(Object.keys(to), duration, easing);\n      manager.start([onAnimationStart, begin, _objectSpread(_objectSpread({}, to), {}, {\n        transition: transition\n      }), duration, onAnimationEnd]);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n        children = _this$props4.children,\n        begin = _this$props4.begin,\n        duration = _this$props4.duration,\n        attributeName = _this$props4.attributeName,\n        easing = _this$props4.easing,\n        isActive = _this$props4.isActive,\n        steps = _this$props4.steps,\n        from = _this$props4.from,\n        to = _this$props4.to,\n        canBegin = _this$props4.canBegin,\n        onAnimationEnd = _this$props4.onAnimationEnd,\n        shouldReAnimate = _this$props4.shouldReAnimate,\n        onAnimationReStart = _this$props4.onAnimationReStart,\n        others = _objectWithoutProperties(_this$props4, _excluded);\n      var count = Children.count(children);\n      // eslint-disable-next-line react/destructuring-assignment\n      var stateStyle = this.state.style;\n      if (typeof children === 'function') {\n        return children(stateStyle);\n      }\n      if (!isActive || count === 0 || duration <= 0) {\n        return children;\n      }\n      var cloneContainer = function cloneContainer(container) {\n        var _container$props = container.props,\n          _container$props$styl = _container$props.style,\n          style = _container$props$styl === void 0 ? {} : _container$props$styl,\n          className = _container$props.className;\n        var res = /*#__PURE__*/cloneElement(container, _objectSpread(_objectSpread({}, others), {}, {\n          style: _objectSpread(_objectSpread({}, style), stateStyle),\n          className: className\n        }));\n        return res;\n      };\n      if (count === 1) {\n        return cloneContainer(Children.only(children));\n      }\n      return /*#__PURE__*/React.createElement(\"div\", null, Children.map(children, function (child) {\n        return cloneContainer(child);\n      }));\n    }\n  }]);\n  return Animate;\n}(PureComponent);\nAnimate.displayName = 'Animate';\nAnimate.defaultProps = {\n  begin: 0,\n  duration: 1000,\n  from: '',\n  to: '',\n  attributeName: '',\n  easing: 'ease',\n  isActive: true,\n  canBegin: true,\n  steps: [],\n  onAnimationEnd: function onAnimationEnd() {},\n  onAnimationStart: function onAnimationStart() {}\n};\nAnimate.propTypes = {\n  from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n  attributeName: PropTypes.string,\n  // animation duration\n  duration: PropTypes.number,\n  begin: PropTypes.number,\n  easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n  steps: PropTypes.arrayOf(PropTypes.shape({\n    duration: PropTypes.number.isRequired,\n    style: PropTypes.object.isRequired,\n    easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n    // transition css properties(dash case), optional\n    properties: PropTypes.arrayOf('string'),\n    onAnimationEnd: PropTypes.func\n  })),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n  isActive: PropTypes.bool,\n  canBegin: PropTypes.bool,\n  onAnimationEnd: PropTypes.func,\n  // decide if it should reanimate with initial from style when props change\n  shouldReAnimate: PropTypes.bool,\n  onAnimationStart: PropTypes.func,\n  onAnimationReStart: PropTypes.func\n};\nexport default Animate;","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","export default {\n  disabled: false\n};","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","var _excluded = [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(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]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var steps = options.steps,\n    duration = options.duration;\n  if (steps && steps.length) {\n    return steps.reduce(function (result, entry) {\n      return result + (Number.isFinite(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n    }, 0);\n  }\n  if (Number.isFinite(duration)) {\n    return duration;\n  }\n  return 0;\n};\nvar AnimateGroupChild = /*#__PURE__*/function (_Component) {\n  _inherits(AnimateGroupChild, _Component);\n  var _super = _createSuper(AnimateGroupChild);\n  function AnimateGroupChild() {\n    var _this;\n    _classCallCheck(this, AnimateGroupChild);\n    _this = _super.call(this);\n    _defineProperty(_assertThisInitialized(_this), \"handleEnter\", function (node, isAppearing) {\n      var _this$props = _this.props,\n        appearOptions = _this$props.appearOptions,\n        enterOptions = _this$props.enterOptions;\n      _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"handleExit\", function () {\n      var leaveOptions = _this.props.leaveOptions;\n      _this.handleStyleActive(leaveOptions);\n    });\n    _this.state = {\n      isActive: false\n    };\n    return _this;\n  }\n  _createClass(AnimateGroupChild, [{\n    key: \"handleStyleActive\",\n    value: function handleStyleActive(style) {\n      if (style) {\n        var onAnimationEnd = style.onAnimationEnd ? function () {\n          style.onAnimationEnd();\n        } : null;\n        this.setState(_objectSpread(_objectSpread({}, style), {}, {\n          onAnimationEnd: onAnimationEnd,\n          isActive: true\n        }));\n      }\n    }\n  }, {\n    key: \"parseTimeout\",\n    value: function parseTimeout() {\n      var _this$props2 = this.props,\n        appearOptions = _this$props2.appearOptions,\n        enterOptions = _this$props2.enterOptions,\n        leaveOptions = _this$props2.leaveOptions;\n      return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$props3 = this.props,\n        children = _this$props3.children,\n        appearOptions = _this$props3.appearOptions,\n        enterOptions = _this$props3.enterOptions,\n        leaveOptions = _this$props3.leaveOptions,\n        props = _objectWithoutProperties(_this$props3, _excluded);\n      return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n        onEnter: this.handleEnter,\n        onExit: this.handleExit,\n        timeout: this.parseTimeout()\n      }), function () {\n        return /*#__PURE__*/React.createElement(Animate, _this2.state, Children.only(children));\n      });\n    }\n  }]);\n  return AnimateGroupChild;\n}(Component);\nAnimateGroupChild.propTypes = {\n  appearOptions: PropTypes.object,\n  enterOptions: PropTypes.object,\n  leaveOptions: PropTypes.object,\n  children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\nfunction AnimateGroup(props) {\n  var component = props.component,\n    children = props.children,\n    appear = props.appear,\n    enter = props.enter,\n    leave = props.leave;\n  return /*#__PURE__*/React.createElement(TransitionGroup, {\n    component: component\n  }, Children.map(children, function (child, index) {\n    return /*#__PURE__*/React.createElement(AnimateGroupChild, {\n      appearOptions: appear,\n      enterOptions: enter,\n      leaveOptions: leave,\n      key: \"child-\".concat(index) // eslint-disable-line\n    }, child);\n  }));\n}\nAnimateGroup.propTypes = {\n  appear: PropTypes.object,\n  enter: PropTypes.object,\n  leave: PropTypes.object,\n  children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n  component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n  component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup };\nexport default Animate;","var _excluded = [\"x\", \"y\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Shape } from './ActiveShapeUtils';\n\n// Rectangle props is expecting x, y, height, width as numbers, name as a string, and radius as a custom type\n// When props are being spread in from a user defined component in Bar,\n// the prop types of an SVGElement have these typed as something else.\n// This function will return the passed in props\n// along with x, y, height as numbers, name as a string, and radius as number | [number, number, number, number]\nfunction typeguardBarRectangleProps(_ref, props) {\n  var xProp = _ref.x,\n    yProp = _ref.y,\n    option = _objectWithoutProperties(_ref, _excluded);\n  var xValue = \"\".concat(xProp);\n  var x = parseInt(xValue, 10);\n  var yValue = \"\".concat(yProp);\n  var y = parseInt(yValue, 10);\n  var heightValue = \"\".concat(props.height || option.height);\n  var height = parseInt(heightValue, 10);\n  var widthValue = \"\".concat(props.width || option.width);\n  var width = parseInt(widthValue, 10);\n  return _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), option), x ? {\n    x: x\n  } : {}), y ? {\n    y: y\n  } : {}), {}, {\n    height: height,\n    width: width,\n    name: props.name,\n    radius: props.radius\n  });\n}\nexport function BarRectangle(props) {\n  return /*#__PURE__*/React.createElement(Shape, _extends({\n    shapeType: \"rectangle\",\n    propTransformer: typeguardBarRectangleProps,\n    activeClassName: \"recharts-active-bar\"\n  }, props));\n}\n/**\n * Safely gets minPointSize from from the minPointSize prop if it is a function\n * @param minPointSize minPointSize as passed to the Bar component\n * @param defaultValue default minPointSize\n * @returns minPointSize\n */\nexport var minPointSizeCallback = function minPointSizeCallback(minPointSize) {\n  var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  return function (value, index) {\n    if (typeof minPointSize === 'number') return minPointSize;\n    var isValueNumber = typeof value === 'number';\n    if (isValueNumber) {\n      return minPointSize(value, index);\n    }\n    !isValueNumber ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"minPointSize callback function received a value with type of \".concat(_typeof(value), \". Currently only numbers are supported.\")) : invariant(false) : void 0;\n    return defaultValue;\n  };\n};","var _excluded = [\"value\", \"background\"];\nvar _Bar;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport isEqual from 'lodash/isEqual';\nimport isNil from 'lodash/isNil';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { filterProps, findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { BarRectangle, minPointSizeCallback } from '../util/BarUtils';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n  function Bar() {\n    var _this;\n    _classCallCheck(this, Bar);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _callSuper(this, Bar, [].concat(args));\n    _defineProperty(_this, \"state\", {\n      isAnimationFinished: false\n    });\n    _defineProperty(_this, \"id\", uniqueId('recharts-bar-'));\n    _defineProperty(_this, \"handleAnimationEnd\", function () {\n      var onAnimationEnd = _this.props.onAnimationEnd;\n      _this.setState({\n        isAnimationFinished: true\n      });\n      if (onAnimationEnd) {\n        onAnimationEnd();\n      }\n    });\n    _defineProperty(_this, \"handleAnimationStart\", function () {\n      var onAnimationStart = _this.props.onAnimationStart;\n      _this.setState({\n        isAnimationFinished: false\n      });\n      if (onAnimationStart) {\n        onAnimationStart();\n      }\n    });\n    return _this;\n  }\n  _inherits(Bar, _PureComponent);\n  return _createClass(Bar, [{\n    key: \"renderRectanglesStatically\",\n    value: function renderRectanglesStatically(data) {\n      var _this2 = this;\n      var _this$props = this.props,\n        shape = _this$props.shape,\n        dataKey = _this$props.dataKey,\n        activeIndex = _this$props.activeIndex,\n        activeBar = _this$props.activeBar;\n      var baseProps = filterProps(this.props, false);\n      return data && data.map(function (entry, i) {\n        var isActive = i === activeIndex;\n        var option = isActive ? activeBar : shape;\n        var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n          isActive: isActive,\n          option: option,\n          index: i,\n          dataKey: dataKey,\n          onAnimationStart: _this2.handleAnimationStart,\n          onAnimationEnd: _this2.handleAnimationEnd\n        });\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-bar-rectangle\"\n        }, adaptEventsOfChild(_this2.props, entry, i), {\n          key: \"rectangle-\".concat(entry === null || entry === void 0 ? void 0 : entry.x, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.y, \"-\").concat(entry === null || entry === void 0 ? void 0 : entry.value)\n        }), /*#__PURE__*/React.createElement(BarRectangle, props));\n      });\n    }\n  }, {\n    key: \"renderRectanglesWithAnimation\",\n    value: function renderRectanglesWithAnimation() {\n      var _this3 = this;\n      var _this$props2 = this.props,\n        data = _this$props2.data,\n        layout = _this$props2.layout,\n        isAnimationActive = _this$props2.isAnimationActive,\n        animationBegin = _this$props2.animationBegin,\n        animationDuration = _this$props2.animationDuration,\n        animationEasing = _this$props2.animationEasing,\n        animationId = _this$props2.animationId;\n      var prevData = this.state.prevData;\n      return /*#__PURE__*/React.createElement(Animate, {\n        begin: animationBegin,\n        duration: animationDuration,\n        isActive: isAnimationActive,\n        easing: animationEasing,\n        from: {\n          t: 0\n        },\n        to: {\n          t: 1\n        },\n        key: \"bar-\".concat(animationId),\n        onAnimationEnd: this.handleAnimationEnd,\n        onAnimationStart: this.handleAnimationStart\n      }, function (_ref) {\n        var t = _ref.t;\n        var stepData = data.map(function (entry, index) {\n          var prev = prevData && prevData[index];\n          if (prev) {\n            var interpolatorX = interpolateNumber(prev.x, entry.x);\n            var interpolatorY = interpolateNumber(prev.y, entry.y);\n            var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n            var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n            return _objectSpread(_objectSpread({}, entry), {}, {\n              x: interpolatorX(t),\n              y: interpolatorY(t),\n              width: interpolatorWidth(t),\n              height: interpolatorHeight(t)\n            });\n          }\n          if (layout === 'horizontal') {\n            var _interpolatorHeight = interpolateNumber(0, entry.height);\n            var h = _interpolatorHeight(t);\n            return _objectSpread(_objectSpread({}, entry), {}, {\n              y: entry.y + entry.height - h,\n              height: h\n            });\n          }\n          var interpolator = interpolateNumber(0, entry.width);\n          var w = interpolator(t);\n          return _objectSpread(_objectSpread({}, entry), {}, {\n            width: w\n          });\n        });\n        return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n      });\n    }\n  }, {\n    key: \"renderRectangles\",\n    value: function renderRectangles() {\n      var _this$props3 = this.props,\n        data = _this$props3.data,\n        isAnimationActive = _this$props3.isAnimationActive;\n      var prevData = this.state.prevData;\n      if (isAnimationActive && data && data.length && (!prevData || !isEqual(prevData, data))) {\n        return this.renderRectanglesWithAnimation();\n      }\n      return this.renderRectanglesStatically(data);\n    }\n  }, {\n    key: \"renderBackground\",\n    value: function renderBackground() {\n      var _this4 = this;\n      var _this$props4 = this.props,\n        data = _this$props4.data,\n        dataKey = _this$props4.dataKey,\n        activeIndex = _this$props4.activeIndex;\n      var backgroundProps = filterProps(this.props.background, false);\n      return data.map(function (entry, i) {\n        var value = entry.value,\n          background = entry.background,\n          rest = _objectWithoutProperties(entry, _excluded);\n        if (!background) {\n          return null;\n        }\n        var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n          fill: '#eee'\n        }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n          onAnimationStart: _this4.handleAnimationStart,\n          onAnimationEnd: _this4.handleAnimationEnd,\n          dataKey: dataKey,\n          index: i,\n          className: 'recharts-bar-background-rectangle'\n        });\n        return /*#__PURE__*/React.createElement(BarRectangle, _extends({\n          key: \"background-bar-\".concat(i),\n          option: _this4.props.background,\n          isActive: i === activeIndex\n        }, props));\n      });\n    }\n  }, {\n    key: \"renderErrorBar\",\n    value: function renderErrorBar(needClip, clipPathId) {\n      if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n        return null;\n      }\n      var _this$props5 = this.props,\n        data = _this$props5.data,\n        xAxis = _this$props5.xAxis,\n        yAxis = _this$props5.yAxis,\n        layout = _this$props5.layout,\n        children = _this$props5.children;\n      var errorBarItems = findAllByType(children, ErrorBar);\n      if (!errorBarItems) {\n        return null;\n      }\n      var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n      var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n        /**\n         * if the value coming from `getComposedData` is an array then this is a stacked bar chart.\n         * arr[1] represents end value of the bar since the data is in the form of [startValue, endValue].\n         * */\n        var value = Array.isArray(dataPoint.value) ? dataPoint.value[1] : dataPoint.value;\n        return {\n          x: dataPoint.x,\n          y: dataPoint.y,\n          value: value,\n          errorVal: getValueByDataKey(dataPoint, dataKey)\n        };\n      };\n      var errorBarProps = {\n        clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n      };\n      return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item) {\n        return /*#__PURE__*/React.cloneElement(item, {\n          key: \"error-bar-\".concat(clipPathId, \"-\").concat(item.props.dataKey),\n          data: data,\n          xAxis: xAxis,\n          yAxis: yAxis,\n          layout: layout,\n          offset: offset,\n          dataPointFormatter: dataPointFormatter\n        });\n      }));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props6 = this.props,\n        hide = _this$props6.hide,\n        data = _this$props6.data,\n        className = _this$props6.className,\n        xAxis = _this$props6.xAxis,\n        yAxis = _this$props6.yAxis,\n        left = _this$props6.left,\n        top = _this$props6.top,\n        width = _this$props6.width,\n        height = _this$props6.height,\n        isAnimationActive = _this$props6.isAnimationActive,\n        background = _this$props6.background,\n        id = _this$props6.id;\n      if (hide || !data || !data.length) {\n        return null;\n      }\n      var isAnimationFinished = this.state.isAnimationFinished;\n      var layerClass = clsx('recharts-bar', className);\n      var needClipX = xAxis && xAxis.allowDataOverflow;\n      var needClipY = yAxis && yAxis.allowDataOverflow;\n      var needClip = needClipX || needClipY;\n      var clipPathId = isNil(id) ? this.id : id;\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass\n      }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n        id: \"clipPath-\".concat(clipPathId)\n      }, /*#__PURE__*/React.createElement(\"rect\", {\n        x: needClipX ? left : left - width / 2,\n        y: needClipY ? top : top - height / 2,\n        width: needClipX ? width : width * 2,\n        height: needClipY ? height : height * 2\n      }))) : null, /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-bar-rectangles\",\n        clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n      }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      if (nextProps.animationId !== prevState.prevAnimationId) {\n        return {\n          prevAnimationId: nextProps.animationId,\n          curData: nextProps.data,\n          prevData: prevState.curData\n        };\n      }\n      if (nextProps.data !== prevState.curData) {\n        return {\n          curData: nextProps.data\n        };\n      }\n      return null;\n    }\n  }]);\n}(PureComponent);\n_Bar = Bar;\n_defineProperty(Bar, \"displayName\", 'Bar');\n_defineProperty(Bar, \"defaultProps\", {\n  xAxisId: 0,\n  yAxisId: 0,\n  legendType: 'rect',\n  minPointSize: 0,\n  hide: false,\n  data: [],\n  layout: 'vertical',\n  activeBar: false,\n  isAnimationActive: !Global.isSsr,\n  animationBegin: 0,\n  animationDuration: 400,\n  animationEasing: 'ease'\n});\n/**\n * Compose the data of each group\n * @param {Object} props Props for the component\n * @param {Object} item        An instance of Bar\n * @param {Array} barPosition  The offset and size of each bar\n * @param {Object} xAxis       The configuration of x-axis\n * @param {Object} yAxis       The configuration of y-axis\n * @param {Array} stackedData  The stacked data of a bar item\n * @return{Array} Composed data\n */\n_defineProperty(Bar, \"getComposedData\", function (_ref2) {\n  var props = _ref2.props,\n    item = _ref2.item,\n    barPosition = _ref2.barPosition,\n    bandSize = _ref2.bandSize,\n    xAxis = _ref2.xAxis,\n    yAxis = _ref2.yAxis,\n    xAxisTicks = _ref2.xAxisTicks,\n    yAxisTicks = _ref2.yAxisTicks,\n    stackedData = _ref2.stackedData,\n    dataStartIndex = _ref2.dataStartIndex,\n    displayedData = _ref2.displayedData,\n    offset = _ref2.offset;\n  var pos = findPositionOfBar(barPosition, item);\n  if (!pos) {\n    return null;\n  }\n  var layout = props.layout;\n  var itemDefaultProps = item.type.defaultProps;\n  var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : item.props;\n  var dataKey = itemProps.dataKey,\n    children = itemProps.children,\n    minPointSizeProp = itemProps.minPointSize;\n  var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n  var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n  var baseValue = getBaseValueOfBar({\n    numericAxis: numericAxis\n  });\n  var cells = findAllByType(children, Cell);\n  var rects = displayedData.map(function (entry, index) {\n    var value, x, y, width, height, background;\n    if (stackedData) {\n      value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n    } else {\n      value = getValueByDataKey(entry, dataKey);\n      if (!Array.isArray(value)) {\n        value = [baseValue, value];\n      }\n    }\n    var minPointSize = minPointSizeCallback(minPointSizeProp, _Bar.defaultProps.minPointSize)(value[1], index);\n    if (layout === 'horizontal') {\n      var _ref4;\n      var _ref3 = [yAxis.scale(value[0]), yAxis.scale(value[1])],\n        baseValueScale = _ref3[0],\n        currentValueScale = _ref3[1];\n      x = getCateCoordinateOfBar({\n        axis: xAxis,\n        ticks: xAxisTicks,\n        bandSize: bandSize,\n        offset: pos.offset,\n        entry: entry,\n        index: index\n      });\n      y = (_ref4 = currentValueScale !== null && currentValueScale !== void 0 ? currentValueScale : baseValueScale) !== null && _ref4 !== void 0 ? _ref4 : undefined;\n      width = pos.size;\n      var computedHeight = baseValueScale - currentValueScale;\n      height = Number.isNaN(computedHeight) ? 0 : computedHeight;\n      background = {\n        x: x,\n        y: yAxis.y,\n        width: width,\n        height: yAxis.height\n      };\n      if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n        var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n        y -= delta;\n        height += delta;\n      }\n    } else {\n      var _ref5 = [xAxis.scale(value[0]), xAxis.scale(value[1])],\n        _baseValueScale = _ref5[0],\n        _currentValueScale = _ref5[1];\n      x = _baseValueScale;\n      y = getCateCoordinateOfBar({\n        axis: yAxis,\n        ticks: yAxisTicks,\n        bandSize: bandSize,\n        offset: pos.offset,\n        entry: entry,\n        index: index\n      });\n      width = _currentValueScale - _baseValueScale;\n      height = pos.size;\n      background = {\n        x: xAxis.x,\n        y: y,\n        width: xAxis.width,\n        height: height\n      };\n      if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n        var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n        width += _delta;\n      }\n    }\n    return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n      x: x,\n      y: y,\n      width: width,\n      height: height,\n      value: stackedData ? value : value[1],\n      payload: entry,\n      background: background\n    }, cells && cells[index] && cells[index].props), {}, {\n      tooltipPayload: [getTooltipItem(item, entry)],\n      tooltipPosition: {\n        x: x + width / 2,\n        y: y + height / 2\n      }\n    });\n  });\n  return _objectSpread({\n    data: rects,\n    layout: layout\n  }, offset);\n});","var _excluded = [\"viewBox\"],\n  _excluded2 = [\"viewBox\"],\n  _excluded3 = [\"ticks\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport get from 'lodash/get';\nimport clsx from 'clsx';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { isNumber } from '../util/DataUtils';\nimport { adaptEventsOfChild } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { getTicks } from './getTicks';\n\n/** The orientation of the axis in correspondence to the chart */\n\n/** A unit to be appended to a value */\n\n/** The formatter function of tick */\n\nexport var CartesianAxis = /*#__PURE__*/function (_Component) {\n  function CartesianAxis(props) {\n    var _this;\n    _classCallCheck(this, CartesianAxis);\n    _this = _callSuper(this, CartesianAxis, [props]);\n    _this.state = {\n      fontSize: '',\n      letterSpacing: ''\n    };\n    return _this;\n  }\n  _inherits(CartesianAxis, _Component);\n  return _createClass(CartesianAxis, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(_ref, nextState) {\n      var viewBox = _ref.viewBox,\n        restProps = _objectWithoutProperties(_ref, _excluded);\n      // props.viewBox is sometimes generated every time -\n      // check that specially as object equality is likely to fail\n      var _this$props = this.props,\n        viewBoxOld = _this$props.viewBox,\n        restPropsOld = _objectWithoutProperties(_this$props, _excluded2);\n      return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(nextState, this.state);\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var htmlLayer = this.layerReference;\n      if (!htmlLayer) return;\n      var tick = htmlLayer.getElementsByClassName('recharts-cartesian-axis-tick-value')[0];\n      if (tick) {\n        this.setState({\n          fontSize: window.getComputedStyle(tick).fontSize,\n          letterSpacing: window.getComputedStyle(tick).letterSpacing\n        });\n      }\n    }\n\n    /**\n     * Calculate the coordinates of endpoints in ticks\n     * @param  {Object} data The data of a simple tick\n     * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n     *  (x2, y2): The coordinate of endpoint close to axis\n     */\n  }, {\n    key: \"getTickLineCoord\",\n    value: function getTickLineCoord(data) {\n      var _this$props2 = this.props,\n        x = _this$props2.x,\n        y = _this$props2.y,\n        width = _this$props2.width,\n        height = _this$props2.height,\n        orientation = _this$props2.orientation,\n        tickSize = _this$props2.tickSize,\n        mirror = _this$props2.mirror,\n        tickMargin = _this$props2.tickMargin;\n      var x1, x2, y1, y2, tx, ty;\n      var sign = mirror ? -1 : 1;\n      var finalTickSize = data.tickSize || tickSize;\n      var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n      switch (orientation) {\n        case 'top':\n          x1 = x2 = data.coordinate;\n          y2 = y + +!mirror * height;\n          y1 = y2 - sign * finalTickSize;\n          ty = y1 - sign * tickMargin;\n          tx = tickCoord;\n          break;\n        case 'left':\n          y1 = y2 = data.coordinate;\n          x2 = x + +!mirror * width;\n          x1 = x2 - sign * finalTickSize;\n          tx = x1 - sign * tickMargin;\n          ty = tickCoord;\n          break;\n        case 'right':\n          y1 = y2 = data.coordinate;\n          x2 = x + +mirror * width;\n          x1 = x2 + sign * finalTickSize;\n          tx = x1 + sign * tickMargin;\n          ty = tickCoord;\n          break;\n        default:\n          x1 = x2 = data.coordinate;\n          y2 = y + +mirror * height;\n          y1 = y2 + sign * finalTickSize;\n          ty = y1 + sign * tickMargin;\n          tx = tickCoord;\n          break;\n      }\n      return {\n        line: {\n          x1: x1,\n          y1: y1,\n          x2: x2,\n          y2: y2\n        },\n        tick: {\n          x: tx,\n          y: ty\n        }\n      };\n    }\n  }, {\n    key: \"getTickTextAnchor\",\n    value: function getTickTextAnchor() {\n      var _this$props3 = this.props,\n        orientation = _this$props3.orientation,\n        mirror = _this$props3.mirror;\n      var textAnchor;\n      switch (orientation) {\n        case 'left':\n          textAnchor = mirror ? 'start' : 'end';\n          break;\n        case 'right':\n          textAnchor = mirror ? 'end' : 'start';\n          break;\n        default:\n          textAnchor = 'middle';\n          break;\n      }\n      return textAnchor;\n    }\n  }, {\n    key: \"getTickVerticalAnchor\",\n    value: function getTickVerticalAnchor() {\n      var _this$props4 = this.props,\n        orientation = _this$props4.orientation,\n        mirror = _this$props4.mirror;\n      var verticalAnchor = 'end';\n      switch (orientation) {\n        case 'left':\n        case 'right':\n          verticalAnchor = 'middle';\n          break;\n        case 'top':\n          verticalAnchor = mirror ? 'start' : 'end';\n          break;\n        default:\n          verticalAnchor = mirror ? 'end' : 'start';\n          break;\n      }\n      return verticalAnchor;\n    }\n  }, {\n    key: \"renderAxisLine\",\n    value: function renderAxisLine() {\n      var _this$props5 = this.props,\n        x = _this$props5.x,\n        y = _this$props5.y,\n        width = _this$props5.width,\n        height = _this$props5.height,\n        orientation = _this$props5.orientation,\n        mirror = _this$props5.mirror,\n        axisLine = _this$props5.axisLine;\n      var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(this.props, false)), filterProps(axisLine, false)), {}, {\n        fill: 'none'\n      });\n      if (orientation === 'top' || orientation === 'bottom') {\n        var needHeight = +(orientation === 'top' && !mirror || orientation === 'bottom' && mirror);\n        props = _objectSpread(_objectSpread({}, props), {}, {\n          x1: x,\n          y1: y + needHeight * height,\n          x2: x + width,\n          y2: y + needHeight * height\n        });\n      } else {\n        var needWidth = +(orientation === 'left' && !mirror || orientation === 'right' && mirror);\n        props = _objectSpread(_objectSpread({}, props), {}, {\n          x1: x + needWidth * width,\n          y1: y,\n          x2: x + needWidth * width,\n          y2: y + height\n        });\n      }\n      return /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n        className: clsx('recharts-cartesian-axis-line', get(axisLine, 'className'))\n      }));\n    }\n  }, {\n    key: \"renderTicks\",\n    value:\n    /**\n     * render the ticks\n     * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n     * @param {string} fontSize Fontsize to consider for tick spacing\n     * @param {string} letterSpacing Letterspacing to consider for tick spacing\n     * @return {ReactComponent} renderedTicks\n     */\n    function renderTicks(ticks, fontSize, letterSpacing) {\n      var _this2 = this;\n      var _this$props6 = this.props,\n        tickLine = _this$props6.tickLine,\n        stroke = _this$props6.stroke,\n        tick = _this$props6.tick,\n        tickFormatter = _this$props6.tickFormatter,\n        unit = _this$props6.unit;\n      var finalTicks = getTicks(_objectSpread(_objectSpread({}, this.props), {}, {\n        ticks: ticks\n      }), fontSize, letterSpacing);\n      var textAnchor = this.getTickTextAnchor();\n      var verticalAnchor = this.getTickVerticalAnchor();\n      var axisProps = filterProps(this.props, false);\n      var customTickProps = filterProps(tick, false);\n      var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n        fill: 'none'\n      }, filterProps(tickLine, false));\n      var items = finalTicks.map(function (entry, i) {\n        var _this2$getTickLineCoo = _this2.getTickLineCoord(entry),\n          lineCoord = _this2$getTickLineCoo.line,\n          tickCoord = _this2$getTickLineCoo.tick;\n        var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n          textAnchor: textAnchor,\n          verticalAnchor: verticalAnchor\n        }, axisProps), {}, {\n          stroke: 'none',\n          fill: stroke\n        }, customTickProps), tickCoord), {}, {\n          index: i,\n          payload: entry,\n          visibleTicksCount: finalTicks.length,\n          tickFormatter: tickFormatter\n        });\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-cartesian-axis-tick\",\n          key: \"tick-\".concat(entry.value, \"-\").concat(entry.coordinate, \"-\").concat(entry.tickCoord)\n        }, adaptEventsOfChild(_this2.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({}, tickLineProps, lineCoord, {\n          className: clsx('recharts-cartesian-axis-tick-line', get(tickLine, 'className'))\n        })), tick && CartesianAxis.renderTickItem(tick, tickProps, \"\".concat(isFunction(tickFormatter) ? tickFormatter(entry.value, i) : entry.value).concat(unit || '')));\n      });\n      return /*#__PURE__*/React.createElement(\"g\", {\n        className: \"recharts-cartesian-axis-ticks\"\n      }, items);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n      var _this$props7 = this.props,\n        axisLine = _this$props7.axisLine,\n        width = _this$props7.width,\n        height = _this$props7.height,\n        ticksGenerator = _this$props7.ticksGenerator,\n        className = _this$props7.className,\n        hide = _this$props7.hide;\n      if (hide) {\n        return null;\n      }\n      var _this$props8 = this.props,\n        ticks = _this$props8.ticks,\n        noTicksProps = _objectWithoutProperties(_this$props8, _excluded3);\n      var finalTicks = ticks;\n      if (isFunction(ticksGenerator)) {\n        finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n      }\n      if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n        return null;\n      }\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: clsx('recharts-cartesian-axis', className),\n        ref: function ref(_ref2) {\n          _this3.layerReference = _ref2;\n        }\n      }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks, this.state.fontSize, this.state.letterSpacing), Label.renderCallByParent(this.props));\n    }\n  }], [{\n    key: \"renderTickItem\",\n    value: function renderTickItem(option, props, value) {\n      var tickItem;\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        tickItem = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (isFunction(option)) {\n        tickItem = option(props);\n      } else {\n        tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n          className: \"recharts-cartesian-axis-tick-value\"\n        }), value);\n      }\n      return tickItem;\n    }\n  }]);\n}(Component);\n_defineProperty(CartesianAxis, \"displayName\", 'CartesianAxis');\n_defineProperty(CartesianAxis, \"defaultProps\", {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n  viewBox: {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  // The orientation of axis\n  orientation: 'bottom',\n  // The ticks\n  ticks: [],\n  stroke: '#666',\n  tickLine: true,\n  axisLine: true,\n  tick: true,\n  mirror: false,\n  minTickGap: 5,\n  // The width or height of tick\n  tickSize: 6,\n  tickMargin: 2,\n  interval: 'preserveEnd'\n});","var _excluded = [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport invariant from 'tiny-invariant';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/ReactUtils';\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ErrorBar = /*#__PURE__*/function (_React$Component) {\n  function ErrorBar() {\n    _classCallCheck(this, ErrorBar);\n    return _callSuper(this, ErrorBar, arguments);\n  }\n  _inherits(ErrorBar, _React$Component);\n  return _createClass(ErrorBar, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n        offset = _this$props.offset,\n        layout = _this$props.layout,\n        width = _this$props.width,\n        dataKey = _this$props.dataKey,\n        data = _this$props.data,\n        dataPointFormatter = _this$props.dataPointFormatter,\n        xAxis = _this$props.xAxis,\n        yAxis = _this$props.yAxis,\n        others = _objectWithoutProperties(_this$props, _excluded);\n      var svgProps = filterProps(others, false);\n      !!(this.props.direction === 'x' && xAxis.type !== 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ErrorBar requires Axis type property to be \"number\".') : invariant(false) : void 0;\n      var errorBars = data.map(function (entry) {\n        var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n          x = _dataPointFormatter.x,\n          y = _dataPointFormatter.y,\n          value = _dataPointFormatter.value,\n          errorVal = _dataPointFormatter.errorVal;\n        if (!errorVal) {\n          return null;\n        }\n        var lineCoordinates = [];\n        var lowBound, highBound;\n        if (Array.isArray(errorVal)) {\n          var _errorVal = _slicedToArray(errorVal, 2);\n          lowBound = _errorVal[0];\n          highBound = _errorVal[1];\n        } else {\n          lowBound = highBound = errorVal;\n        }\n        if (layout === 'vertical') {\n          // error bar for horizontal charts, the y is fixed, x is a range value\n          var scale = xAxis.scale;\n          var yMid = y + offset;\n          var yMin = yMid + width;\n          var yMax = yMid - width;\n          var xMin = scale(value - lowBound);\n          var xMax = scale(value + highBound);\n\n          // the right line of |--|\n          lineCoordinates.push({\n            x1: xMax,\n            y1: yMin,\n            x2: xMax,\n            y2: yMax\n          });\n          // the middle line of |--|\n          lineCoordinates.push({\n            x1: xMin,\n            y1: yMid,\n            x2: xMax,\n            y2: yMid\n          });\n          // the left line of |--|\n          lineCoordinates.push({\n            x1: xMin,\n            y1: yMin,\n            x2: xMin,\n            y2: yMax\n          });\n        } else if (layout === 'horizontal') {\n          // error bar for horizontal charts, the x is fixed, y is a range value\n          var _scale = yAxis.scale;\n          var xMid = x + offset;\n          var _xMin = xMid - width;\n          var _xMax = xMid + width;\n          var _yMin = _scale(value - lowBound);\n          var _yMax = _scale(value + highBound);\n\n          // the top line\n          lineCoordinates.push({\n            x1: _xMin,\n            y1: _yMax,\n            x2: _xMax,\n            y2: _yMax\n          });\n          // the middle line\n          lineCoordinates.push({\n            x1: xMid,\n            y1: _yMin,\n            x2: xMid,\n            y2: _yMax\n          });\n          // the bottom line\n          lineCoordinates.push({\n            x1: _xMin,\n            y1: _yMin,\n            x2: _xMax,\n            y2: _yMin\n          });\n        }\n        return /*#__PURE__*/React.createElement(Layer, _extends({\n          className: \"recharts-errorBar\",\n          key: \"bar-\".concat(lineCoordinates.map(function (c) {\n            return \"\".concat(c.x1, \"-\").concat(c.x2, \"-\").concat(c.y1, \"-\").concat(c.y2);\n          }))\n        }, svgProps), lineCoordinates.map(function (coordinates) {\n          return /*#__PURE__*/React.createElement(\"line\", _extends({}, coordinates, {\n            key: \"line-\".concat(coordinates.x1, \"-\").concat(coordinates.x2, \"-\").concat(coordinates.y1, \"-\").concat(coordinates.y2)\n          }));\n        }));\n      });\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-errorBars\"\n      }, errorBars);\n    }\n  }]);\n}(React.Component);\n_defineProperty(ErrorBar, \"defaultProps\", {\n  stroke: 'black',\n  strokeWidth: 1.5,\n  width: 5,\n  offset: 0,\n  layout: 'horizontal'\n});\n_defineProperty(ErrorBar, \"displayName\", 'ErrorBar');","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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/**\n * @fileOverview X Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useXAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\n\n/** Define of XAxis props */\n\nfunction XAxisImpl(_ref) {\n  var xAxisId = _ref.xAxisId;\n  var width = useChartWidth();\n  var height = useChartHeight();\n  var axisOptions = useXAxisOrThrow(xAxisId);\n  if (axisOptions == null) {\n    return null;\n  }\n  return (\n    /*#__PURE__*/\n    // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n    React.createElement(CartesianAxis, _extends({}, axisOptions, {\n      className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n      viewBox: {\n        x: 0,\n        y: 0,\n        width: width,\n        height: height\n      },\n      ticksGenerator: function ticksGenerator(axis) {\n        return getTicksOfAxis(axis, true);\n      }\n    }))\n  );\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var XAxis = /*#__PURE__*/function (_React$Component) {\n  function XAxis() {\n    _classCallCheck(this, XAxis);\n    return _callSuper(this, XAxis, arguments);\n  }\n  _inherits(XAxis, _React$Component);\n  return _createClass(XAxis, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(XAxisImpl, this.props);\n    }\n  }]);\n}(React.Component);\n_defineProperty(XAxis, \"displayName\", 'XAxis');\n_defineProperty(XAxis, \"defaultProps\", {\n  allowDecimals: true,\n  hide: false,\n  orientation: 'bottom',\n  width: 0,\n  height: 30,\n  mirror: false,\n  xAxisId: 0,\n  tickCount: 5,\n  type: 'category',\n  padding: {\n    left: 0,\n    right: 0\n  },\n  allowDataOverflow: false,\n  scale: 'auto',\n  reversed: false,\n  allowDuplicatedCategory: true\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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/**\n * @fileOverview Y Axis\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useChartHeight, useChartWidth, useYAxisOrThrow } from '../context/chartLayoutContext';\nimport { CartesianAxis } from './CartesianAxis';\nimport { getTicksOfAxis } from '../util/ChartUtils';\nvar YAxisImpl = function YAxisImpl(_ref) {\n  var yAxisId = _ref.yAxisId;\n  var width = useChartWidth();\n  var height = useChartHeight();\n  var axisOptions = useYAxisOrThrow(yAxisId);\n  if (axisOptions == null) {\n    return null;\n  }\n  return (\n    /*#__PURE__*/\n    // @ts-expect-error the axisOptions type is not exactly what CartesianAxis is expecting.\n    React.createElement(CartesianAxis, _extends({}, axisOptions, {\n      className: clsx(\"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType), axisOptions.className),\n      viewBox: {\n        x: 0,\n        y: 0,\n        width: width,\n        height: height\n      },\n      ticksGenerator: function ticksGenerator(axis) {\n        return getTicksOfAxis(axis, true);\n      }\n    }))\n  );\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var YAxis = /*#__PURE__*/function (_React$Component) {\n  function YAxis() {\n    _classCallCheck(this, YAxis);\n    return _callSuper(this, YAxis, arguments);\n  }\n  _inherits(YAxis, _React$Component);\n  return _createClass(YAxis, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(YAxisImpl, this.props);\n    }\n  }]);\n}(React.Component);\n_defineProperty(YAxis, \"displayName\", 'YAxis');\n_defineProperty(YAxis, \"defaultProps\", {\n  allowDuplicatedCategory: true,\n  allowDecimals: true,\n  hide: false,\n  orientation: 'left',\n  width: 60,\n  height: 0,\n  mirror: false,\n  yAxisId: 0,\n  tickCount: 5,\n  type: 'number',\n  padding: {\n    top: 0,\n    bottom: 0\n  },\n  allowDataOverflow: false,\n  scale: 'auto',\n  reversed: false\n});","/**\n * Given an array and a number N, return a new array which contains every nTh\n * element of the input array. For n below 1, an empty array is returned.\n * If isValid is provided, all candidates must suffice the condition, else undefined is returned.\n * @param {T[]} array An input array.\n * @param {integer} n A number\n * @param {Function} isValid A function to evaluate a candidate form the array\n * @returns {T[]} The result array of the same type as the input array.\n */\nexport function getEveryNthWithCondition(array, n, isValid) {\n  if (n < 1) {\n    return [];\n  }\n  if (n === 1 && isValid === undefined) {\n    return array;\n  }\n  var result = [];\n  for (var i = 0; i < array.length; i += n) {\n    if (isValid === undefined || isValid(array[i]) === true) {\n      result.push(array[i]);\n    } else {\n      return undefined;\n    }\n  }\n  return result;\n}","import { getAngledRectangleWidth } from './CartesianUtils';\nimport { getEveryNthWithCondition } from './getEveryNthWithCondition';\nexport function getAngledTickWidth(contentSize, unitSize, angle) {\n  var size = {\n    width: contentSize.width + unitSize.width,\n    height: contentSize.height + unitSize.height\n  };\n  return getAngledRectangleWidth(size, angle);\n}\nexport function getTickBoundaries(viewBox, sign, sizeKey) {\n  var isWidth = sizeKey === 'width';\n  var x = viewBox.x,\n    y = viewBox.y,\n    width = viewBox.width,\n    height = viewBox.height;\n  if (sign === 1) {\n    return {\n      start: isWidth ? x : y,\n      end: isWidth ? x + width : y + height\n    };\n  }\n  return {\n    start: isWidth ? x + width : y + height,\n    end: isWidth ? x : y\n  };\n}\nexport function isVisible(sign, tickPosition, getSize, start, end) {\n  /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating\n   * the tick's size. */\n  if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {\n    return false;\n  }\n  var size = getSize();\n  return sign * (tickPosition - sign * size / 2 - start) >= 0 && sign * (tickPosition + sign * size / 2 - end) <= 0;\n}\nexport function getNumberIntervalTicks(ticks, interval) {\n  return getEveryNthWithCondition(ticks, interval + 1);\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport isFunction from 'lodash/isFunction';\nimport { mathSign, isNumber } from '../util/DataUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { Global } from '../util/Global';\nimport { isVisible, getTickBoundaries, getNumberIntervalTicks, getAngledTickWidth } from '../util/TickUtils';\nimport { getEquidistantTicks } from './getEquidistantTicks';\nfunction getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap) {\n  var result = (ticks || []).slice();\n  var len = result.length;\n  var start = boundaries.start;\n  var end = boundaries.end;\n  var _loop = function _loop(i) {\n    var entry = result[i];\n    var size;\n    var getSize = function getSize() {\n      if (size === undefined) {\n        size = getTickSize(entry, i);\n      }\n      return size;\n    };\n    if (i === len - 1) {\n      var gap = sign * (entry.coordinate + sign * getSize() / 2 - end);\n      result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n        tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n      });\n    } else {\n      result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n        tickCoord: entry.coordinate\n      });\n    }\n    var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n    if (isShow) {\n      end = entry.tickCoord - sign * (getSize() / 2 + minTickGap);\n      result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n        isShow: true\n      });\n    }\n  };\n  for (var i = len - 1; i >= 0; i--) {\n    _loop(i);\n  }\n  return result;\n}\nfunction getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, preserveEnd) {\n  var result = (ticks || []).slice();\n  var len = result.length;\n  var start = boundaries.start,\n    end = boundaries.end;\n  if (preserveEnd) {\n    // Try to guarantee the tail to be displayed\n    var tail = ticks[len - 1];\n    var tailSize = getTickSize(tail, len - 1);\n    var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n    result[len - 1] = tail = _objectSpread(_objectSpread({}, tail), {}, {\n      tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n    });\n    var isTailShow = isVisible(sign, tail.tickCoord, function () {\n      return tailSize;\n    }, start, end);\n    if (isTailShow) {\n      end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n      result[len - 1] = _objectSpread(_objectSpread({}, tail), {}, {\n        isShow: true\n      });\n    }\n  }\n  var count = preserveEnd ? len - 1 : len;\n  var _loop2 = function _loop2(i) {\n    var entry = result[i];\n    var size;\n    var getSize = function getSize() {\n      if (size === undefined) {\n        size = getTickSize(entry, i);\n      }\n      return size;\n    };\n    if (i === 0) {\n      var gap = sign * (entry.coordinate - sign * getSize() / 2 - start);\n      result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n        tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n      });\n    } else {\n      result[i] = entry = _objectSpread(_objectSpread({}, entry), {}, {\n        tickCoord: entry.coordinate\n      });\n    }\n    var isShow = isVisible(sign, entry.tickCoord, getSize, start, end);\n    if (isShow) {\n      start = entry.tickCoord + sign * (getSize() / 2 + minTickGap);\n      result[i] = _objectSpread(_objectSpread({}, entry), {}, {\n        isShow: true\n      });\n    }\n  };\n  for (var i = 0; i < count; i++) {\n    _loop2(i);\n  }\n  return result;\n}\nexport function getTicks(props, fontSize, letterSpacing) {\n  var tick = props.tick,\n    ticks = props.ticks,\n    viewBox = props.viewBox,\n    minTickGap = props.minTickGap,\n    orientation = props.orientation,\n    interval = props.interval,\n    tickFormatter = props.tickFormatter,\n    unit = props.unit,\n    angle = props.angle;\n  if (!ticks || !ticks.length || !tick) {\n    return [];\n  }\n  if (isNumber(interval) || Global.isSsr) {\n    return getNumberIntervalTicks(ticks, typeof interval === 'number' && isNumber(interval) ? interval : 0);\n  }\n  var candidates = [];\n  var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n  var unitSize = unit && sizeKey === 'width' ? getStringSize(unit, {\n    fontSize: fontSize,\n    letterSpacing: letterSpacing\n  }) : {\n    width: 0,\n    height: 0\n  };\n  var getTickSize = function getTickSize(content, index) {\n    var value = isFunction(tickFormatter) ? tickFormatter(content.value, index) : content.value;\n    // Recharts only supports angles when sizeKey === 'width'\n    return sizeKey === 'width' ? getAngledTickWidth(getStringSize(value, {\n      fontSize: fontSize,\n      letterSpacing: letterSpacing\n    }), unitSize, angle) : getStringSize(value, {\n      fontSize: fontSize,\n      letterSpacing: letterSpacing\n    })[sizeKey];\n  };\n  var sign = ticks.length >= 2 ? mathSign(ticks[1].coordinate - ticks[0].coordinate) : 1;\n  var boundaries = getTickBoundaries(viewBox, sign, sizeKey);\n  if (interval === 'equidistantPreserveStart') {\n    return getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap);\n  }\n  if (interval === 'preserveStart' || interval === 'preserveStartEnd') {\n    candidates = getTicksStart(sign, boundaries, getTickSize, ticks, minTickGap, interval === 'preserveStartEnd');\n  } else {\n    candidates = getTicksEnd(sign, boundaries, getTickSize, ticks, minTickGap);\n  }\n  return candidates.filter(function (entry) {\n    return entry.isShow;\n  });\n}","import { isVisible } from '../util/TickUtils';\nimport { getEveryNthWithCondition } from '../util/getEveryNthWithCondition';\nexport function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {\n  var result = (ticks || []).slice();\n  var initialStart = boundaries.start,\n    end = boundaries.end;\n  var index = 0;\n  // Premature optimisation idea 1: Estimate a lower bound, and start from there.\n  // For now, start from every tick\n  var stepsize = 1;\n  var start = initialStart;\n  var _loop = function _loop() {\n      // Given stepsize, evaluate whether every stepsize-th tick can be shown.\n      // If it can not, then increase the stepsize by 1, and try again.\n\n      var entry = ticks === null || ticks === void 0 ? void 0 : ticks[index];\n\n      // Break condition - If we have evaluate all the ticks, then we are done.\n      if (entry === undefined) {\n        return {\n          v: getEveryNthWithCondition(ticks, stepsize)\n        };\n      }\n\n      // Check if the element collides with the next element\n      var i = index;\n      var size;\n      var getSize = function getSize() {\n        if (size === undefined) {\n          size = getTickSize(entry, i);\n        }\n        return size;\n      };\n      var tickCoord = entry.coordinate;\n      // We will always show the first tick.\n      var isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);\n      if (!isShow) {\n        // Start all over with a larger stepsize\n        index = 0;\n        start = initialStart;\n        stepsize += 1;\n      }\n      if (isShow) {\n        // If it can be shown, update the start\n        start = tickCoord + sign * (getSize() / 2 + minTickGap);\n        index += stepsize;\n      }\n    },\n    _ret;\n  while (stepsize <= result.length) {\n    _ret = _loop();\n    if (_ret) return _ret.v;\n  }\n  return [];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n  if (!name) {\n    return null;\n  }\n  var camelName = name.replace(/(\\w)/, function (v) {\n    return v.toUpperCase();\n  });\n  var result = PREFIX_LIST.reduce(function (res, entry) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, entry + camelName, value));\n  }, {});\n  result[name] = value;\n  return result;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport clsx from 'clsx';\nimport { scalePoint } from 'victory-vendor/d3-scale';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { Layer } from '../container/Layer';\nimport { Text } from '../component/Text';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar createScale = function createScale(_ref) {\n  var data = _ref.data,\n    startIndex = _ref.startIndex,\n    endIndex = _ref.endIndex,\n    x = _ref.x,\n    width = _ref.width,\n    travellerWidth = _ref.travellerWidth;\n  if (!data || !data.length) {\n    return {};\n  }\n  var len = data.length;\n  var scale = scalePoint().domain(range(0, len)).range([x, x + width - travellerWidth]);\n  var scaleValues = scale.domain().map(function (entry) {\n    return scale(entry);\n  });\n  return {\n    isTextActive: false,\n    isSlideMoving: false,\n    isTravellerMoving: false,\n    isTravellerFocused: false,\n    startX: scale(startIndex),\n    endX: scale(endIndex),\n    scale: scale,\n    scaleValues: scaleValues\n  };\n};\nvar isTouch = function isTouch(e) {\n  return e.changedTouches && !!e.changedTouches.length;\n};\nexport var Brush = /*#__PURE__*/function (_PureComponent) {\n  function Brush(props) {\n    var _this;\n    _classCallCheck(this, Brush);\n    _this = _callSuper(this, Brush, [props]);\n    _defineProperty(_this, \"handleDrag\", function (e) {\n      if (_this.leaveTimer) {\n        clearTimeout(_this.leaveTimer);\n        _this.leaveTimer = null;\n      }\n      if (_this.state.isTravellerMoving) {\n        _this.handleTravellerMove(e);\n      } else if (_this.state.isSlideMoving) {\n        _this.handleSlideDrag(e);\n      }\n    });\n    _defineProperty(_this, \"handleTouchMove\", function (e) {\n      if (e.changedTouches != null && e.changedTouches.length > 0) {\n        _this.handleDrag(e.changedTouches[0]);\n      }\n    });\n    _defineProperty(_this, \"handleDragEnd\", function () {\n      _this.setState({\n        isTravellerMoving: false,\n        isSlideMoving: false\n      }, function () {\n        var _this$props = _this.props,\n          endIndex = _this$props.endIndex,\n          onDragEnd = _this$props.onDragEnd,\n          startIndex = _this$props.startIndex;\n        onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n          endIndex: endIndex,\n          startIndex: startIndex\n        });\n      });\n      _this.detachDragEndListener();\n    });\n    _defineProperty(_this, \"handleLeaveWrapper\", function () {\n      if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n        _this.leaveTimer = window.setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n      }\n    });\n    _defineProperty(_this, \"handleEnterSlideOrTraveller\", function () {\n      _this.setState({\n        isTextActive: true\n      });\n    });\n    _defineProperty(_this, \"handleLeaveSlideOrTraveller\", function () {\n      _this.setState({\n        isTextActive: false\n      });\n    });\n    _defineProperty(_this, \"handleSlideDragStart\", function (e) {\n      var event = isTouch(e) ? e.changedTouches[0] : e;\n      _this.setState({\n        isTravellerMoving: false,\n        isSlideMoving: true,\n        slideMoveStartX: event.pageX\n      });\n      _this.attachDragEndListener();\n    });\n    _this.travellerDragStartHandlers = {\n      startX: _this.handleTravellerDragStart.bind(_this, 'startX'),\n      endX: _this.handleTravellerDragStart.bind(_this, 'endX')\n    };\n    _this.state = {};\n    return _this;\n  }\n  _inherits(Brush, _PureComponent);\n  return _createClass(Brush, [{\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.leaveTimer) {\n        clearTimeout(this.leaveTimer);\n        this.leaveTimer = null;\n      }\n      this.detachDragEndListener();\n    }\n  }, {\n    key: \"getIndex\",\n    value: function getIndex(_ref2) {\n      var startX = _ref2.startX,\n        endX = _ref2.endX;\n      var scaleValues = this.state.scaleValues;\n      var _this$props2 = this.props,\n        gap = _this$props2.gap,\n        data = _this$props2.data;\n      var lastIndex = data.length - 1;\n      var min = Math.min(startX, endX);\n      var max = Math.max(startX, endX);\n      var minIndex = Brush.getIndexInRange(scaleValues, min);\n      var maxIndex = Brush.getIndexInRange(scaleValues, max);\n      return {\n        startIndex: minIndex - minIndex % gap,\n        endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n      };\n    }\n  }, {\n    key: \"getTextOfTick\",\n    value: function getTextOfTick(index) {\n      var _this$props3 = this.props,\n        data = _this$props3.data,\n        tickFormatter = _this$props3.tickFormatter,\n        dataKey = _this$props3.dataKey;\n      var text = getValueByDataKey(data[index], dataKey, index);\n      return isFunction(tickFormatter) ? tickFormatter(text, index) : text;\n    }\n  }, {\n    key: \"attachDragEndListener\",\n    value: function attachDragEndListener() {\n      window.addEventListener('mouseup', this.handleDragEnd, true);\n      window.addEventListener('touchend', this.handleDragEnd, true);\n      window.addEventListener('mousemove', this.handleDrag, true);\n    }\n  }, {\n    key: \"detachDragEndListener\",\n    value: function detachDragEndListener() {\n      window.removeEventListener('mouseup', this.handleDragEnd, true);\n      window.removeEventListener('touchend', this.handleDragEnd, true);\n      window.removeEventListener('mousemove', this.handleDrag, true);\n    }\n  }, {\n    key: \"handleSlideDrag\",\n    value: function handleSlideDrag(e) {\n      var _this$state = this.state,\n        slideMoveStartX = _this$state.slideMoveStartX,\n        startX = _this$state.startX,\n        endX = _this$state.endX;\n      var _this$props4 = this.props,\n        x = _this$props4.x,\n        width = _this$props4.width,\n        travellerWidth = _this$props4.travellerWidth,\n        startIndex = _this$props4.startIndex,\n        endIndex = _this$props4.endIndex,\n        onChange = _this$props4.onChange;\n      var delta = e.pageX - slideMoveStartX;\n      if (delta > 0) {\n        delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n      } else if (delta < 0) {\n        delta = Math.max(delta, x - startX, x - endX);\n      }\n      var newIndex = this.getIndex({\n        startX: startX + delta,\n        endX: endX + delta\n      });\n      if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n        onChange(newIndex);\n      }\n      this.setState({\n        startX: startX + delta,\n        endX: endX + delta,\n        slideMoveStartX: e.pageX\n      });\n    }\n  }, {\n    key: \"handleTravellerDragStart\",\n    value: function handleTravellerDragStart(id, e) {\n      var event = isTouch(e) ? e.changedTouches[0] : e;\n      this.setState({\n        isSlideMoving: false,\n        isTravellerMoving: true,\n        movingTravellerId: id,\n        brushMoveStartX: event.pageX\n      });\n      this.attachDragEndListener();\n    }\n  }, {\n    key: \"handleTravellerMove\",\n    value: function handleTravellerMove(e) {\n      var _this$state2 = this.state,\n        brushMoveStartX = _this$state2.brushMoveStartX,\n        movingTravellerId = _this$state2.movingTravellerId,\n        endX = _this$state2.endX,\n        startX = _this$state2.startX;\n      var prevValue = this.state[movingTravellerId];\n      var _this$props5 = this.props,\n        x = _this$props5.x,\n        width = _this$props5.width,\n        travellerWidth = _this$props5.travellerWidth,\n        onChange = _this$props5.onChange,\n        gap = _this$props5.gap,\n        data = _this$props5.data;\n      var params = {\n        startX: this.state.startX,\n        endX: this.state.endX\n      };\n      var delta = e.pageX - brushMoveStartX;\n      if (delta > 0) {\n        delta = Math.min(delta, x + width - travellerWidth - prevValue);\n      } else if (delta < 0) {\n        delta = Math.max(delta, x - prevValue);\n      }\n      params[movingTravellerId] = prevValue + delta;\n      var newIndex = this.getIndex(params);\n      var startIndex = newIndex.startIndex,\n        endIndex = newIndex.endIndex;\n      var isFullGap = function isFullGap() {\n        var lastIndex = data.length - 1;\n        if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n          return true;\n        }\n        return false;\n      };\n      this.setState(_defineProperty(_defineProperty({}, movingTravellerId, prevValue + delta), \"brushMoveStartX\", e.pageX), function () {\n        if (onChange) {\n          if (isFullGap()) {\n            onChange(newIndex);\n          }\n        }\n      });\n    }\n  }, {\n    key: \"handleTravellerMoveKeyboard\",\n    value: function handleTravellerMoveKeyboard(direction, id) {\n      var _this2 = this;\n      // scaleValues are a list of coordinates. For example: [65, 250, 435, 620, 805, 990].\n      var _this$state3 = this.state,\n        scaleValues = _this$state3.scaleValues,\n        startX = _this$state3.startX,\n        endX = _this$state3.endX;\n      // currentScaleValue refers to which coordinate the current traveller should be placed at.\n      var currentScaleValue = this.state[id];\n      var currentIndex = scaleValues.indexOf(currentScaleValue);\n      if (currentIndex === -1) {\n        return;\n      }\n      var newIndex = currentIndex + direction;\n      if (newIndex === -1 || newIndex >= scaleValues.length) {\n        return;\n      }\n      var newScaleValue = scaleValues[newIndex];\n\n      // Prevent travellers from being on top of each other or overlapping\n      if (id === 'startX' && newScaleValue >= endX || id === 'endX' && newScaleValue <= startX) {\n        return;\n      }\n      this.setState(_defineProperty({}, id, newScaleValue), function () {\n        _this2.props.onChange(_this2.getIndex({\n          startX: _this2.state.startX,\n          endX: _this2.state.endX\n        }));\n      });\n    }\n  }, {\n    key: \"renderBackground\",\n    value: function renderBackground() {\n      var _this$props6 = this.props,\n        x = _this$props6.x,\n        y = _this$props6.y,\n        width = _this$props6.width,\n        height = _this$props6.height,\n        fill = _this$props6.fill,\n        stroke = _this$props6.stroke;\n      return /*#__PURE__*/React.createElement(\"rect\", {\n        stroke: stroke,\n        fill: fill,\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }\n  }, {\n    key: \"renderPanorama\",\n    value: function renderPanorama() {\n      var _this$props7 = this.props,\n        x = _this$props7.x,\n        y = _this$props7.y,\n        width = _this$props7.width,\n        height = _this$props7.height,\n        data = _this$props7.data,\n        children = _this$props7.children,\n        padding = _this$props7.padding;\n      var chartElement = Children.only(children);\n      if (!chartElement) {\n        return null;\n      }\n      return /*#__PURE__*/React.cloneElement(chartElement, {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        margin: padding,\n        compact: true,\n        data: data\n      });\n    }\n  }, {\n    key: \"renderTravellerLayer\",\n    value: function renderTravellerLayer(travellerX, id) {\n      var _data$startIndex,\n        _data$endIndex,\n        _this3 = this;\n      var _this$props8 = this.props,\n        y = _this$props8.y,\n        travellerWidth = _this$props8.travellerWidth,\n        height = _this$props8.height,\n        traveller = _this$props8.traveller,\n        ariaLabel = _this$props8.ariaLabel,\n        data = _this$props8.data,\n        startIndex = _this$props8.startIndex,\n        endIndex = _this$props8.endIndex;\n      var x = Math.max(travellerX, this.props.x);\n      var travellerProps = _objectSpread(_objectSpread({}, filterProps(this.props, false)), {}, {\n        x: x,\n        y: y,\n        width: travellerWidth,\n        height: height\n      });\n      var ariaLabelBrush = ariaLabel || \"Min value: \".concat((_data$startIndex = data[startIndex]) === null || _data$startIndex === void 0 ? void 0 : _data$startIndex.name, \", Max value: \").concat((_data$endIndex = data[endIndex]) === null || _data$endIndex === void 0 ? void 0 : _data$endIndex.name);\n      return /*#__PURE__*/React.createElement(Layer, {\n        tabIndex: 0,\n        role: \"slider\",\n        \"aria-label\": ariaLabelBrush,\n        \"aria-valuenow\": travellerX,\n        className: \"recharts-brush-traveller\",\n        onMouseEnter: this.handleEnterSlideOrTraveller,\n        onMouseLeave: this.handleLeaveSlideOrTraveller,\n        onMouseDown: this.travellerDragStartHandlers[id],\n        onTouchStart: this.travellerDragStartHandlers[id],\n        onKeyDown: function onKeyDown(e) {\n          if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n            return;\n          }\n          e.preventDefault();\n          e.stopPropagation();\n          _this3.handleTravellerMoveKeyboard(e.key === 'ArrowRight' ? 1 : -1, id);\n        },\n        onFocus: function onFocus() {\n          _this3.setState({\n            isTravellerFocused: true\n          });\n        },\n        onBlur: function onBlur() {\n          _this3.setState({\n            isTravellerFocused: false\n          });\n        },\n        style: {\n          cursor: 'col-resize'\n        }\n      }, Brush.renderTraveller(traveller, travellerProps));\n    }\n  }, {\n    key: \"renderSlide\",\n    value: function renderSlide(startX, endX) {\n      var _this$props9 = this.props,\n        y = _this$props9.y,\n        height = _this$props9.height,\n        stroke = _this$props9.stroke,\n        travellerWidth = _this$props9.travellerWidth;\n      var x = Math.min(startX, endX) + travellerWidth;\n      var width = Math.max(Math.abs(endX - startX) - travellerWidth, 0);\n      return /*#__PURE__*/React.createElement(\"rect\", {\n        className: \"recharts-brush-slide\",\n        onMouseEnter: this.handleEnterSlideOrTraveller,\n        onMouseLeave: this.handleLeaveSlideOrTraveller,\n        onMouseDown: this.handleSlideDragStart,\n        onTouchStart: this.handleSlideDragStart,\n        style: {\n          cursor: 'move'\n        },\n        stroke: \"none\",\n        fill: stroke,\n        fillOpacity: 0.2,\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }\n  }, {\n    key: \"renderText\",\n    value: function renderText() {\n      var _this$props10 = this.props,\n        startIndex = _this$props10.startIndex,\n        endIndex = _this$props10.endIndex,\n        y = _this$props10.y,\n        height = _this$props10.height,\n        travellerWidth = _this$props10.travellerWidth,\n        stroke = _this$props10.stroke;\n      var _this$state4 = this.state,\n        startX = _this$state4.startX,\n        endX = _this$state4.endX;\n      var offset = 5;\n      var attrs = {\n        pointerEvents: 'none',\n        fill: stroke\n      };\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: \"recharts-brush-texts\"\n      }, /*#__PURE__*/React.createElement(Text, _extends({\n        textAnchor: \"end\",\n        verticalAnchor: \"middle\",\n        x: Math.min(startX, endX) - offset,\n        y: y + height / 2\n      }, attrs), this.getTextOfTick(startIndex)), /*#__PURE__*/React.createElement(Text, _extends({\n        textAnchor: \"start\",\n        verticalAnchor: \"middle\",\n        x: Math.max(startX, endX) + travellerWidth + offset,\n        y: y + height / 2\n      }, attrs), this.getTextOfTick(endIndex)));\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props11 = this.props,\n        data = _this$props11.data,\n        className = _this$props11.className,\n        children = _this$props11.children,\n        x = _this$props11.x,\n        y = _this$props11.y,\n        width = _this$props11.width,\n        height = _this$props11.height,\n        alwaysShowText = _this$props11.alwaysShowText;\n      var _this$state5 = this.state,\n        startX = _this$state5.startX,\n        endX = _this$state5.endX,\n        isTextActive = _this$state5.isTextActive,\n        isSlideMoving = _this$state5.isSlideMoving,\n        isTravellerMoving = _this$state5.isTravellerMoving,\n        isTravellerFocused = _this$state5.isTravellerFocused;\n      if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n        return null;\n      }\n      var layerClass = clsx('recharts-brush', className);\n      var isPanoramic = React.Children.count(children) === 1;\n      var style = generatePrefixStyle('userSelect', 'none');\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: layerClass,\n        onMouseLeave: this.handleLeaveWrapper,\n        onTouchMove: this.handleTouchMove,\n        style: style\n      }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTravellerLayer(startX, 'startX'), this.renderTravellerLayer(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || isTravellerFocused || alwaysShowText) && this.renderText());\n    }\n  }], [{\n    key: \"renderDefaultTraveller\",\n    value: function renderDefaultTraveller(props) {\n      var x = props.x,\n        y = props.y,\n        width = props.width,\n        height = props.height,\n        stroke = props.stroke;\n      var lineY = Math.floor(y + height / 2) - 1;\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"rect\", {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        fill: stroke,\n        stroke: \"none\"\n      }), /*#__PURE__*/React.createElement(\"line\", {\n        x1: x + 1,\n        y1: lineY,\n        x2: x + width - 1,\n        y2: lineY,\n        fill: \"none\",\n        stroke: \"#fff\"\n      }), /*#__PURE__*/React.createElement(\"line\", {\n        x1: x + 1,\n        y1: lineY + 2,\n        x2: x + width - 1,\n        y2: lineY + 2,\n        fill: \"none\",\n        stroke: \"#fff\"\n      }));\n    }\n  }, {\n    key: \"renderTraveller\",\n    value: function renderTraveller(option, props) {\n      var rectangle;\n      if ( /*#__PURE__*/React.isValidElement(option)) {\n        rectangle = /*#__PURE__*/React.cloneElement(option, props);\n      } else if (isFunction(option)) {\n        rectangle = option(props);\n      } else {\n        rectangle = Brush.renderDefaultTraveller(props);\n      }\n      return rectangle;\n    }\n  }, {\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(nextProps, prevState) {\n      var data = nextProps.data,\n        width = nextProps.width,\n        x = nextProps.x,\n        travellerWidth = nextProps.travellerWidth,\n        updateId = nextProps.updateId,\n        startIndex = nextProps.startIndex,\n        endIndex = nextProps.endIndex;\n      if (data !== prevState.prevData || updateId !== prevState.prevUpdateId) {\n        return _objectSpread({\n          prevData: data,\n          prevTravellerWidth: travellerWidth,\n          prevUpdateId: updateId,\n          prevX: x,\n          prevWidth: width\n        }, data && data.length ? createScale({\n          data: data,\n          width: width,\n          x: x,\n          travellerWidth: travellerWidth,\n          startIndex: startIndex,\n          endIndex: endIndex\n        }) : {\n          scale: null,\n          scaleValues: null\n        });\n      }\n      if (prevState.scale && (width !== prevState.prevWidth || x !== prevState.prevX || travellerWidth !== prevState.prevTravellerWidth)) {\n        prevState.scale.range([x, x + width - travellerWidth]);\n        var scaleValues = prevState.scale.domain().map(function (entry) {\n          return prevState.scale(entry);\n        });\n        return {\n          prevData: data,\n          prevTravellerWidth: travellerWidth,\n          prevUpdateId: updateId,\n          prevX: x,\n          prevWidth: width,\n          startX: prevState.scale(nextProps.startIndex),\n          endX: prevState.scale(nextProps.endIndex),\n          scaleValues: scaleValues\n        };\n      }\n      return null;\n    }\n  }, {\n    key: \"getIndexInRange\",\n    value: function getIndexInRange(valueRange, x) {\n      var len = valueRange.length;\n      var start = 0;\n      var end = len - 1;\n      while (end - start > 1) {\n        var middle = Math.floor((start + end) / 2);\n        if (valueRange[middle] > x) {\n          end = middle;\n        } else {\n          start = middle;\n        }\n      }\n      return x >= valueRange[end] ? end : start;\n    }\n  }]);\n}(PureComponent);\n_defineProperty(Brush, \"displayName\", 'Brush');\n_defineProperty(Brush, \"defaultProps\", {\n  height: 40,\n  travellerWidth: 5,\n  gap: 1,\n  fill: '#fff',\n  stroke: '#666',\n  padding: {\n    top: 1,\n    right: 1,\n    bottom: 1,\n    left: 1\n  },\n  leaveTimeOut: 1000,\n  alwaysShowText: false\n});","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n  var alwaysShow = props.alwaysShow;\n  var ifOverflow = props.ifOverflow;\n  if (alwaysShow) {\n    ifOverflow = 'extendDomain';\n  }\n  return ifOverflow === value;\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Dot\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Label } from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { createLabeledScales } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getCoordinate = function getCoordinate(props) {\n  var x = props.x,\n    y = props.y,\n    xAxis = props.xAxis,\n    yAxis = props.yAxis;\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var result = scales.apply({\n    x: x,\n    y: y\n  }, {\n    bandAware: true\n  });\n  if (ifOverflowMatches(props, 'discard') && !scales.isInRange(result)) {\n    return null;\n  }\n  return result;\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceDot = /*#__PURE__*/function (_React$Component) {\n  function ReferenceDot() {\n    _classCallCheck(this, ReferenceDot);\n    return _callSuper(this, ReferenceDot, arguments);\n  }\n  _inherits(ReferenceDot, _React$Component);\n  return _createClass(ReferenceDot, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n        x = _this$props.x,\n        y = _this$props.y,\n        r = _this$props.r,\n        alwaysShow = _this$props.alwaysShow,\n        clipPathId = _this$props.clipPathId;\n      var isX = isNumOrStr(x);\n      var isY = isNumOrStr(y);\n      warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n      if (!isX || !isY) {\n        return null;\n      }\n      var coordinate = getCoordinate(this.props);\n      if (!coordinate) {\n        return null;\n      }\n      var cx = coordinate.x,\n        cy = coordinate.y;\n      var _this$props2 = this.props,\n        shape = _this$props2.shape,\n        className = _this$props2.className;\n      var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n      var dotProps = _objectSpread(_objectSpread({\n        clipPath: clipPath\n      }, filterProps(this.props, true)), {}, {\n        cx: cx,\n        cy: cy\n      });\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: clsx('recharts-reference-dot', className)\n      }, ReferenceDot.renderDot(shape, dotProps), Label.renderCallByParent(this.props, {\n        x: cx - r,\n        y: cy - r,\n        width: 2 * r,\n        height: 2 * r\n      }));\n    }\n  }]);\n}(React.Component);\n_defineProperty(ReferenceDot, \"displayName\", 'ReferenceDot');\n_defineProperty(ReferenceDot, \"defaultProps\", {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  r: 10,\n  fill: '#fff',\n  stroke: '#ccc',\n  fillOpacity: 1,\n  strokeWidth: 1\n});\n_defineProperty(ReferenceDot, \"renderDot\", function (option, props) {\n  var dot;\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    dot = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (isFunction(option)) {\n    dot = option(props);\n  } else {\n    dot = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n      cx: props.cx,\n      cy: props.cy,\n      className: \"recharts-reference-dot-dot\"\n    }));\n  }\n  return dot;\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport some from 'lodash/some';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { createLabeledScales, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps } from '../util/ReactUtils';\nimport { useClipPathId, useViewBox, useXAxisOrThrow, useYAxisOrThrow } from '../context/chartLayoutContext';\n\n/**\n * This excludes `viewBox` prop from svg for two reasons:\n * 1. The components wants viewBox of object type, and svg wants string\n *    - so there's a conflict, and the component will throw if it gets string\n * 2. Internally the component calls `filterProps` which filters the viewBox away anyway\n */\n\nvar renderLine = function renderLine(option, props) {\n  var line;\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    line = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (isFunction(option)) {\n    line = option(props);\n  } else {\n    line = /*#__PURE__*/React.createElement(\"line\", _extends({}, props, {\n      className: \"recharts-reference-line-line\"\n    }));\n  }\n  return line;\n};\n// TODO: ScaleHelper\nexport var getEndPoints = function getEndPoints(scales, isFixedX, isFixedY, isSegment, viewBox, position, xAxisOrientation, yAxisOrientation, props) {\n  var x = viewBox.x,\n    y = viewBox.y,\n    width = viewBox.width,\n    height = viewBox.height;\n  if (isFixedY) {\n    var yCoord = props.y;\n    var coord = scales.y.apply(yCoord, {\n      position: position\n    });\n    if (ifOverflowMatches(props, 'discard') && !scales.y.isInRange(coord)) {\n      return null;\n    }\n    var points = [{\n      x: x + width,\n      y: coord\n    }, {\n      x: x,\n      y: coord\n    }];\n    return yAxisOrientation === 'left' ? points.reverse() : points;\n  }\n  if (isFixedX) {\n    var xCoord = props.x;\n    var _coord = scales.x.apply(xCoord, {\n      position: position\n    });\n    if (ifOverflowMatches(props, 'discard') && !scales.x.isInRange(_coord)) {\n      return null;\n    }\n    var _points = [{\n      x: _coord,\n      y: y + height\n    }, {\n      x: _coord,\n      y: y\n    }];\n    return xAxisOrientation === 'top' ? _points.reverse() : _points;\n  }\n  if (isSegment) {\n    var segment = props.segment;\n    var _points2 = segment.map(function (p) {\n      return scales.apply(p, {\n        position: position\n      });\n    });\n    if (ifOverflowMatches(props, 'discard') && some(_points2, function (p) {\n      return !scales.isInRange(p);\n    })) {\n      return null;\n    }\n    return _points2;\n  }\n  return null;\n};\nfunction ReferenceLineImpl(props) {\n  var fixedX = props.x,\n    fixedY = props.y,\n    segment = props.segment,\n    xAxisId = props.xAxisId,\n    yAxisId = props.yAxisId,\n    shape = props.shape,\n    className = props.className,\n    alwaysShow = props.alwaysShow;\n  var clipPathId = useClipPathId();\n  var xAxis = useXAxisOrThrow(xAxisId);\n  var yAxis = useYAxisOrThrow(yAxisId);\n  var viewBox = useViewBox();\n  if (!clipPathId || !viewBox) {\n    return null;\n  }\n  warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var isX = isNumOrStr(fixedX);\n  var isY = isNumOrStr(fixedY);\n  var isSegment = segment && segment.length === 2;\n  var endPoints = getEndPoints(scales, isX, isY, isSegment, viewBox, props.position, xAxis.orientation, yAxis.orientation, props);\n  if (!endPoints) {\n    return null;\n  }\n  var _endPoints = _slicedToArray(endPoints, 2),\n    _endPoints$ = _endPoints[0],\n    x1 = _endPoints$.x,\n    y1 = _endPoints$.y,\n    _endPoints$2 = _endPoints[1],\n    x2 = _endPoints$2.x,\n    y2 = _endPoints$2.y;\n  var clipPath = ifOverflowMatches(props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n  var lineProps = _objectSpread(_objectSpread({\n    clipPath: clipPath\n  }, filterProps(props, true)), {}, {\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2\n  });\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: clsx('recharts-reference-line', className)\n  }, renderLine(shape, lineProps), Label.renderCallByParent(props, rectWithCoords({\n    x1: x1,\n    y1: y1,\n    x2: x2,\n    y2: y2\n  })));\n}\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceLine = /*#__PURE__*/function (_React$Component) {\n  function ReferenceLine() {\n    _classCallCheck(this, ReferenceLine);\n    return _callSuper(this, ReferenceLine, arguments);\n  }\n  _inherits(ReferenceLine, _React$Component);\n  return _createClass(ReferenceLine, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(ReferenceLineImpl, this.props);\n    }\n  }]);\n}(React.Component);\n_defineProperty(ReferenceLine, \"displayName\", 'ReferenceLine');\n_defineProperty(ReferenceLine, \"defaultProps\", {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  fill: 'none',\n  stroke: '#ccc',\n  fillOpacity: 1,\n  strokeWidth: 1,\n  position: 'middle'\n});","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Reference Line\n */\nimport React from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { Label } from '../component/Label';\nimport { createLabeledScales, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { Rectangle } from '../shape/Rectangle';\nimport { filterProps } from '../util/ReactUtils';\nvar getRect = function getRect(hasX1, hasX2, hasY1, hasY2, props) {\n  var xValue1 = props.x1,\n    xValue2 = props.x2,\n    yValue1 = props.y1,\n    yValue2 = props.y2,\n    xAxis = props.xAxis,\n    yAxis = props.yAxis;\n  if (!xAxis || !yAxis) return null;\n  var scales = createLabeledScales({\n    x: xAxis.scale,\n    y: yAxis.scale\n  });\n  var p1 = {\n    x: hasX1 ? scales.x.apply(xValue1, {\n      position: 'start'\n    }) : scales.x.rangeMin,\n    y: hasY1 ? scales.y.apply(yValue1, {\n      position: 'start'\n    }) : scales.y.rangeMin\n  };\n  var p2 = {\n    x: hasX2 ? scales.x.apply(xValue2, {\n      position: 'end'\n    }) : scales.x.rangeMax,\n    y: hasY2 ? scales.y.apply(yValue2, {\n      position: 'end'\n    }) : scales.y.rangeMax\n  };\n  if (ifOverflowMatches(props, 'discard') && (!scales.isInRange(p1) || !scales.isInRange(p2))) {\n    return null;\n  }\n  return rectWithPoints(p1, p2);\n};\n\n// eslint-disable-next-line react/prefer-stateless-function -- requires static defaultProps\nexport var ReferenceArea = /*#__PURE__*/function (_React$Component) {\n  function ReferenceArea() {\n    _classCallCheck(this, ReferenceArea);\n    return _callSuper(this, ReferenceArea, arguments);\n  }\n  _inherits(ReferenceArea, _React$Component);\n  return _createClass(ReferenceArea, [{\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n        x1 = _this$props.x1,\n        x2 = _this$props.x2,\n        y1 = _this$props.y1,\n        y2 = _this$props.y2,\n        className = _this$props.className,\n        alwaysShow = _this$props.alwaysShow,\n        clipPathId = _this$props.clipPathId;\n      warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n      var hasX1 = isNumOrStr(x1);\n      var hasX2 = isNumOrStr(x2);\n      var hasY1 = isNumOrStr(y1);\n      var hasY2 = isNumOrStr(y2);\n      var shape = this.props.shape;\n      if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n        return null;\n      }\n      var rect = getRect(hasX1, hasX2, hasY1, hasY2, this.props);\n      if (!rect && !shape) {\n        return null;\n      }\n      var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n      return /*#__PURE__*/React.createElement(Layer, {\n        className: clsx('recharts-reference-area', className)\n      }, ReferenceArea.renderRect(shape, _objectSpread(_objectSpread({\n        clipPath: clipPath\n      }, filterProps(this.props, true)), rect)), Label.renderCallByParent(this.props, rect));\n    }\n  }]);\n}(React.Component);\n_defineProperty(ReferenceArea, \"displayName\", 'ReferenceArea');\n_defineProperty(ReferenceArea, \"defaultProps\", {\n  isFront: false,\n  ifOverflow: 'discard',\n  xAxisId: 0,\n  yAxisId: 0,\n  r: 10,\n  fill: '#ccc',\n  fillOpacity: 0.5,\n  stroke: 'none',\n  strokeWidth: 1\n});\n_defineProperty(ReferenceArea, \"renderRect\", function (option, props) {\n  var rect;\n  if ( /*#__PURE__*/React.isValidElement(option)) {\n    rect = /*#__PURE__*/React.cloneElement(option, props);\n  } else if (isFunction(option)) {\n    rect = option(props);\n  } else {\n    rect = /*#__PURE__*/React.createElement(Rectangle, _extends({}, props, {\n      className: \"recharts-reference-area-rect\"\n    }));\n  }\n  return rect;\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { ReferenceDot } from '../cartesian/ReferenceDot';\nimport { ReferenceLine } from '../cartesian/ReferenceLine';\nimport { ReferenceArea } from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n  var lines = findAllByType(children, ReferenceLine);\n  var dots = findAllByType(children, ReferenceDot);\n  var elements = [].concat(_toConsumableArray(lines), _toConsumableArray(dots));\n  var areas = findAllByType(children, ReferenceArea);\n  var idKey = \"\".concat(axisType, \"Id\");\n  var valueKey = axisType[0];\n  var finalDomain = domain;\n  if (elements.length) {\n    finalDomain = elements.reduce(function (result, el) {\n      if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n        var value = el.props[valueKey];\n        return [Math.min(result[0], value), Math.max(result[1], value)];\n      }\n      return result;\n    }, finalDomain);\n  }\n  if (areas.length) {\n    var key1 = \"\".concat(valueKey, \"1\");\n    var key2 = \"\".concat(valueKey, \"2\");\n    finalDomain = areas.reduce(function (result, el) {\n      if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n        var value1 = el.props[key1];\n        var value2 = el.props[key2];\n        return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n      }\n      return result;\n    }, finalDomain);\n  }\n  if (specifiedTicks && specifiedTicks.length) {\n    finalDomain = specifiedTicks.reduce(function (result, tick) {\n      if (isNumber(tick)) {\n        return [Math.min(result[0], tick), Math.max(result[1], tick)];\n      }\n      return result;\n    }, finalDomain);\n  }\n  return finalDomain;\n};","import EventEmitter from 'eventemitter3';\nvar eventCenter = new EventEmitter();\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport var AccessibilityManager = /*#__PURE__*/function () {\n  function AccessibilityManager() {\n    _classCallCheck(this, AccessibilityManager);\n    _defineProperty(this, \"activeIndex\", 0);\n    _defineProperty(this, \"coordinateList\", []);\n    _defineProperty(this, \"layout\", 'horizontal');\n  }\n  return _createClass(AccessibilityManager, [{\n    key: \"setDetails\",\n    value: function setDetails(_ref) {\n      var _ref2;\n      var _ref$coordinateList = _ref.coordinateList,\n        coordinateList = _ref$coordinateList === void 0 ? null : _ref$coordinateList,\n        _ref$container = _ref.container,\n        container = _ref$container === void 0 ? null : _ref$container,\n        _ref$layout = _ref.layout,\n        layout = _ref$layout === void 0 ? null : _ref$layout,\n        _ref$offset = _ref.offset,\n        offset = _ref$offset === void 0 ? null : _ref$offset,\n        _ref$mouseHandlerCall = _ref.mouseHandlerCallback,\n        mouseHandlerCallback = _ref$mouseHandlerCall === void 0 ? null : _ref$mouseHandlerCall;\n      this.coordinateList = (_ref2 = coordinateList !== null && coordinateList !== void 0 ? coordinateList : this.coordinateList) !== null && _ref2 !== void 0 ? _ref2 : [];\n      this.container = container !== null && container !== void 0 ? container : this.container;\n      this.layout = layout !== null && layout !== void 0 ? layout : this.layout;\n      this.offset = offset !== null && offset !== void 0 ? offset : this.offset;\n      this.mouseHandlerCallback = mouseHandlerCallback !== null && mouseHandlerCallback !== void 0 ? mouseHandlerCallback : this.mouseHandlerCallback;\n\n      // Keep activeIndex in the bounds between 0 and the last coordinate index\n      this.activeIndex = Math.min(Math.max(this.activeIndex, 0), this.coordinateList.length - 1);\n    }\n  }, {\n    key: \"focus\",\n    value: function focus() {\n      this.spoofMouse();\n    }\n  }, {\n    key: \"keyboardEvent\",\n    value: function keyboardEvent(e) {\n      // The AccessibilityManager relies on the Tooltip component. When tooltips suddenly stop existing,\n      // it can cause errors. We use this function to check. We don't want arrow keys to be processed\n      // if there are no tooltips, since that will cause unexpected behavior of users.\n      if (this.coordinateList.length === 0) {\n        return;\n      }\n      switch (e.key) {\n        case 'ArrowRight':\n          {\n            if (this.layout !== 'horizontal') {\n              return;\n            }\n            this.activeIndex = Math.min(this.activeIndex + 1, this.coordinateList.length - 1);\n            this.spoofMouse();\n            break;\n          }\n        case 'ArrowLeft':\n          {\n            if (this.layout !== 'horizontal') {\n              return;\n            }\n            this.activeIndex = Math.max(this.activeIndex - 1, 0);\n            this.spoofMouse();\n            break;\n          }\n        default:\n          {\n            break;\n          }\n      }\n    }\n  }, {\n    key: \"setIndex\",\n    value: function setIndex(newIndex) {\n      this.activeIndex = newIndex;\n    }\n  }, {\n    key: \"spoofMouse\",\n    value: function spoofMouse() {\n      var _window, _window2;\n      if (this.layout !== 'horizontal') {\n        return;\n      }\n\n      // This can happen when the tooltips suddenly stop existing as children of the component\n      // That update doesn't otherwise fire events, so we have to double check here.\n      if (this.coordinateList.length === 0) {\n        return;\n      }\n      var _this$container$getBo = this.container.getBoundingClientRect(),\n        x = _this$container$getBo.x,\n        y = _this$container$getBo.y,\n        height = _this$container$getBo.height;\n      var coordinate = this.coordinateList[this.activeIndex].coordinate;\n      var scrollOffsetX = ((_window = window) === null || _window === void 0 ? void 0 : _window.scrollX) || 0;\n      var scrollOffsetY = ((_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.scrollY) || 0;\n      var pageX = x + coordinate + scrollOffsetX;\n      var pageY = y + this.offset.top + height / 2 + scrollOffsetY;\n      this.mouseHandlerCallback({\n        pageX: pageX,\n        pageY: pageY\n      });\n    }\n  }]);\n}();","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"x\", \"y\", \"top\", \"left\", \"width\", \"height\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Cross\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nvar getPath = function getPath(x, y, width, height, top, left) {\n  return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n};\nexport var Cross = function Cross(_ref) {\n  var _ref$x = _ref.x,\n    x = _ref$x === void 0 ? 0 : _ref$x,\n    _ref$y = _ref.y,\n    y = _ref$y === void 0 ? 0 : _ref$y,\n    _ref$top = _ref.top,\n    top = _ref$top === void 0 ? 0 : _ref$top,\n    _ref$left = _ref.left,\n    left = _ref$left === void 0 ? 0 : _ref$left,\n    _ref$width = _ref.width,\n    width = _ref$width === void 0 ? 0 : _ref$width,\n    _ref$height = _ref.height,\n    height = _ref$height === void 0 ? 0 : _ref$height,\n    className = _ref.className,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  var props = _objectSpread({\n    x: x,\n    y: y,\n    top: top,\n    left: left,\n    width: width,\n    height: height\n  }, rest);\n  if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n    className: clsx('recharts-cross', className),\n    d: getPath(x, y, width, height, top, left)\n  }));\n};","import { polarToCartesian } from '../PolarUtils';\n/**\n * Only applicable for radial layouts\n * @param {Object} activeCoordinate ChartCoordinate\n * @returns {Object} RadialCursorPoints\n */\nexport function getRadialCursorPoints(activeCoordinate) {\n  var cx = activeCoordinate.cx,\n    cy = activeCoordinate.cy,\n    radius = activeCoordinate.radius,\n    startAngle = activeCoordinate.startAngle,\n    endAngle = activeCoordinate.endAngle;\n  var startPoint = polarToCartesian(cx, cy, radius, startAngle);\n  var endPoint = polarToCartesian(cx, cy, radius, endAngle);\n  return {\n    points: [startPoint, endPoint],\n    cx: cx,\n    cy: cy,\n    radius: radius,\n    startAngle: startAngle,\n    endAngle: endAngle\n  };\n}","import { polarToCartesian } from '../PolarUtils';\nimport { getRadialCursorPoints } from './getRadialCursorPoints';\nexport function getCursorPoints(layout, activeCoordinate, offset) {\n  var x1, y1, x2, y2;\n  if (layout === 'horizontal') {\n    x1 = activeCoordinate.x;\n    x2 = x1;\n    y1 = offset.top;\n    y2 = offset.top + offset.height;\n  } else if (layout === 'vertical') {\n    y1 = activeCoordinate.y;\n    y2 = y1;\n    x1 = offset.left;\n    x2 = offset.left + offset.width;\n  } else if (activeCoordinate.cx != null && activeCoordinate.cy != null) {\n    if (layout === 'centric') {\n      var cx = activeCoordinate.cx,\n        cy = activeCoordinate.cy,\n        innerRadius = activeCoordinate.innerRadius,\n        outerRadius = activeCoordinate.outerRadius,\n        angle = activeCoordinate.angle;\n      var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n      var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n      x1 = innerPoint.x;\n      y1 = innerPoint.y;\n      x2 = outerPoint.x;\n      y2 = outerPoint.y;\n    } else {\n      return getRadialCursorPoints(activeCoordinate);\n    }\n  }\n  return [{\n    x: x1,\n    y: y1\n  }, {\n    x: x2,\n    y: y2\n  }];\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { cloneElement, createElement, isValidElement } from 'react';\nimport clsx from 'clsx';\nimport { Curve } from '../shape/Curve';\nimport { Cross } from '../shape/Cross';\nimport { getCursorRectangle } from '../util/cursor/getCursorRectangle';\nimport { Rectangle } from '../shape/Rectangle';\nimport { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';\nimport { Sector } from '../shape/Sector';\nimport { getCursorPoints } from '../util/cursor/getCursorPoints';\nimport { filterProps } from '../util/ReactUtils';\n/*\n * Cursor is the background, or a highlight,\n * that shows when user mouses over or activates\n * an area.\n *\n * It usually shows together with a tooltip\n * to emphasise which part of the chart does the tooltip refer to.\n */\nexport function Cursor(props) {\n  var _element$props$cursor, _defaultProps;\n  var element = props.element,\n    tooltipEventType = props.tooltipEventType,\n    isActive = props.isActive,\n    activeCoordinate = props.activeCoordinate,\n    activePayload = props.activePayload,\n    offset = props.offset,\n    activeTooltipIndex = props.activeTooltipIndex,\n    tooltipAxisBandSize = props.tooltipAxisBandSize,\n    layout = props.layout,\n    chartName = props.chartName;\n  var elementPropsCursor = (_element$props$cursor = element.props.cursor) !== null && _element$props$cursor !== void 0 ? _element$props$cursor : (_defaultProps = element.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps.cursor;\n  if (!element || !elementPropsCursor || !isActive || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {\n    return null;\n  }\n  var restProps;\n  var cursorComp = Curve;\n  if (chartName === 'ScatterChart') {\n    restProps = activeCoordinate;\n    cursorComp = Cross;\n  } else if (chartName === 'BarChart') {\n    restProps = getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize);\n    cursorComp = Rectangle;\n  } else if (layout === 'radial') {\n    var _getRadialCursorPoint = getRadialCursorPoints(activeCoordinate),\n      cx = _getRadialCursorPoint.cx,\n      cy = _getRadialCursorPoint.cy,\n      radius = _getRadialCursorPoint.radius,\n      startAngle = _getRadialCursorPoint.startAngle,\n      endAngle = _getRadialCursorPoint.endAngle;\n    restProps = {\n      cx: cx,\n      cy: cy,\n      startAngle: startAngle,\n      endAngle: endAngle,\n      innerRadius: radius,\n      outerRadius: radius\n    };\n    cursorComp = Sector;\n  } else {\n    restProps = {\n      points: getCursorPoints(layout, activeCoordinate, offset)\n    };\n    cursorComp = Curve;\n  }\n  var cursorProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n    stroke: '#ccc',\n    pointerEvents: 'none'\n  }, offset), restProps), filterProps(elementPropsCursor, false)), {}, {\n    payload: activePayload,\n    payloadIndex: activeTooltipIndex,\n    className: clsx('recharts-tooltip-cursor', elementPropsCursor.className)\n  });\n  return /*#__PURE__*/isValidElement(elementPropsCursor) ? /*#__PURE__*/cloneElement(elementPropsCursor, cursorProps) : /*#__PURE__*/createElement(cursorComp, cursorProps);\n}","export function getCursorRectangle(layout, activeCoordinate, offset, tooltipAxisBandSize) {\n  var halfSize = tooltipAxisBandSize / 2;\n  return {\n    stroke: 'none',\n    fill: '#ccc',\n    x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n    y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n    width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n    height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n  };\n}","var _excluded = [\"item\"],\n  _excluded2 = [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\", \"title\", \"desc\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { Component, cloneElement, isValidElement, forwardRef } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport get from 'lodash/get';\nimport sortBy from 'lodash/sortBy';\nimport throttle from 'lodash/throttle';\nimport clsx from 'clsx';\n// eslint-disable-next-line no-restricted-imports\n\nimport invariant from 'tiny-invariant';\nimport { Surface } from '../container/Surface';\nimport { Layer } from '../container/Layer';\nimport { Tooltip } from '../component/Tooltip';\nimport { Legend } from '../component/Legend';\nimport { Dot } from '../shape/Dot';\nimport { isInRectangle } from '../shape/Rectangle';\nimport { filterProps, findAllByType, findChildByType, getDisplayName, getReactEventByType, isChildrenEqual, parseChildIndex, renderByOrder, validateWidthHeight } from '../util/ReactUtils';\nimport { Brush } from '../cartesian/Brush';\nimport { getOffset } from '../util/DOMUtils';\nimport { findEntryInArray, getAnyElementOfObject, hasDuplicate, isNumber, uniqueId } from '../util/DataUtils';\nimport { appendOffsetOfLegend, calculateActiveTickIndex, combineEventHandlers, getBandSizeOfAxis, getBarPosition, getBarSizeList, getDomainOfDataByKey, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getLegendProps, getMainColorOfGraphicItem, getStackedDataOfItem, getStackGroupsByAxisId, getTicksOfAxis, getTooltipItem, isCategoricalAxis, parseDomainOfCategoryAxis, parseErrorBarsOfAxis, parseSpecifiedDomain } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nimport { adaptEventHandlers } from '../util/types';\nimport { AccessibilityManager } from './AccessibilityManager';\nimport { isDomainSpecifiedByUser } from '../util/isDomainSpecifiedByUser';\nimport { getActiveShapeIndexForTooltip, isFunnel, isPie, isScatter } from '../util/ActiveShapeUtils';\nimport { Cursor } from '../component/Cursor';\nimport { ChartLayoutContextProvider } from '../context/chartLayoutContext';\nvar ORIENT_MAP = {\n  xAxis: ['bottom', 'top'],\n  yAxis: ['left', 'right']\n};\nvar FULL_WIDTH_AND_HEIGHT = {\n  width: '100%',\n  height: '100%'\n};\nvar originCoordinate = {\n  x: 0,\n  y: 0\n};\n\n/**\n * This function exists as a temporary workaround.\n *\n * Why? generateCategoricalChart does not render `{children}` directly;\n * instead it passes them through `renderByOrder` function which reads their handlers.\n *\n * So, this is a handler that does nothing.\n * Once we get rid of `renderByOrder` and switch to JSX only, we can get rid of this handler too.\n *\n * @param {JSX} element as is in JSX\n * @returns {JSX} the same element\n */\nfunction renderAsIs(element) {\n  return element;\n}\nvar calculateTooltipPos = function calculateTooltipPos(rangeObj, layout) {\n  if (layout === 'horizontal') {\n    return rangeObj.x;\n  }\n  if (layout === 'vertical') {\n    return rangeObj.y;\n  }\n  if (layout === 'centric') {\n    return rangeObj.angle;\n  }\n  return rangeObj.radius;\n};\nvar getActiveCoordinate = function getActiveCoordinate(layout, tooltipTicks, activeIndex, rangeObj) {\n  var entry = tooltipTicks.find(function (tick) {\n    return tick && tick.index === activeIndex;\n  });\n  if (entry) {\n    if (layout === 'horizontal') {\n      return {\n        x: entry.coordinate,\n        y: rangeObj.y\n      };\n    }\n    if (layout === 'vertical') {\n      return {\n        x: rangeObj.x,\n        y: entry.coordinate\n      };\n    }\n    if (layout === 'centric') {\n      var _angle = entry.coordinate;\n      var _radius = rangeObj.radius;\n      return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle)), {}, {\n        angle: _angle,\n        radius: _radius\n      });\n    }\n    var radius = entry.coordinate;\n    var angle = rangeObj.angle;\n    return _objectSpread(_objectSpread(_objectSpread({}, rangeObj), polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle)), {}, {\n      angle: angle,\n      radius: radius\n    });\n  }\n  return originCoordinate;\n};\nvar getDisplayedData = function getDisplayedData(data, _ref) {\n  var graphicalItems = _ref.graphicalItems,\n    dataStartIndex = _ref.dataStartIndex,\n    dataEndIndex = _ref.dataEndIndex;\n  var itemsData = (graphicalItems !== null && graphicalItems !== void 0 ? graphicalItems : []).reduce(function (result, child) {\n    var itemData = child.props.data;\n    if (itemData && itemData.length) {\n      return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n    }\n    return result;\n  }, []);\n  if (itemsData.length > 0) {\n    return itemsData;\n  }\n  if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n    return data.slice(dataStartIndex, dataEndIndex + 1);\n  }\n  return [];\n};\nfunction getDefaultDomainByAxisType(axisType) {\n  return axisType === 'number' ? [0, 'auto'] : undefined;\n}\n\n/**\n * Get the content to be displayed in the tooltip\n * @param  {Object} state          Current state\n * @param  {Array}  chartData      The data defined in chart\n * @param  {Number} activeIndex    Active index of data\n * @param  {String} activeLabel    Active label of data\n * @return {Array}                 The content of tooltip\n */\nvar getTooltipContent = function getTooltipContent(state, chartData, activeIndex, activeLabel) {\n  var graphicalItems = state.graphicalItems,\n    tooltipAxis = state.tooltipAxis;\n  var displayedData = getDisplayedData(chartData, state);\n  if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n    return null;\n  }\n  // get data by activeIndex when the axis don't allow duplicated category\n  return graphicalItems.reduce(function (result, child) {\n    var _child$props$data;\n    /**\n     * Fixes: https://github.com/recharts/recharts/issues/3669\n     * Defaulting to chartData below to fix an edge case where the tooltip does not include data from all charts\n     * when a separate dataset is passed to chart prop data and specified on Line/Area/etc prop data\n     */\n    var data = (_child$props$data = child.props.data) !== null && _child$props$data !== void 0 ? _child$props$data : chartData;\n    if (data && state.dataStartIndex + state.dataEndIndex !== 0 &&\n    // https://github.com/recharts/recharts/issues/4717\n    // The data is sliced only when the active index is within the start/end index range.\n    state.dataEndIndex - state.dataStartIndex >= activeIndex) {\n      data = data.slice(state.dataStartIndex, state.dataEndIndex + 1);\n    }\n    var payload;\n    if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n      // graphic child has data props\n      var entries = data === undefined ? displayedData : data;\n      payload = findEntryInArray(entries, tooltipAxis.dataKey, activeLabel);\n    } else {\n      payload = data && data[activeIndex] || displayedData[activeIndex];\n    }\n    if (!payload) {\n      return result;\n    }\n    return [].concat(_toConsumableArray(result), [getTooltipItem(child, payload)]);\n  }, []);\n};\n\n/**\n * Returns tooltip data based on a mouse position (as a parameter or in state)\n * @param  {Object} state     current state\n * @param  {Array}  chartData the data defined in chart\n * @param  {String} layout     The layout type of chart\n * @param  {Object} rangeObj  { x, y } coordinates\n * @return {Object}           Tooltip data data\n */\nvar getTooltipData = function getTooltipData(state, chartData, layout, rangeObj) {\n  var rangeData = rangeObj || {\n    x: state.chartX,\n    y: state.chartY\n  };\n  var pos = calculateTooltipPos(rangeData, layout);\n  var ticks = state.orderedTooltipTicks,\n    axis = state.tooltipAxis,\n    tooltipTicks = state.tooltipTicks;\n  var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n  if (activeIndex >= 0 && tooltipTicks) {\n    var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n    var activePayload = getTooltipContent(state, chartData, activeIndex, activeLabel);\n    var activeCoordinate = getActiveCoordinate(layout, ticks, activeIndex, rangeData);\n    return {\n      activeTooltipIndex: activeIndex,\n      activeLabel: activeLabel,\n      activePayload: activePayload,\n      activeCoordinate: activeCoordinate\n    };\n  }\n  return null;\n};\n\n/**\n * Get the configuration of axis by the options of axis instance\n * @param  {Object} props         Latest props\n * @param {Array}  axes           The instance of axes\n * @param  {Array} graphicalItems The instances of item\n * @param  {String} axisType      The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param  {String} axisIdKey     The unique id of an axis\n * @param  {Object} stackGroups   The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex   The end index of the data series when a brush is applied\n * @return {Object}      Configuration\n */\nexport var getAxisMapByAxes = function getAxisMapByAxes(props, _ref2) {\n  var axes = _ref2.axes,\n    graphicalItems = _ref2.graphicalItems,\n    axisType = _ref2.axisType,\n    axisIdKey = _ref2.axisIdKey,\n    stackGroups = _ref2.stackGroups,\n    dataStartIndex = _ref2.dataStartIndex,\n    dataEndIndex = _ref2.dataEndIndex;\n  var layout = props.layout,\n    children = props.children,\n    stackOffset = props.stackOffset;\n  var isCategorical = isCategoricalAxis(layout, axisType);\n\n  // Eliminate duplicated axes\n  return axes.reduce(function (result, child) {\n    var _childProps$domain2;\n    var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n    var type = childProps.type,\n      dataKey = childProps.dataKey,\n      allowDataOverflow = childProps.allowDataOverflow,\n      allowDuplicatedCategory = childProps.allowDuplicatedCategory,\n      scale = childProps.scale,\n      ticks = childProps.ticks,\n      includeHidden = childProps.includeHidden;\n    var axisId = childProps[axisIdKey];\n    if (result[axisId]) {\n      return result;\n    }\n    var displayedData = getDisplayedData(props.data, {\n      graphicalItems: graphicalItems.filter(function (item) {\n        var _defaultProps;\n        var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps = item.type.defaultProps) === null || _defaultProps === void 0 ? void 0 : _defaultProps[axisIdKey];\n        return itemAxisId === axisId;\n      }),\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n    var len = displayedData.length;\n    var domain, duplicateDomain, categoricalDomain;\n\n    /*\n     * This is a hack to short-circuit the domain creation here to enhance performance.\n     * Usually, the data is used to determine the domain, but when the user specifies\n     * a domain upfront (via props), there is no need to calculate the domain start and end,\n     * which is very expensive for a larger amount of data.\n     * The only thing that would prohibit short-circuiting is when the user doesn't allow data overflow,\n     * because the axis is supposed to ignore the specified domain that way.\n     */\n    if (isDomainSpecifiedByUser(childProps.domain, allowDataOverflow, type)) {\n      domain = parseSpecifiedDomain(childProps.domain, null, allowDataOverflow);\n      /* The chart can be categorical and have the domain specified in numbers\n       * we still need to calculate the categorical domain\n       * TODO: refactor this more\n       */\n      if (isCategorical && (type === 'number' || scale !== 'auto')) {\n        categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n      }\n    }\n\n    // if the domain is defaulted we need this for `originalDomain` as well\n    var defaultDomain = getDefaultDomainByAxisType(type);\n\n    // we didn't create the domain from user's props above, so we need to calculate it\n    if (!domain || domain.length === 0) {\n      var _childProps$domain;\n      var childDomain = (_childProps$domain = childProps.domain) !== null && _childProps$domain !== void 0 ? _childProps$domain : defaultDomain;\n      if (dataKey) {\n        // has dataKey in <Axis />\n        domain = getDomainOfDataByKey(displayedData, dataKey, type);\n        if (type === 'category' && isCategorical) {\n          // the field type is category data and this axis is categorical axis\n          var duplicate = hasDuplicate(domain);\n          if (allowDuplicatedCategory && duplicate) {\n            duplicateDomain = domain;\n            // When category axis has duplicated text, serial numbers are used to generate scale\n            domain = range(0, len);\n          } else if (!allowDuplicatedCategory) {\n            // remove duplicated category\n            domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n              return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n            }, []);\n          }\n        } else if (type === 'category') {\n          // the field type is category data and this axis is numerical axis\n          if (!allowDuplicatedCategory) {\n            domain = parseDomainOfCategoryAxis(childDomain, domain, child).reduce(function (finalDomain, entry) {\n              return finalDomain.indexOf(entry) >= 0 || entry === '' || isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n            }, []);\n          } else {\n            // eliminate undefined or null or empty string\n            domain = domain.filter(function (entry) {\n              return entry !== '' && !isNil(entry);\n            });\n          }\n        } else if (type === 'number') {\n          // the field type is numerical\n          var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n            var _defaultProps2, _defaultProps3;\n            var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps2 = item.type.defaultProps) === null || _defaultProps2 === void 0 ? void 0 : _defaultProps2[axisIdKey];\n            var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps3 = item.type.defaultProps) === null || _defaultProps3 === void 0 ? void 0 : _defaultProps3.hide;\n            return itemAxisId === axisId && (includeHidden || !itemHide);\n          }), dataKey, axisType, layout);\n          if (errorBarsDomain) {\n            domain = errorBarsDomain;\n          }\n        }\n        if (isCategorical && (type === 'number' || scale !== 'auto')) {\n          categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n        }\n      } else if (isCategorical) {\n        // the axis is a categorical axis\n        domain = range(0, len);\n      } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n        // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n        domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n      } else {\n        domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n          var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : item.type.defaultProps[axisIdKey];\n          var itemHide = 'hide' in item.props ? item.props.hide : item.type.defaultProps.hide;\n          return itemAxisId === axisId && (includeHidden || !itemHide);\n        }), type, layout, true);\n      }\n      if (type === 'number') {\n        // To detect wether there is any reference lines whose props alwaysShow is true\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n        if (childDomain) {\n          domain = parseSpecifiedDomain(childDomain, domain, allowDataOverflow);\n        }\n      } else if (type === 'category' && childDomain) {\n        var axisDomain = childDomain;\n        var isDomainValid = domain.every(function (entry) {\n          return axisDomain.indexOf(entry) >= 0;\n        });\n        if (isDomainValid) {\n          domain = axisDomain;\n        }\n      }\n    }\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({}, childProps), {}, {\n      axisType: axisType,\n      domain: domain,\n      categoricalDomain: categoricalDomain,\n      duplicateDomain: duplicateDomain,\n      originalDomain: (_childProps$domain2 = childProps.domain) !== null && _childProps$domain2 !== void 0 ? _childProps$domain2 : defaultDomain,\n      isCategorical: isCategorical,\n      layout: layout\n    })));\n  }, {});\n};\n\n/**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param  {Object} props         Latest props\n * @param  {Array} graphicalItems The instances of item\n * @param  {ReactElement} Axis    Axis Component\n * @param  {String} axisType      The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param  {String} axisIdKey     The unique id of an axis\n * @param  {Object} stackGroups   The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex   The end index of the data series when a brush is applied\n * @return {Object}               Configuration\n */\nvar getAxisMapByItems = function getAxisMapByItems(props, _ref3) {\n  var graphicalItems = _ref3.graphicalItems,\n    Axis = _ref3.Axis,\n    axisType = _ref3.axisType,\n    axisIdKey = _ref3.axisIdKey,\n    stackGroups = _ref3.stackGroups,\n    dataStartIndex = _ref3.dataStartIndex,\n    dataEndIndex = _ref3.dataEndIndex;\n  var layout = props.layout,\n    children = props.children;\n  var displayedData = getDisplayedData(props.data, {\n    graphicalItems: graphicalItems,\n    dataStartIndex: dataStartIndex,\n    dataEndIndex: dataEndIndex\n  });\n  var len = displayedData.length;\n  var isCategorical = isCategoricalAxis(layout, axisType);\n  var index = -1;\n\n  // The default type of x-axis is category axis,\n  // The default contents of x-axis is the serial numbers of data\n  // The default type of y-axis is number axis\n  // The default contents of y-axis is the domain of data\n  return graphicalItems.reduce(function (result, child) {\n    var childProps = child.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, child.type.defaultProps), child.props) : child.props;\n    var axisId = childProps[axisIdKey];\n    var originalDomain = getDefaultDomainByAxisType('number');\n    if (!result[axisId]) {\n      index++;\n      var domain;\n      if (isCategorical) {\n        domain = range(0, len);\n      } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n        domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n      } else {\n        domain = parseSpecifiedDomain(originalDomain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n          var _defaultProps4, _defaultProps5;\n          var itemAxisId = axisIdKey in item.props ? item.props[axisIdKey] : (_defaultProps4 = item.type.defaultProps) === null || _defaultProps4 === void 0 ? void 0 : _defaultProps4[axisIdKey];\n          var itemHide = 'hide' in item.props ? item.props.hide : (_defaultProps5 = item.type.defaultProps) === null || _defaultProps5 === void 0 ? void 0 : _defaultProps5.hide;\n          return itemAxisId === axisId && !itemHide;\n        }), 'number', layout), Axis.defaultProps.allowDataOverflow);\n        domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n      }\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, _objectSpread(_objectSpread({\n        axisType: axisType\n      }, Axis.defaultProps), {}, {\n        hide: true,\n        orientation: get(ORIENT_MAP, \"\".concat(axisType, \".\").concat(index % 2), null),\n        domain: domain,\n        originalDomain: originalDomain,\n        isCategorical: isCategorical,\n        layout: layout\n        // specify scale when no Axis\n        // scale: isCategorical ? 'band' : 'linear',\n      })));\n    }\n    return result;\n  }, {});\n};\n\n/**\n * Get the configuration of all x-axis or y-axis\n * @param  {Object} props          Latest props\n * @param  {String} axisType       The type of axis\n * @param  {React.ComponentType}  [AxisComp]      Axis Component\n * @param  {Array}  graphicalItems The instances of item\n * @param  {Object} stackGroups    The items grouped by axisId and stackId\n * @param {Number} dataStartIndex  The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex    The end index of the data series when a brush is applied\n * @return {Object}          Configuration\n */\nvar getAxisMap = function getAxisMap(props, _ref4) {\n  var _ref4$axisType = _ref4.axisType,\n    axisType = _ref4$axisType === void 0 ? 'xAxis' : _ref4$axisType,\n    AxisComp = _ref4.AxisComp,\n    graphicalItems = _ref4.graphicalItems,\n    stackGroups = _ref4.stackGroups,\n    dataStartIndex = _ref4.dataStartIndex,\n    dataEndIndex = _ref4.dataEndIndex;\n  var children = props.children;\n  var axisIdKey = \"\".concat(axisType, \"Id\");\n  // Get all the instance of Axis\n  var axes = findAllByType(children, AxisComp);\n  var axisMap = {};\n  if (axes && axes.length) {\n    axisMap = getAxisMapByAxes(props, {\n      axes: axes,\n      graphicalItems: graphicalItems,\n      axisType: axisType,\n      axisIdKey: axisIdKey,\n      stackGroups: stackGroups,\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n  } else if (graphicalItems && graphicalItems.length) {\n    axisMap = getAxisMapByItems(props, {\n      Axis: AxisComp,\n      graphicalItems: graphicalItems,\n      axisType: axisType,\n      axisIdKey: axisIdKey,\n      stackGroups: stackGroups,\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex\n    });\n  }\n  return axisMap;\n};\nvar tooltipTicksGenerator = function tooltipTicksGenerator(axisMap) {\n  var axis = getAnyElementOfObject(axisMap);\n  var tooltipTicks = getTicksOfAxis(axis, false, true);\n  return {\n    tooltipTicks: tooltipTicks,\n    orderedTooltipTicks: sortBy(tooltipTicks, function (o) {\n      return o.coordinate;\n    }),\n    tooltipAxis: axis,\n    tooltipAxisBandSize: getBandSizeOfAxis(axis, tooltipTicks)\n  };\n};\n\n/**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\nexport var createDefaultState = function createDefaultState(props) {\n  var children = props.children,\n    defaultShowTooltip = props.defaultShowTooltip;\n  var brushItem = findChildByType(children, Brush);\n  var startIndex = 0;\n  var endIndex = 0;\n  if (props.data && props.data.length !== 0) {\n    endIndex = props.data.length - 1;\n  }\n  if (brushItem && brushItem.props) {\n    if (brushItem.props.startIndex >= 0) {\n      startIndex = brushItem.props.startIndex;\n    }\n    if (brushItem.props.endIndex >= 0) {\n      endIndex = brushItem.props.endIndex;\n    }\n  }\n  return {\n    chartX: 0,\n    chartY: 0,\n    dataStartIndex: startIndex,\n    dataEndIndex: endIndex,\n    activeTooltipIndex: -1,\n    isTooltipActive: Boolean(defaultShowTooltip)\n  };\n};\nvar hasGraphicalBarItem = function hasGraphicalBarItem(graphicalItems) {\n  if (!graphicalItems || !graphicalItems.length) {\n    return false;\n  }\n  return graphicalItems.some(function (item) {\n    var name = getDisplayName(item && item.type);\n    return name && name.indexOf('Bar') >= 0;\n  });\n};\nvar getAxisNameByLayout = function getAxisNameByLayout(layout) {\n  if (layout === 'horizontal') {\n    return {\n      numericAxisName: 'yAxis',\n      cateAxisName: 'xAxis'\n    };\n  }\n  if (layout === 'vertical') {\n    return {\n      numericAxisName: 'xAxis',\n      cateAxisName: 'yAxis'\n    };\n  }\n  if (layout === 'centric') {\n    return {\n      numericAxisName: 'radiusAxis',\n      cateAxisName: 'angleAxis'\n    };\n  }\n  return {\n    numericAxisName: 'angleAxis',\n    cateAxisName: 'radiusAxis'\n  };\n};\n\n/**\n * Calculate the offset of main part in the svg element\n * @param  {Object} params.props          Latest props\n * @param  {Array}  params.graphicalItems The instances of item\n * @param  {Object} params.xAxisMap       The configuration of x-axis\n * @param  {Object} params.yAxisMap       The configuration of y-axis\n * @param  {Object} prevLegendBBox        The boundary box of legend\n * @return {Object} The offset of main part in the svg element\n */\nvar calculateOffset = function calculateOffset(_ref5, prevLegendBBox) {\n  var props = _ref5.props,\n    graphicalItems = _ref5.graphicalItems,\n    _ref5$xAxisMap = _ref5.xAxisMap,\n    xAxisMap = _ref5$xAxisMap === void 0 ? {} : _ref5$xAxisMap,\n    _ref5$yAxisMap = _ref5.yAxisMap,\n    yAxisMap = _ref5$yAxisMap === void 0 ? {} : _ref5$yAxisMap;\n  var width = props.width,\n    height = props.height,\n    children = props.children;\n  var margin = props.margin || {};\n  var brushItem = findChildByType(children, Brush);\n  var legendItem = findChildByType(children, Legend);\n  var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n    var entry = yAxisMap[id];\n    var orientation = entry.orientation;\n    if (!entry.mirror && !entry.hide) {\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, result[orientation] + entry.width));\n    }\n    return result;\n  }, {\n    left: margin.left || 0,\n    right: margin.right || 0\n  });\n  var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n    var entry = xAxisMap[id];\n    var orientation = entry.orientation;\n    if (!entry.mirror && !entry.hide) {\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, orientation, get(result, \"\".concat(orientation)) + entry.height));\n    }\n    return result;\n  }, {\n    top: margin.top || 0,\n    bottom: margin.bottom || 0\n  });\n  var offset = _objectSpread(_objectSpread({}, offsetV), offsetH);\n  var brushBottom = offset.bottom;\n  if (brushItem) {\n    offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n  }\n  if (legendItem && prevLegendBBox) {\n    // @ts-expect-error margin is optional in props but required in appendOffsetOfLegend\n    offset = appendOffsetOfLegend(offset, graphicalItems, props, prevLegendBBox);\n  }\n  var offsetWidth = width - offset.left - offset.right;\n  var offsetHeight = height - offset.top - offset.bottom;\n  return _objectSpread(_objectSpread({\n    brushBottom: brushBottom\n  }, offset), {}, {\n    // never return negative values for height and width\n    width: Math.max(offsetWidth, 0),\n    height: Math.max(offsetHeight, 0)\n  });\n};\n// Determine the size of the axis, used for calculation of relative bar sizes\nvar getCartesianAxisSize = function getCartesianAxisSize(axisObj, axisName) {\n  if (axisName === 'xAxis') {\n    return axisObj[axisName].width;\n  }\n  if (axisName === 'yAxis') {\n    return axisObj[axisName].height;\n  }\n  // This is only supported for Bar charts (i.e. charts with cartesian axes), so we should never get here\n  return undefined;\n};\nexport var generateCategoricalChart = function generateCategoricalChart(_ref6) {\n  var chartName = _ref6.chartName,\n    GraphicalChild = _ref6.GraphicalChild,\n    _ref6$defaultTooltipE = _ref6.defaultTooltipEventType,\n    defaultTooltipEventType = _ref6$defaultTooltipE === void 0 ? 'axis' : _ref6$defaultTooltipE,\n    _ref6$validateTooltip = _ref6.validateTooltipEventTypes,\n    validateTooltipEventTypes = _ref6$validateTooltip === void 0 ? ['axis'] : _ref6$validateTooltip,\n    axisComponents = _ref6.axisComponents,\n    legendContent = _ref6.legendContent,\n    formatAxisMap = _ref6.formatAxisMap,\n    defaultProps = _ref6.defaultProps;\n  var getFormatItems = function getFormatItems(props, currentState) {\n    var graphicalItems = currentState.graphicalItems,\n      stackGroups = currentState.stackGroups,\n      offset = currentState.offset,\n      updateId = currentState.updateId,\n      dataStartIndex = currentState.dataStartIndex,\n      dataEndIndex = currentState.dataEndIndex;\n    var barSize = props.barSize,\n      layout = props.layout,\n      barGap = props.barGap,\n      barCategoryGap = props.barCategoryGap,\n      globalMaxBarSize = props.maxBarSize;\n    var _getAxisNameByLayout = getAxisNameByLayout(layout),\n      numericAxisName = _getAxisNameByLayout.numericAxisName,\n      cateAxisName = _getAxisNameByLayout.cateAxisName;\n    var hasBar = hasGraphicalBarItem(graphicalItems);\n    var formattedItems = [];\n    graphicalItems.forEach(function (item, index) {\n      var displayedData = getDisplayedData(props.data, {\n        graphicalItems: [item],\n        dataStartIndex: dataStartIndex,\n        dataEndIndex: dataEndIndex\n      });\n      var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n      var dataKey = itemProps.dataKey,\n        childMaxBarSize = itemProps.maxBarSize;\n      // axisId of the numerical axis\n      var numericAxisId = itemProps[\"\".concat(numericAxisName, \"Id\")];\n      // axisId of the categorical axis\n      var cateAxisId = itemProps[\"\".concat(cateAxisName, \"Id\")];\n      var axisObjInitialValue = {};\n      var axisObj = axisComponents.reduce(function (result, entry) {\n        var _item$type$displayNam, _item$type;\n        // map of axisId to axis for a specific axis type\n        var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n        // axisId of axis we are currently computing\n        var id = itemProps[\"\".concat(entry.axisType, \"Id\")];\n\n        /**\n         * tell the user in dev mode that their configuration is incorrect if we cannot find a match between\n         * axisId on the chart and axisId on the axis. zAxis does not get passed in the map for ComposedChart,\n         * leave it out of the check for now.\n         */\n        !(axisMap && axisMap[id] || entry.axisType === 'zAxis') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Specifying a(n) \".concat(entry.axisType, \"Id requires a corresponding \").concat(entry.axisType\n        // @ts-expect-error we should stop reading data from ReactElements\n        , \"Id on the targeted graphical component \").concat((_item$type$displayNam = item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) !== null && _item$type$displayNam !== void 0 ? _item$type$displayNam : '')) : invariant(false) : void 0;\n\n        // the axis we are currently formatting\n        var axis = axisMap[id];\n        return _objectSpread(_objectSpread({}, result), {}, _defineProperty(_defineProperty({}, entry.axisType, axis), \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)));\n      }, axisObjInitialValue);\n      var cateAxis = axisObj[cateAxisName];\n      var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n      var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n      var itemIsBar = getDisplayName(item.type).indexOf('Bar') >= 0;\n      var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n      var barPosition = [];\n      var sizeList = hasBar && getBarSizeList({\n        barSize: barSize,\n        stackGroups: stackGroups,\n        totalSize: getCartesianAxisSize(axisObj, cateAxisName)\n      });\n      if (itemIsBar) {\n        var _ref7, _getBandSizeOfAxis;\n        // If it is bar, calculate the position of bar\n        var maxBarSize = isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n        var barBandSize = (_ref7 = (_getBandSizeOfAxis = getBandSizeOfAxis(cateAxis, cateTicks, true)) !== null && _getBandSizeOfAxis !== void 0 ? _getBandSizeOfAxis : maxBarSize) !== null && _ref7 !== void 0 ? _ref7 : 0;\n        barPosition = getBarPosition({\n          barGap: barGap,\n          barCategoryGap: barCategoryGap,\n          bandSize: barBandSize !== bandSize ? barBandSize : bandSize,\n          sizeList: sizeList[cateAxisId],\n          maxBarSize: maxBarSize\n        });\n        if (barBandSize !== bandSize) {\n          barPosition = barPosition.map(function (pos) {\n            return _objectSpread(_objectSpread({}, pos), {}, {\n              position: _objectSpread(_objectSpread({}, pos.position), {}, {\n                offset: pos.position.offset - barBandSize / 2\n              })\n            });\n          });\n        }\n      }\n      // @ts-expect-error we should stop reading data from ReactElements\n      var composedFn = item && item.type && item.type.getComposedData;\n      if (composedFn) {\n        formattedItems.push({\n          props: _objectSpread(_objectSpread({}, composedFn(_objectSpread(_objectSpread({}, axisObj), {}, {\n            displayedData: displayedData,\n            props: props,\n            dataKey: dataKey,\n            item: item,\n            bandSize: bandSize,\n            barPosition: barPosition,\n            offset: offset,\n            stackedData: stackedData,\n            layout: layout,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex\n          }))), {}, _defineProperty(_defineProperty(_defineProperty({\n            key: item.key || \"item-\".concat(index)\n          }, numericAxisName, axisObj[numericAxisName]), cateAxisName, axisObj[cateAxisName]), \"animationId\", updateId)),\n          childIndex: parseChildIndex(item, props.children),\n          item: item\n        });\n      }\n    });\n    return formattedItems;\n  };\n\n  /**\n   * The AxisMaps are expensive to render on large data sets\n   * so provide the ability to store them in state and only update them when necessary\n   * they are dependent upon the start and end index of\n   * the brush so it's important that this method is called _after_\n   * the state is updated with any new start/end indices\n   *\n   * @param {Object} props          The props object to be used for updating the axismaps\n   * dataStartIndex: The start index of the data series when a brush is applied\n   * dataEndIndex: The end index of the data series when a brush is applied\n   * updateId: The update id\n   * @param {Object} prevState      Prev state\n   * @return {Object} state New state to set\n   */\n  var updateStateOfAxisMapsOffsetAndStackGroups = function updateStateOfAxisMapsOffsetAndStackGroups(_ref8, prevState) {\n    var props = _ref8.props,\n      dataStartIndex = _ref8.dataStartIndex,\n      dataEndIndex = _ref8.dataEndIndex,\n      updateId = _ref8.updateId;\n    if (!validateWidthHeight({\n      props: props\n    })) {\n      return null;\n    }\n    var children = props.children,\n      layout = props.layout,\n      stackOffset = props.stackOffset,\n      data = props.data,\n      reverseStackOrder = props.reverseStackOrder;\n    var _getAxisNameByLayout2 = getAxisNameByLayout(layout),\n      numericAxisName = _getAxisNameByLayout2.numericAxisName,\n      cateAxisName = _getAxisNameByLayout2.cateAxisName;\n    var graphicalItems = findAllByType(children, GraphicalChild);\n    var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n    var axisObj = axisComponents.reduce(function (result, entry) {\n      var name = \"\".concat(entry.axisType, \"Map\");\n      return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, name, getAxisMap(props, _objectSpread(_objectSpread({}, entry), {}, {\n        graphicalItems: graphicalItems,\n        stackGroups: entry.axisType === numericAxisName && stackGroups,\n        dataStartIndex: dataStartIndex,\n        dataEndIndex: dataEndIndex\n      }))));\n    }, {});\n    var offset = calculateOffset(_objectSpread(_objectSpread({}, axisObj), {}, {\n      props: props,\n      graphicalItems: graphicalItems\n    }), prevState === null || prevState === void 0 ? void 0 : prevState.legendBBox);\n    Object.keys(axisObj).forEach(function (key) {\n      axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n    });\n    var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n    var ticksObj = tooltipTicksGenerator(cateAxisMap);\n    var formattedGraphicalItems = getFormatItems(props, _objectSpread(_objectSpread({}, axisObj), {}, {\n      dataStartIndex: dataStartIndex,\n      dataEndIndex: dataEndIndex,\n      updateId: updateId,\n      graphicalItems: graphicalItems,\n      stackGroups: stackGroups,\n      offset: offset\n    }));\n    return _objectSpread(_objectSpread({\n      formattedGraphicalItems: formattedGraphicalItems,\n      graphicalItems: graphicalItems,\n      offset: offset,\n      stackGroups: stackGroups\n    }, ticksObj), axisObj);\n  };\n  var CategoricalChartWrapper = /*#__PURE__*/function (_Component) {\n    function CategoricalChartWrapper(_props) {\n      var _props$id, _props$throttleDelay;\n      var _this;\n      _classCallCheck(this, CategoricalChartWrapper);\n      _this = _callSuper(this, CategoricalChartWrapper, [_props]);\n      _defineProperty(_this, \"eventEmitterSymbol\", Symbol('rechartsEventEmitter'));\n      _defineProperty(_this, \"accessibilityManager\", new AccessibilityManager());\n      _defineProperty(_this, \"handleLegendBBoxUpdate\", function (box) {\n        if (box) {\n          var _this$state = _this.state,\n            dataStartIndex = _this$state.dataStartIndex,\n            dataEndIndex = _this$state.dataEndIndex,\n            updateId = _this$state.updateId;\n          _this.setState(_objectSpread({\n            legendBBox: box\n          }, updateStateOfAxisMapsOffsetAndStackGroups({\n            props: _this.props,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex,\n            updateId: updateId\n          }, _objectSpread(_objectSpread({}, _this.state), {}, {\n            legendBBox: box\n          }))));\n        }\n      });\n      _defineProperty(_this, \"handleReceiveSyncEvent\", function (cId, data, emitter) {\n        if (_this.props.syncId === cId) {\n          if (emitter === _this.eventEmitterSymbol && typeof _this.props.syncMethod !== 'function') {\n            return;\n          }\n          _this.applySyncEvent(data);\n        }\n      });\n      _defineProperty(_this, \"handleBrushChange\", function (_ref9) {\n        var startIndex = _ref9.startIndex,\n          endIndex = _ref9.endIndex;\n        // Only trigger changes if the extents of the brush have actually changed\n        if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n          var updateId = _this.state.updateId;\n          _this.setState(function () {\n            return _objectSpread({\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex\n            }, updateStateOfAxisMapsOffsetAndStackGroups({\n              props: _this.props,\n              dataStartIndex: startIndex,\n              dataEndIndex: endIndex,\n              updateId: updateId\n            }, _this.state));\n          });\n          _this.triggerSyncEvent({\n            dataStartIndex: startIndex,\n            dataEndIndex: endIndex\n          });\n        }\n      });\n      /**\n       * The handler of mouse entering chart\n       * @param  {Object} e              Event object\n       * @return {Null}                  null\n       */\n      _defineProperty(_this, \"handleMouseEnter\", function (e) {\n        var mouse = _this.getMouseInfo(e);\n        if (mouse) {\n          var _nextState = _objectSpread(_objectSpread({}, mouse), {}, {\n            isTooltipActive: true\n          });\n          _this.setState(_nextState);\n          _this.triggerSyncEvent(_nextState);\n          var onMouseEnter = _this.props.onMouseEnter;\n          if (isFunction(onMouseEnter)) {\n            onMouseEnter(_nextState, e);\n          }\n        }\n      });\n      _defineProperty(_this, \"triggeredAfterMouseMove\", function (e) {\n        var mouse = _this.getMouseInfo(e);\n        var nextState = mouse ? _objectSpread(_objectSpread({}, mouse), {}, {\n          isTooltipActive: true\n        }) : {\n          isTooltipActive: false\n        };\n        _this.setState(nextState);\n        _this.triggerSyncEvent(nextState);\n        var onMouseMove = _this.props.onMouseMove;\n        if (isFunction(onMouseMove)) {\n          onMouseMove(nextState, e);\n        }\n      });\n      /**\n       * The handler of mouse entering a scatter\n       * @param {Object} el The active scatter\n       * @return {Object} no return\n       */\n      _defineProperty(_this, \"handleItemMouseEnter\", function (el) {\n        _this.setState(function () {\n          return {\n            isTooltipActive: true,\n            activeItem: el,\n            activePayload: el.tooltipPayload,\n            activeCoordinate: el.tooltipPosition || {\n              x: el.cx,\n              y: el.cy\n            }\n          };\n        });\n      });\n      /**\n       * The handler of mouse leaving a scatter\n       * @return {Object} no return\n       */\n      _defineProperty(_this, \"handleItemMouseLeave\", function () {\n        _this.setState(function () {\n          return {\n            isTooltipActive: false\n          };\n        });\n      });\n      /**\n       * The handler of mouse moving in chart\n       * @param  {React.MouseEvent} e        Event object\n       * @return {void} no return\n       */\n      _defineProperty(_this, \"handleMouseMove\", function (e) {\n        e.persist();\n        _this.throttleTriggeredAfterMouseMove(e);\n      });\n      /**\n       * The handler if mouse leaving chart\n       * @param {Object} e Event object\n       * @return {Null} no return\n       */\n      _defineProperty(_this, \"handleMouseLeave\", function (e) {\n        _this.throttleTriggeredAfterMouseMove.cancel();\n        var nextState = {\n          isTooltipActive: false\n        };\n        _this.setState(nextState);\n        _this.triggerSyncEvent(nextState);\n        var onMouseLeave = _this.props.onMouseLeave;\n        if (isFunction(onMouseLeave)) {\n          onMouseLeave(nextState, e);\n        }\n      });\n      _defineProperty(_this, \"handleOuterEvent\", function (e) {\n        var eventName = getReactEventByType(e);\n        var event = get(_this.props, \"\".concat(eventName));\n        if (eventName && isFunction(event)) {\n          var _mouse;\n          var mouse;\n          if (/.*touch.*/i.test(eventName)) {\n            mouse = _this.getMouseInfo(e.changedTouches[0]);\n          } else {\n            mouse = _this.getMouseInfo(e);\n          }\n          event((_mouse = mouse) !== null && _mouse !== void 0 ? _mouse : {}, e);\n        }\n      });\n      _defineProperty(_this, \"handleClick\", function (e) {\n        var mouse = _this.getMouseInfo(e);\n        if (mouse) {\n          var _nextState2 = _objectSpread(_objectSpread({}, mouse), {}, {\n            isTooltipActive: true\n          });\n          _this.setState(_nextState2);\n          _this.triggerSyncEvent(_nextState2);\n          var onClick = _this.props.onClick;\n          if (isFunction(onClick)) {\n            onClick(_nextState2, e);\n          }\n        }\n      });\n      _defineProperty(_this, \"handleMouseDown\", function (e) {\n        var onMouseDown = _this.props.onMouseDown;\n        if (isFunction(onMouseDown)) {\n          var _nextState3 = _this.getMouseInfo(e);\n          onMouseDown(_nextState3, e);\n        }\n      });\n      _defineProperty(_this, \"handleMouseUp\", function (e) {\n        var onMouseUp = _this.props.onMouseUp;\n        if (isFunction(onMouseUp)) {\n          var _nextState4 = _this.getMouseInfo(e);\n          onMouseUp(_nextState4, e);\n        }\n      });\n      _defineProperty(_this, \"handleTouchMove\", function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.throttleTriggeredAfterMouseMove(e.changedTouches[0]);\n        }\n      });\n      _defineProperty(_this, \"handleTouchStart\", function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.handleMouseDown(e.changedTouches[0]);\n        }\n      });\n      _defineProperty(_this, \"handleTouchEnd\", function (e) {\n        if (e.changedTouches != null && e.changedTouches.length > 0) {\n          _this.handleMouseUp(e.changedTouches[0]);\n        }\n      });\n      _defineProperty(_this, \"triggerSyncEvent\", function (data) {\n        if (_this.props.syncId !== undefined) {\n          eventCenter.emit(SYNC_EVENT, _this.props.syncId, data, _this.eventEmitterSymbol);\n        }\n      });\n      _defineProperty(_this, \"applySyncEvent\", function (data) {\n        var _this$props = _this.props,\n          layout = _this$props.layout,\n          syncMethod = _this$props.syncMethod;\n        var updateId = _this.state.updateId;\n        var dataStartIndex = data.dataStartIndex,\n          dataEndIndex = data.dataEndIndex;\n        if (data.dataStartIndex !== undefined || data.dataEndIndex !== undefined) {\n          _this.setState(_objectSpread({\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex\n          }, updateStateOfAxisMapsOffsetAndStackGroups({\n            props: _this.props,\n            dataStartIndex: dataStartIndex,\n            dataEndIndex: dataEndIndex,\n            updateId: updateId\n          }, _this.state)));\n        } else if (data.activeTooltipIndex !== undefined) {\n          var chartX = data.chartX,\n            chartY = data.chartY;\n          var activeTooltipIndex = data.activeTooltipIndex;\n          var _this$state2 = _this.state,\n            offset = _this$state2.offset,\n            tooltipTicks = _this$state2.tooltipTicks;\n          if (!offset) {\n            return;\n          }\n          if (typeof syncMethod === 'function') {\n            // Call a callback function. If there is an application specific algorithm\n            activeTooltipIndex = syncMethod(tooltipTicks, data);\n          } else if (syncMethod === 'value') {\n            // Set activeTooltipIndex to the index with the same value as data.activeLabel\n            // For loop instead of findIndex because the latter is very slow in some browsers\n            activeTooltipIndex = -1; // in case we cannot find the element\n            for (var i = 0; i < tooltipTicks.length; i++) {\n              if (tooltipTicks[i].value === data.activeLabel) {\n                activeTooltipIndex = i;\n                break;\n              }\n            }\n          }\n          var viewBox = _objectSpread(_objectSpread({}, offset), {}, {\n            x: offset.left,\n            y: offset.top\n          });\n          // When a categorical chart is combined with another chart, the value of chartX\n          // and chartY may beyond the boundaries.\n          var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n          var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n          var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n          var activePayload = getTooltipContent(_this.state, _this.props.data, activeTooltipIndex);\n          var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n            x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n            y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n          } : originCoordinate;\n          _this.setState(_objectSpread(_objectSpread({}, data), {}, {\n            activeLabel: activeLabel,\n            activeCoordinate: activeCoordinate,\n            activePayload: activePayload,\n            activeTooltipIndex: activeTooltipIndex\n          }));\n        } else {\n          _this.setState(data);\n        }\n      });\n      _defineProperty(_this, \"renderCursor\", function (element) {\n        var _element$props$active;\n        var _this$state3 = _this.state,\n          isTooltipActive = _this$state3.isTooltipActive,\n          activeCoordinate = _this$state3.activeCoordinate,\n          activePayload = _this$state3.activePayload,\n          offset = _this$state3.offset,\n          activeTooltipIndex = _this$state3.activeTooltipIndex,\n          tooltipAxisBandSize = _this$state3.tooltipAxisBandSize;\n        var tooltipEventType = _this.getTooltipEventType();\n        // The cursor is a part of the Tooltip, and it should be shown (by default) when the Tooltip is active.\n        var isActive = (_element$props$active = element.props.active) !== null && _element$props$active !== void 0 ? _element$props$active : isTooltipActive;\n        var layout = _this.props.layout;\n        var key = element.key || '_recharts-cursor';\n        return /*#__PURE__*/React.createElement(Cursor, {\n          key: key,\n          activeCoordinate: activeCoordinate,\n          activePayload: activePayload,\n          activeTooltipIndex: activeTooltipIndex,\n          chartName: chartName,\n          element: element,\n          isActive: isActive,\n          layout: layout,\n          offset: offset,\n          tooltipAxisBandSize: tooltipAxisBandSize,\n          tooltipEventType: tooltipEventType\n        });\n      });\n      _defineProperty(_this, \"renderPolarAxis\", function (element, displayName, index) {\n        var axisType = get(element, 'type.axisType');\n        var axisMap = get(_this.state, \"\".concat(axisType, \"Map\"));\n        var elementDefaultProps = element.type.defaultProps;\n        var elementProps = elementDefaultProps !== undefined ? _objectSpread(_objectSpread({}, elementDefaultProps), element.props) : element.props;\n        var axisOption = axisMap && axisMap[elementProps[\"\".concat(axisType, \"Id\")]];\n        return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, axisOption), {}, {\n          className: clsx(axisType, axisOption.className),\n          key: element.key || \"\".concat(displayName, \"-\").concat(index),\n          ticks: getTicksOfAxis(axisOption, true)\n        }));\n      });\n      _defineProperty(_this, \"renderPolarGrid\", function (element) {\n        var _element$props = element.props,\n          radialLines = _element$props.radialLines,\n          polarAngles = _element$props.polarAngles,\n          polarRadius = _element$props.polarRadius;\n        var _this$state4 = _this.state,\n          radiusAxisMap = _this$state4.radiusAxisMap,\n          angleAxisMap = _this$state4.angleAxisMap;\n        var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n        var angleAxis = getAnyElementOfObject(angleAxisMap);\n        var cx = angleAxis.cx,\n          cy = angleAxis.cy,\n          innerRadius = angleAxis.innerRadius,\n          outerRadius = angleAxis.outerRadius;\n        return /*#__PURE__*/cloneElement(element, {\n          polarAngles: Array.isArray(polarAngles) ? polarAngles : getTicksOfAxis(angleAxis, true).map(function (entry) {\n            return entry.coordinate;\n          }),\n          polarRadius: Array.isArray(polarRadius) ? polarRadius : getTicksOfAxis(radiusAxis, true).map(function (entry) {\n            return entry.coordinate;\n          }),\n          cx: cx,\n          cy: cy,\n          innerRadius: innerRadius,\n          outerRadius: outerRadius,\n          key: element.key || 'polar-grid',\n          radialLines: radialLines\n        });\n      });\n      /**\n       * Draw legend\n       * @return {ReactElement}            The instance of Legend\n       */\n      _defineProperty(_this, \"renderLegend\", function () {\n        var formattedGraphicalItems = _this.state.formattedGraphicalItems;\n        var _this$props2 = _this.props,\n          children = _this$props2.children,\n          width = _this$props2.width,\n          height = _this$props2.height;\n        var margin = _this.props.margin || {};\n        var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n        var props = getLegendProps({\n          children: children,\n          formattedGraphicalItems: formattedGraphicalItems,\n          legendWidth: legendWidth,\n          legendContent: legendContent\n        });\n        if (!props) {\n          return null;\n        }\n        var item = props.item,\n          otherProps = _objectWithoutProperties(props, _excluded);\n        return /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, otherProps), {}, {\n          chartWidth: width,\n          chartHeight: height,\n          margin: margin,\n          onBBoxUpdate: _this.handleLegendBBoxUpdate\n        }));\n      });\n      /**\n       * Draw Tooltip\n       * @return {ReactElement}  The instance of Tooltip\n       */\n      _defineProperty(_this, \"renderTooltip\", function () {\n        var _tooltipItem$props$ac;\n        var _this$props3 = _this.props,\n          children = _this$props3.children,\n          accessibilityLayer = _this$props3.accessibilityLayer;\n        var tooltipItem = findChildByType(children, Tooltip);\n        if (!tooltipItem) {\n          return null;\n        }\n        var _this$state5 = _this.state,\n          isTooltipActive = _this$state5.isTooltipActive,\n          activeCoordinate = _this$state5.activeCoordinate,\n          activePayload = _this$state5.activePayload,\n          activeLabel = _this$state5.activeLabel,\n          offset = _this$state5.offset;\n\n        // The user can set isActive on the Tooltip,\n        // and we respect the user to enable customisation.\n        // The Tooltip is active if the user has set isActive, or if the tooltip is active due to a mouse event.\n        var isActive = (_tooltipItem$props$ac = tooltipItem.props.active) !== null && _tooltipItem$props$ac !== void 0 ? _tooltipItem$props$ac : isTooltipActive;\n        return /*#__PURE__*/cloneElement(tooltipItem, {\n          viewBox: _objectSpread(_objectSpread({}, offset), {}, {\n            x: offset.left,\n            y: offset.top\n          }),\n          active: isActive,\n          label: activeLabel,\n          payload: isActive ? activePayload : [],\n          coordinate: activeCoordinate,\n          accessibilityLayer: accessibilityLayer\n        });\n      });\n      _defineProperty(_this, \"renderBrush\", function (element) {\n        var _this$props4 = _this.props,\n          margin = _this$props4.margin,\n          data = _this$props4.data;\n        var _this$state6 = _this.state,\n          offset = _this$state6.offset,\n          dataStartIndex = _this$state6.dataStartIndex,\n          dataEndIndex = _this$state6.dataEndIndex,\n          updateId = _this$state6.updateId;\n\n        // TODO: update brush when children update\n        return /*#__PURE__*/cloneElement(element, {\n          key: element.key || '_recharts-brush',\n          onChange: combineEventHandlers(_this.handleBrushChange, element.props.onChange),\n          data: data,\n          x: isNumber(element.props.x) ? element.props.x : offset.left,\n          y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n          width: isNumber(element.props.width) ? element.props.width : offset.width,\n          startIndex: dataStartIndex,\n          endIndex: dataEndIndex,\n          updateId: \"brush-\".concat(updateId)\n        });\n      });\n      _defineProperty(_this, \"renderReferenceElement\", function (element, displayName, index) {\n        if (!element) {\n          return null;\n        }\n        var _this2 = _this,\n          clipPathId = _this2.clipPathId;\n        var _this$state7 = _this.state,\n          xAxisMap = _this$state7.xAxisMap,\n          yAxisMap = _this$state7.yAxisMap,\n          offset = _this$state7.offset;\n        var elementDefaultProps = element.type.defaultProps || {};\n        var _element$props2 = element.props,\n          _element$props2$xAxis = _element$props2.xAxisId,\n          xAxisId = _element$props2$xAxis === void 0 ? elementDefaultProps.xAxisId : _element$props2$xAxis,\n          _element$props2$yAxis = _element$props2.yAxisId,\n          yAxisId = _element$props2$yAxis === void 0 ? elementDefaultProps.yAxisId : _element$props2$yAxis;\n        return /*#__PURE__*/cloneElement(element, {\n          key: element.key || \"\".concat(displayName, \"-\").concat(index),\n          xAxis: xAxisMap[xAxisId],\n          yAxis: yAxisMap[yAxisId],\n          viewBox: {\n            x: offset.left,\n            y: offset.top,\n            width: offset.width,\n            height: offset.height\n          },\n          clipPathId: clipPathId\n        });\n      });\n      _defineProperty(_this, \"renderActivePoints\", function (_ref10) {\n        var item = _ref10.item,\n          activePoint = _ref10.activePoint,\n          basePoint = _ref10.basePoint,\n          childIndex = _ref10.childIndex,\n          isRange = _ref10.isRange;\n        var result = [];\n        // item is not a React Element so we don't need to resolve defaultProps.\n        var key = item.props.key;\n        var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n        var activeDot = itemItemProps.activeDot,\n          dataKey = itemItemProps.dataKey;\n        var dotProps = _objectSpread(_objectSpread({\n          index: childIndex,\n          dataKey: dataKey,\n          cx: activePoint.x,\n          cy: activePoint.y,\n          r: 4,\n          fill: getMainColorOfGraphicItem(item.item),\n          strokeWidth: 2,\n          stroke: '#fff',\n          payload: activePoint.payload,\n          value: activePoint.value\n        }, filterProps(activeDot, false)), adaptEventHandlers(activeDot));\n        result.push(CategoricalChartWrapper.renderActiveDot(activeDot, dotProps, \"\".concat(key, \"-activePoint-\").concat(childIndex)));\n        if (basePoint) {\n          result.push(CategoricalChartWrapper.renderActiveDot(activeDot, _objectSpread(_objectSpread({}, dotProps), {}, {\n            cx: basePoint.x,\n            cy: basePoint.y\n          }), \"\".concat(key, \"-basePoint-\").concat(childIndex)));\n        } else if (isRange) {\n          result.push(null);\n        }\n        return result;\n      });\n      _defineProperty(_this, \"renderGraphicChild\", function (element, displayName, index) {\n        var item = _this.filterFormatItem(element, displayName, index);\n        if (!item) {\n          return null;\n        }\n        var tooltipEventType = _this.getTooltipEventType();\n        var _this$state8 = _this.state,\n          isTooltipActive = _this$state8.isTooltipActive,\n          tooltipAxis = _this$state8.tooltipAxis,\n          activeTooltipIndex = _this$state8.activeTooltipIndex,\n          activeLabel = _this$state8.activeLabel;\n        var children = _this.props.children;\n        var tooltipItem = findChildByType(children, Tooltip);\n        // item is not a React Element so we don't need to resolve defaultProps\n        var _item$props = item.props,\n          points = _item$props.points,\n          isRange = _item$props.isRange,\n          baseLine = _item$props.baseLine;\n        var itemItemProps = item.item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.item.type.defaultProps), item.item.props) : item.item.props;\n        var activeDot = itemItemProps.activeDot,\n          hide = itemItemProps.hide,\n          activeBar = itemItemProps.activeBar,\n          activeShape = itemItemProps.activeShape;\n        var hasActive = Boolean(!hide && isTooltipActive && tooltipItem && (activeDot || activeBar || activeShape));\n        var itemEvents = {};\n        if (tooltipEventType !== 'axis' && tooltipItem && tooltipItem.props.trigger === 'click') {\n          itemEvents = {\n            onClick: combineEventHandlers(_this.handleItemMouseEnter, element.props.onClick)\n          };\n        } else if (tooltipEventType !== 'axis') {\n          itemEvents = {\n            onMouseLeave: combineEventHandlers(_this.handleItemMouseLeave, element.props.onMouseLeave),\n            onMouseEnter: combineEventHandlers(_this.handleItemMouseEnter, element.props.onMouseEnter)\n          };\n        }\n        var graphicalItem = /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({}, item.props), itemEvents));\n        function findWithPayload(entry) {\n          // TODO needs to verify dataKey is Function\n          return typeof tooltipAxis.dataKey === 'function' ? tooltipAxis.dataKey(entry.payload) : null;\n        }\n        if (hasActive) {\n          if (activeTooltipIndex >= 0) {\n            var activePoint, basePoint;\n            if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n              // number transform to string\n              var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey.toString());\n              activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n              basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n            } else {\n              activePoint = points === null || points === void 0 ? void 0 : points[activeTooltipIndex];\n              basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n            }\n            if (activeShape || activeBar) {\n              var activeIndex = element.props.activeIndex !== undefined ? element.props.activeIndex : activeTooltipIndex;\n              return [/*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n                activeIndex: activeIndex\n              })), null, null];\n            }\n            if (!isNil(activePoint)) {\n              return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n                item: item,\n                activePoint: activePoint,\n                basePoint: basePoint,\n                childIndex: activeTooltipIndex,\n                isRange: isRange\n              })));\n            }\n          } else {\n            var _this$getItemByXY;\n            /**\n             * We hit this block if consumer uses a Tooltip without XAxis and/or YAxis.\n             * In which case, this.state.activeTooltipIndex never gets set\n             * because the mouse events that trigger that value getting set never get trigged without the axis components.\n             *\n             * An example usage case is a FunnelChart\n             */\n            var _ref11 = (_this$getItemByXY = _this.getItemByXY(_this.state.activeCoordinate)) !== null && _this$getItemByXY !== void 0 ? _this$getItemByXY : {\n                graphicalItem: graphicalItem\n              },\n              _ref11$graphicalItem = _ref11.graphicalItem,\n              _ref11$graphicalItem$ = _ref11$graphicalItem.item,\n              xyItem = _ref11$graphicalItem$ === void 0 ? element : _ref11$graphicalItem$,\n              childIndex = _ref11$graphicalItem.childIndex;\n            var elementProps = _objectSpread(_objectSpread(_objectSpread({}, item.props), itemEvents), {}, {\n              activeIndex: childIndex\n            });\n            return [/*#__PURE__*/cloneElement(xyItem, elementProps), null, null];\n          }\n        }\n        if (isRange) {\n          return [graphicalItem, null, null];\n        }\n        return [graphicalItem, null];\n      });\n      _defineProperty(_this, \"renderCustomized\", function (element, displayName, index) {\n        return /*#__PURE__*/cloneElement(element, _objectSpread(_objectSpread({\n          key: \"recharts-customized-\".concat(index)\n        }, _this.props), _this.state));\n      });\n      _defineProperty(_this, \"renderMap\", {\n        CartesianGrid: {\n          handler: renderAsIs,\n          once: true\n        },\n        ReferenceArea: {\n          handler: _this.renderReferenceElement\n        },\n        ReferenceLine: {\n          handler: renderAsIs\n        },\n        ReferenceDot: {\n          handler: _this.renderReferenceElement\n        },\n        XAxis: {\n          handler: renderAsIs\n        },\n        YAxis: {\n          handler: renderAsIs\n        },\n        Brush: {\n          handler: _this.renderBrush,\n          once: true\n        },\n        Bar: {\n          handler: _this.renderGraphicChild\n        },\n        Line: {\n          handler: _this.renderGraphicChild\n        },\n        Area: {\n          handler: _this.renderGraphicChild\n        },\n        Radar: {\n          handler: _this.renderGraphicChild\n        },\n        RadialBar: {\n          handler: _this.renderGraphicChild\n        },\n        Scatter: {\n          handler: _this.renderGraphicChild\n        },\n        Pie: {\n          handler: _this.renderGraphicChild\n        },\n        Funnel: {\n          handler: _this.renderGraphicChild\n        },\n        Tooltip: {\n          handler: _this.renderCursor,\n          once: true\n        },\n        PolarGrid: {\n          handler: _this.renderPolarGrid,\n          once: true\n        },\n        PolarAngleAxis: {\n          handler: _this.renderPolarAxis\n        },\n        PolarRadiusAxis: {\n          handler: _this.renderPolarAxis\n        },\n        Customized: {\n          handler: _this.renderCustomized\n        }\n      });\n      _this.clipPathId = \"\".concat((_props$id = _props.id) !== null && _props$id !== void 0 ? _props$id : uniqueId('recharts'), \"-clip\");\n\n      // trigger 60fps\n      _this.throttleTriggeredAfterMouseMove = throttle(_this.triggeredAfterMouseMove, (_props$throttleDelay = _props.throttleDelay) !== null && _props$throttleDelay !== void 0 ? _props$throttleDelay : 1000 / 60);\n      _this.state = {};\n      return _this;\n    }\n    _inherits(CategoricalChartWrapper, _Component);\n    return _createClass(CategoricalChartWrapper, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        var _this$props$margin$le, _this$props$margin$to;\n        this.addListener();\n        this.accessibilityManager.setDetails({\n          container: this.container,\n          offset: {\n            left: (_this$props$margin$le = this.props.margin.left) !== null && _this$props$margin$le !== void 0 ? _this$props$margin$le : 0,\n            top: (_this$props$margin$to = this.props.margin.top) !== null && _this$props$margin$to !== void 0 ? _this$props$margin$to : 0\n          },\n          coordinateList: this.state.tooltipTicks,\n          mouseHandlerCallback: this.triggeredAfterMouseMove,\n          layout: this.props.layout\n        });\n        this.displayDefaultTooltip();\n      }\n    }, {\n      key: \"displayDefaultTooltip\",\n      value: function displayDefaultTooltip() {\n        var _this$props5 = this.props,\n          children = _this$props5.children,\n          data = _this$props5.data,\n          height = _this$props5.height,\n          layout = _this$props5.layout;\n        var tooltipElem = findChildByType(children, Tooltip);\n        // If the chart doesn't include a <Tooltip /> element, there's no tooltip to display\n        if (!tooltipElem) {\n          return;\n        }\n        var defaultIndex = tooltipElem.props.defaultIndex;\n\n        // Protect against runtime errors\n        if (typeof defaultIndex !== 'number' || defaultIndex < 0 || defaultIndex > this.state.tooltipTicks.length - 1) {\n          return;\n        }\n        var activeLabel = this.state.tooltipTicks[defaultIndex] && this.state.tooltipTicks[defaultIndex].value;\n        var activePayload = getTooltipContent(this.state, data, defaultIndex, activeLabel);\n        var independentAxisCoord = this.state.tooltipTicks[defaultIndex].coordinate;\n        var dependentAxisCoord = (this.state.offset.top + height) / 2;\n        var isHorizontal = layout === 'horizontal';\n        var activeCoordinate = isHorizontal ? {\n          x: independentAxisCoord,\n          y: dependentAxisCoord\n        } : {\n          y: independentAxisCoord,\n          x: dependentAxisCoord\n        };\n\n        // Unlike other chart types, scatter plot's tooltip positions rely on both X and Y coordinates. Only the scatter plot\n        // element knows its own Y coordinates.\n        // If there's a scatter plot, we'll want to grab that element for an interrogation.\n        var scatterPlotElement = this.state.formattedGraphicalItems.find(function (_ref12) {\n          var item = _ref12.item;\n          return item.type.name === 'Scatter';\n        });\n        if (scatterPlotElement) {\n          activeCoordinate = _objectSpread(_objectSpread({}, activeCoordinate), scatterPlotElement.props.points[defaultIndex].tooltipPosition);\n          activePayload = scatterPlotElement.props.points[defaultIndex].tooltipPayload;\n        }\n        var nextState = {\n          activeTooltipIndex: defaultIndex,\n          isTooltipActive: true,\n          activeLabel: activeLabel,\n          activePayload: activePayload,\n          activeCoordinate: activeCoordinate\n        };\n        this.setState(nextState);\n        this.renderCursor(tooltipElem);\n\n        // Make sure that anyone who keyboard-only users who tab to the chart will start their\n        // cursors at defaultIndex\n        this.accessibilityManager.setIndex(defaultIndex);\n      }\n    }, {\n      key: \"getSnapshotBeforeUpdate\",\n      value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n        if (!this.props.accessibilityLayer) {\n          return null;\n        }\n        if (this.state.tooltipTicks !== prevState.tooltipTicks) {\n          this.accessibilityManager.setDetails({\n            coordinateList: this.state.tooltipTicks\n          });\n        }\n        if (this.props.layout !== prevProps.layout) {\n          this.accessibilityManager.setDetails({\n            layout: this.props.layout\n          });\n        }\n        if (this.props.margin !== prevProps.margin) {\n          var _this$props$margin$le2, _this$props$margin$to2;\n          this.accessibilityManager.setDetails({\n            offset: {\n              left: (_this$props$margin$le2 = this.props.margin.left) !== null && _this$props$margin$le2 !== void 0 ? _this$props$margin$le2 : 0,\n              top: (_this$props$margin$to2 = this.props.margin.top) !== null && _this$props$margin$to2 !== void 0 ? _this$props$margin$to2 : 0\n            }\n          });\n        }\n\n        // Something has to be returned for getSnapshotBeforeUpdate\n        return null;\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate(prevProps) {\n        // Check to see if the Tooltip updated. If so, re-check default tooltip position\n        if (!isChildrenEqual([findChildByType(prevProps.children, Tooltip)], [findChildByType(this.props.children, Tooltip)])) {\n          this.displayDefaultTooltip();\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.removeListener();\n        this.throttleTriggeredAfterMouseMove.cancel();\n      }\n    }, {\n      key: \"getTooltipEventType\",\n      value: function getTooltipEventType() {\n        var tooltipItem = findChildByType(this.props.children, Tooltip);\n        if (tooltipItem && typeof tooltipItem.props.shared === 'boolean') {\n          var eventType = tooltipItem.props.shared ? 'axis' : 'item';\n          return validateTooltipEventTypes.indexOf(eventType) >= 0 ? eventType : defaultTooltipEventType;\n        }\n        return defaultTooltipEventType;\n      }\n\n      /**\n       * Get the information of mouse in chart, return null when the mouse is not in the chart\n       * @param  {MousePointer} event    The event object\n       * @return {Object}          Mouse data\n       */\n    }, {\n      key: \"getMouseInfo\",\n      value: function getMouseInfo(event) {\n        if (!this.container) {\n          return null;\n        }\n        var element = this.container;\n        var boundingRect = element.getBoundingClientRect();\n        var containerOffset = getOffset(boundingRect);\n        var e = {\n          chartX: Math.round(event.pageX - containerOffset.left),\n          chartY: Math.round(event.pageY - containerOffset.top)\n        };\n        var scale = boundingRect.width / element.offsetWidth || 1;\n        var rangeObj = this.inRange(e.chartX, e.chartY, scale);\n        if (!rangeObj) {\n          return null;\n        }\n        var _this$state9 = this.state,\n          xAxisMap = _this$state9.xAxisMap,\n          yAxisMap = _this$state9.yAxisMap;\n        var tooltipEventType = this.getTooltipEventType();\n        if (tooltipEventType !== 'axis' && xAxisMap && yAxisMap) {\n          var xScale = getAnyElementOfObject(xAxisMap).scale;\n          var yScale = getAnyElementOfObject(yAxisMap).scale;\n          var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n          var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n          return _objectSpread(_objectSpread({}, e), {}, {\n            xValue: xValue,\n            yValue: yValue\n          });\n        }\n        var toolTipData = getTooltipData(this.state, this.props.data, this.props.layout, rangeObj);\n        if (toolTipData) {\n          return _objectSpread(_objectSpread({}, e), toolTipData);\n        }\n        return null;\n      }\n    }, {\n      key: \"inRange\",\n      value: function inRange(x, y) {\n        var scale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n        var layout = this.props.layout;\n        var scaledX = x / scale,\n          scaledY = y / scale;\n        if (layout === 'horizontal' || layout === 'vertical') {\n          var offset = this.state.offset;\n          var isInRange = scaledX >= offset.left && scaledX <= offset.left + offset.width && scaledY >= offset.top && scaledY <= offset.top + offset.height;\n          return isInRange ? {\n            x: scaledX,\n            y: scaledY\n          } : null;\n        }\n        var _this$state10 = this.state,\n          angleAxisMap = _this$state10.angleAxisMap,\n          radiusAxisMap = _this$state10.radiusAxisMap;\n        if (angleAxisMap && radiusAxisMap) {\n          var angleAxis = getAnyElementOfObject(angleAxisMap);\n          return inRangeOfSector({\n            x: scaledX,\n            y: scaledY\n          }, angleAxis);\n        }\n        return null;\n      }\n    }, {\n      key: \"parseEventsOfWrapper\",\n      value: function parseEventsOfWrapper() {\n        var children = this.props.children;\n        var tooltipEventType = this.getTooltipEventType();\n        var tooltipItem = findChildByType(children, Tooltip);\n        var tooltipEvents = {};\n        if (tooltipItem && tooltipEventType === 'axis') {\n          if (tooltipItem.props.trigger === 'click') {\n            tooltipEvents = {\n              onClick: this.handleClick\n            };\n          } else {\n            tooltipEvents = {\n              onMouseEnter: this.handleMouseEnter,\n              onMouseMove: this.handleMouseMove,\n              onMouseLeave: this.handleMouseLeave,\n              onTouchMove: this.handleTouchMove,\n              onTouchStart: this.handleTouchStart,\n              onTouchEnd: this.handleTouchEnd\n            };\n          }\n        }\n\n        // @ts-expect-error adaptEventHandlers expects DOM Event but generateCategoricalChart works with React UIEvents\n        var outerEvents = adaptEventHandlers(this.props, this.handleOuterEvent);\n        return _objectSpread(_objectSpread({}, outerEvents), tooltipEvents);\n      }\n    }, {\n      key: \"addListener\",\n      value: function addListener() {\n        eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n      }\n    }, {\n      key: \"removeListener\",\n      value: function removeListener() {\n        eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n      }\n    }, {\n      key: \"filterFormatItem\",\n      value: function filterFormatItem(item, displayName, childIndex) {\n        var formattedGraphicalItems = this.state.formattedGraphicalItems;\n        for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n          var entry = formattedGraphicalItems[i];\n          if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n            return entry;\n          }\n        }\n        return null;\n      }\n    }, {\n      key: \"renderClipPath\",\n      value: function renderClipPath() {\n        var clipPathId = this.clipPathId;\n        var _this$state$offset = this.state.offset,\n          left = _this$state$offset.left,\n          top = _this$state$offset.top,\n          height = _this$state$offset.height,\n          width = _this$state$offset.width;\n        return /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n          id: clipPathId\n        }, /*#__PURE__*/React.createElement(\"rect\", {\n          x: left,\n          y: top,\n          height: height,\n          width: width\n        })));\n      }\n    }, {\n      key: \"getXScales\",\n      value: function getXScales() {\n        var xAxisMap = this.state.xAxisMap;\n        return xAxisMap ? Object.entries(xAxisMap).reduce(function (res, _ref13) {\n          var _ref14 = _slicedToArray(_ref13, 2),\n            axisId = _ref14[0],\n            axisProps = _ref14[1];\n          return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n        }, {}) : null;\n      }\n    }, {\n      key: \"getYScales\",\n      value: function getYScales() {\n        var yAxisMap = this.state.yAxisMap;\n        return yAxisMap ? Object.entries(yAxisMap).reduce(function (res, _ref15) {\n          var _ref16 = _slicedToArray(_ref15, 2),\n            axisId = _ref16[0],\n            axisProps = _ref16[1];\n          return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, axisId, axisProps.scale));\n        }, {}) : null;\n      }\n    }, {\n      key: \"getXScaleByAxisId\",\n      value: function getXScaleByAxisId(axisId) {\n        var _this$state$xAxisMap;\n        return (_this$state$xAxisMap = this.state.xAxisMap) === null || _this$state$xAxisMap === void 0 || (_this$state$xAxisMap = _this$state$xAxisMap[axisId]) === null || _this$state$xAxisMap === void 0 ? void 0 : _this$state$xAxisMap.scale;\n      }\n    }, {\n      key: \"getYScaleByAxisId\",\n      value: function getYScaleByAxisId(axisId) {\n        var _this$state$yAxisMap;\n        return (_this$state$yAxisMap = this.state.yAxisMap) === null || _this$state$yAxisMap === void 0 || (_this$state$yAxisMap = _this$state$yAxisMap[axisId]) === null || _this$state$yAxisMap === void 0 ? void 0 : _this$state$yAxisMap.scale;\n      }\n    }, {\n      key: \"getItemByXY\",\n      value: function getItemByXY(chartXY) {\n        var _this$state11 = this.state,\n          formattedGraphicalItems = _this$state11.formattedGraphicalItems,\n          activeItem = _this$state11.activeItem;\n        if (formattedGraphicalItems && formattedGraphicalItems.length) {\n          for (var i = 0, len = formattedGraphicalItems.length; i < len; i++) {\n            var graphicalItem = formattedGraphicalItems[i];\n            // graphicalItem is not a React Element so we don't need to resolve defaultProps\n            var props = graphicalItem.props,\n              item = graphicalItem.item;\n            var itemProps = item.type.defaultProps !== undefined ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n            var itemDisplayName = getDisplayName(item.type);\n            if (itemDisplayName === 'Bar') {\n              var activeBarItem = (props.data || []).find(function (entry) {\n                return isInRectangle(chartXY, entry);\n              });\n              if (activeBarItem) {\n                return {\n                  graphicalItem: graphicalItem,\n                  payload: activeBarItem\n                };\n              }\n            } else if (itemDisplayName === 'RadialBar') {\n              var _activeBarItem = (props.data || []).find(function (entry) {\n                return inRangeOfSector(chartXY, entry);\n              });\n              if (_activeBarItem) {\n                return {\n                  graphicalItem: graphicalItem,\n                  payload: _activeBarItem\n                };\n              }\n            } else if (isFunnel(graphicalItem, activeItem) || isPie(graphicalItem, activeItem) || isScatter(graphicalItem, activeItem)) {\n              var activeIndex = getActiveShapeIndexForTooltip({\n                graphicalItem: graphicalItem,\n                activeTooltipItem: activeItem,\n                itemData: itemProps.data\n              });\n              var childIndex = itemProps.activeIndex === undefined ? activeIndex : itemProps.activeIndex;\n              return {\n                graphicalItem: _objectSpread(_objectSpread({}, graphicalItem), {}, {\n                  childIndex: childIndex\n                }),\n                payload: isScatter(graphicalItem, activeItem) ? itemProps.data[activeIndex] : graphicalItem.props.data[activeIndex]\n              };\n            }\n          }\n        }\n        return null;\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var _this3 = this;\n        if (!validateWidthHeight(this)) {\n          return null;\n        }\n        var _this$props6 = this.props,\n          children = _this$props6.children,\n          className = _this$props6.className,\n          width = _this$props6.width,\n          height = _this$props6.height,\n          style = _this$props6.style,\n          compact = _this$props6.compact,\n          title = _this$props6.title,\n          desc = _this$props6.desc,\n          others = _objectWithoutProperties(_this$props6, _excluded2);\n        var attrs = filterProps(others, false);\n\n        // The \"compact\" mode is mainly used as the panorama within Brush\n        if (compact) {\n          return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n            state: this.state,\n            width: this.props.width,\n            height: this.props.height,\n            clipPathId: this.clipPathId\n          }, /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n            width: width,\n            height: height,\n            title: title,\n            desc: desc\n          }), this.renderClipPath(), renderByOrder(children, this.renderMap)));\n        }\n        if (this.props.accessibilityLayer) {\n          var _this$props$tabIndex, _this$props$role;\n          // Set tabIndex to 0 by default (can be overwritten)\n          attrs.tabIndex = (_this$props$tabIndex = this.props.tabIndex) !== null && _this$props$tabIndex !== void 0 ? _this$props$tabIndex : 0;\n          // Set role to img by default (can be overwritten)\n          attrs.role = (_this$props$role = this.props.role) !== null && _this$props$role !== void 0 ? _this$props$role : 'application';\n          attrs.onKeyDown = function (e) {\n            _this3.accessibilityManager.keyboardEvent(e);\n            // 'onKeyDown' is not currently a supported prop that can be passed through\n            // if it's added, this should be added: this.props.onKeyDown(e);\n          };\n          attrs.onFocus = function () {\n            _this3.accessibilityManager.focus();\n            // 'onFocus' is not currently a supported prop that can be passed through\n            // if it's added, the focus event should be forwarded to the prop\n          };\n        }\n        var events = this.parseEventsOfWrapper();\n        return /*#__PURE__*/React.createElement(ChartLayoutContextProvider, {\n          state: this.state,\n          width: this.props.width,\n          height: this.props.height,\n          clipPathId: this.clipPathId\n        }, /*#__PURE__*/React.createElement(\"div\", _extends({\n          className: clsx('recharts-wrapper', className),\n          style: _objectSpread({\n            position: 'relative',\n            cursor: 'default',\n            width: width,\n            height: height\n          }, style)\n        }, events, {\n          ref: function ref(node) {\n            _this3.container = node;\n          }\n        }), /*#__PURE__*/React.createElement(Surface, _extends({}, attrs, {\n          width: width,\n          height: height,\n          title: title,\n          desc: desc,\n          style: FULL_WIDTH_AND_HEIGHT\n        }), this.renderClipPath(), renderByOrder(children, this.renderMap)), this.renderLegend(), this.renderTooltip()));\n      }\n    }]);\n  }(Component);\n  _defineProperty(CategoricalChartWrapper, \"displayName\", chartName);\n  // todo join specific chart propTypes\n  _defineProperty(CategoricalChartWrapper, \"defaultProps\", _objectSpread({\n    layout: 'horizontal',\n    stackOffset: 'none',\n    barCategoryGap: '10%',\n    barGap: 4,\n    margin: {\n      top: 5,\n      right: 5,\n      bottom: 5,\n      left: 5\n    },\n    reverseStackOrder: false,\n    syncMethod: 'index'\n  }, defaultProps));\n  _defineProperty(CategoricalChartWrapper, \"getDerivedStateFromProps\", function (nextProps, prevState) {\n    var dataKey = nextProps.dataKey,\n      data = nextProps.data,\n      children = nextProps.children,\n      width = nextProps.width,\n      height = nextProps.height,\n      layout = nextProps.layout,\n      stackOffset = nextProps.stackOffset,\n      margin = nextProps.margin;\n    var dataStartIndex = prevState.dataStartIndex,\n      dataEndIndex = prevState.dataEndIndex;\n    if (prevState.updateId === undefined) {\n      var defaultState = createDefaultState(nextProps);\n      return _objectSpread(_objectSpread(_objectSpread({}, defaultState), {}, {\n        updateId: 0\n      }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n        props: nextProps\n      }, defaultState), {}, {\n        updateId: 0\n      }), prevState)), {}, {\n        prevDataKey: dataKey,\n        prevData: data,\n        prevWidth: width,\n        prevHeight: height,\n        prevLayout: layout,\n        prevStackOffset: stackOffset,\n        prevMargin: margin,\n        prevChildren: children\n      });\n    }\n    if (dataKey !== prevState.prevDataKey || data !== prevState.prevData || width !== prevState.prevWidth || height !== prevState.prevHeight || layout !== prevState.prevLayout || stackOffset !== prevState.prevStackOffset || !shallowEqual(margin, prevState.prevMargin)) {\n      var _defaultState = createDefaultState(nextProps);\n\n      // Fixes https://github.com/recharts/recharts/issues/2143\n      var keepFromPrevState = {\n        // (chartX, chartY) are (0,0) in default state, but we want to keep the last mouse position to avoid\n        // any flickering\n        chartX: prevState.chartX,\n        chartY: prevState.chartY,\n        // The tooltip should stay active when it was active in the previous render. If this is not\n        // the case, the tooltip disappears and immediately re-appears, causing a flickering effect\n        isTooltipActive: prevState.isTooltipActive\n      };\n      var updatesToState = _objectSpread(_objectSpread({}, getTooltipData(prevState, data, layout)), {}, {\n        updateId: prevState.updateId + 1\n      });\n      var newState = _objectSpread(_objectSpread(_objectSpread({}, _defaultState), keepFromPrevState), updatesToState);\n      return _objectSpread(_objectSpread(_objectSpread({}, newState), updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n        props: nextProps\n      }, newState), prevState)), {}, {\n        prevDataKey: dataKey,\n        prevData: data,\n        prevWidth: width,\n        prevHeight: height,\n        prevLayout: layout,\n        prevStackOffset: stackOffset,\n        prevMargin: margin,\n        prevChildren: children\n      });\n    }\n    if (!isChildrenEqual(children, prevState.prevChildren)) {\n      var _brush$props$startInd, _brush$props, _brush$props$endIndex, _brush$props2;\n      // specifically check for Brush - if it exists and the start and end indexes are different, re-render with the new ones\n      var brush = findChildByType(children, Brush);\n      var startIndex = brush ? (_brush$props$startInd = (_brush$props = brush.props) === null || _brush$props === void 0 ? void 0 : _brush$props.startIndex) !== null && _brush$props$startInd !== void 0 ? _brush$props$startInd : dataStartIndex : dataStartIndex;\n      var endIndex = brush ? (_brush$props$endIndex = (_brush$props2 = brush.props) === null || _brush$props2 === void 0 ? void 0 : _brush$props2.endIndex) !== null && _brush$props$endIndex !== void 0 ? _brush$props$endIndex : dataEndIndex : dataEndIndex;\n      var hasDifferentStartOrEndIndex = startIndex !== dataStartIndex || endIndex !== dataEndIndex;\n\n      // update configuration in children\n      var hasGlobalData = !isNil(data);\n      var newUpdateId = hasGlobalData && !hasDifferentStartOrEndIndex ? prevState.updateId : prevState.updateId + 1;\n      return _objectSpread(_objectSpread({\n        updateId: newUpdateId\n      }, updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread(_objectSpread({\n        props: nextProps\n      }, prevState), {}, {\n        updateId: newUpdateId,\n        dataStartIndex: startIndex,\n        dataEndIndex: endIndex\n      }), prevState)), {}, {\n        prevChildren: children,\n        dataStartIndex: startIndex,\n        dataEndIndex: endIndex\n      });\n    }\n    return null;\n  });\n  _defineProperty(CategoricalChartWrapper, \"renderActiveDot\", function (option, props, key) {\n    var dot;\n    if ( /*#__PURE__*/isValidElement(option)) {\n      dot = /*#__PURE__*/cloneElement(option, props);\n    } else if (isFunction(option)) {\n      dot = option(props);\n    } else {\n      dot = /*#__PURE__*/React.createElement(Dot, props);\n    }\n    return /*#__PURE__*/React.createElement(Layer, {\n      className: \"recharts-active-dot\",\n      key: key\n    }, dot);\n  });\n  var CategoricalChart = /*#__PURE__*/forwardRef(function CategoricalChart(props, ref) {\n    return /*#__PURE__*/React.createElement(CategoricalChartWrapper, _extends({}, props, {\n      ref: ref\n    }));\n  });\n  CategoricalChart.displayName = CategoricalChartWrapper.displayName;\n  return CategoricalChart;\n};","import { isNumber } from './DataUtils';\n/**\n * Takes a domain and user props to determine whether he provided the domain via props or if we need to calculate it.\n * @param   {AxisDomain}  domain              The potential domain from props\n * @param   {Boolean}     allowDataOverflow   from props\n * @param   {String}      axisType            from props\n * @returns {Boolean}                         `true` if domain is specified by user\n */\nexport function isDomainSpecifiedByUser(domain, allowDataOverflow, axisType) {\n  if (axisType === 'number' && allowDataOverflow === true && Array.isArray(domain)) {\n    var domainStart = domain === null || domain === void 0 ? void 0 : domain[0];\n    var domainEnd = domain === null || domain === void 0 ? void 0 : domain[1];\n\n    /*\n     * The `isNumber` check is needed because the user could also provide strings like \"dataMin\" via the domain props.\n     * In such case, we have to compute the domain from the data.\n     */\n    if (!!domainStart && !!domainEnd && isNumber(domainStart) && isNumber(domainEnd)) {\n      return true;\n    }\n  }\n  return false;\n}","/**\n * @fileOverview Cross\n */\n\nexport var Cell = function Cell(_props) {\n  return null;\n};\nCell.displayName = 'Cell';","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"offset\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nimport React, { cloneElement, isValidElement, createElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport clsx from 'clsx';\nimport { Text } from './Text';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar getLabel = function getLabel(props) {\n  var value = props.value,\n    formatter = props.formatter;\n  var label = isNil(props.children) ? value : props.children;\n  if (isFunction(formatter)) {\n    return formatter(label);\n  }\n  return label;\n};\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n  var sign = mathSign(endAngle - startAngle);\n  var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n  return sign * deltaAngle;\n};\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n  var position = labelProps.position,\n    viewBox = labelProps.viewBox,\n    offset = labelProps.offset,\n    className = labelProps.className;\n  var _ref = viewBox,\n    cx = _ref.cx,\n    cy = _ref.cy,\n    innerRadius = _ref.innerRadius,\n    outerRadius = _ref.outerRadius,\n    startAngle = _ref.startAngle,\n    endAngle = _ref.endAngle,\n    clockWise = _ref.clockWise;\n  var radius = (innerRadius + outerRadius) / 2;\n  var deltaAngle = getDeltaAngle(startAngle, endAngle);\n  var sign = deltaAngle >= 0 ? 1 : -1;\n  var labelAngle, direction;\n  if (position === 'insideStart') {\n    labelAngle = startAngle + sign * offset;\n    direction = clockWise;\n  } else if (position === 'insideEnd') {\n    labelAngle = endAngle - sign * offset;\n    direction = !clockWise;\n  } else if (position === 'end') {\n    labelAngle = endAngle + sign * offset;\n    direction = clockWise;\n  }\n  direction = deltaAngle <= 0 ? direction : !direction;\n  var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n  var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n  var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n    A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n    \").concat(endPoint.x, \",\").concat(endPoint.y);\n  var id = isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n  return /*#__PURE__*/React.createElement(\"text\", _extends({}, attrs, {\n    dominantBaseline: \"central\",\n    className: clsx('recharts-radial-bar-label', className)\n  }), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n    id: id,\n    d: path\n  })), /*#__PURE__*/React.createElement(\"textPath\", {\n    xlinkHref: \"#\".concat(id)\n  }, label));\n};\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n  var viewBox = props.viewBox,\n    offset = props.offset,\n    position = props.position;\n  var _ref2 = viewBox,\n    cx = _ref2.cx,\n    cy = _ref2.cy,\n    innerRadius = _ref2.innerRadius,\n    outerRadius = _ref2.outerRadius,\n    startAngle = _ref2.startAngle,\n    endAngle = _ref2.endAngle;\n  var midAngle = (startAngle + endAngle) / 2;\n  if (position === 'outside') {\n    var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n      _x = _polarToCartesian.x,\n      _y = _polarToCartesian.y;\n    return {\n      x: _x,\n      y: _y,\n      textAnchor: _x >= cx ? 'start' : 'end',\n      verticalAnchor: 'middle'\n    };\n  }\n  if (position === 'center') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'middle'\n    };\n  }\n  if (position === 'centerTop') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'start'\n    };\n  }\n  if (position === 'centerBottom') {\n    return {\n      x: cx,\n      y: cy,\n      textAnchor: 'middle',\n      verticalAnchor: 'end'\n    };\n  }\n  var r = (innerRadius + outerRadius) / 2;\n  var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n    x = _polarToCartesian2.x,\n    y = _polarToCartesian2.y;\n  return {\n    x: x,\n    y: y,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle'\n  };\n};\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n  var viewBox = props.viewBox,\n    parentViewBox = props.parentViewBox,\n    offset = props.offset,\n    position = props.position;\n  var _ref3 = viewBox,\n    x = _ref3.x,\n    y = _ref3.y,\n    width = _ref3.width,\n    height = _ref3.height;\n\n  // Define vertical offsets and position inverts based on the value being positive or negative\n  var verticalSign = height >= 0 ? 1 : -1;\n  var verticalOffset = verticalSign * offset;\n  var verticalEnd = verticalSign > 0 ? 'end' : 'start';\n  var verticalStart = verticalSign > 0 ? 'start' : 'end';\n\n  // Define horizontal offsets and position inverts based on the value being positive or negative\n  var horizontalSign = width >= 0 ? 1 : -1;\n  var horizontalOffset = horizontalSign * offset;\n  var horizontalEnd = horizontalSign > 0 ? 'end' : 'start';\n  var horizontalStart = horizontalSign > 0 ? 'start' : 'end';\n  if (position === 'top') {\n    var attrs = {\n      x: x + width / 2,\n      y: y - verticalSign * offset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd\n    };\n    return _objectSpread(_objectSpread({}, attrs), parentViewBox ? {\n      height: Math.max(y - parentViewBox.y, 0),\n      width: width\n    } : {});\n  }\n  if (position === 'bottom') {\n    var _attrs = {\n      x: x + width / 2,\n      y: y + height + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart\n    };\n    return _objectSpread(_objectSpread({}, _attrs), parentViewBox ? {\n      height: Math.max(parentViewBox.y + parentViewBox.height - (y + height), 0),\n      width: width\n    } : {});\n  }\n  if (position === 'left') {\n    var _attrs2 = {\n      x: x - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle'\n    };\n    return _objectSpread(_objectSpread({}, _attrs2), parentViewBox ? {\n      width: Math.max(_attrs2.x - parentViewBox.x, 0),\n      height: height\n    } : {});\n  }\n  if (position === 'right') {\n    var _attrs3 = {\n      x: x + width + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle'\n    };\n    return _objectSpread(_objectSpread({}, _attrs3), parentViewBox ? {\n      width: Math.max(parentViewBox.x + parentViewBox.width - _attrs3.x, 0),\n      height: height\n    } : {});\n  }\n  var sizeAttrs = parentViewBox ? {\n    width: width,\n    height: height\n  } : {};\n  if (position === 'insideLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalStart,\n      verticalAnchor: 'middle'\n    }, sizeAttrs);\n  }\n  if (position === 'insideRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + height / 2,\n      textAnchor: horizontalEnd,\n      verticalAnchor: 'middle'\n    }, sizeAttrs);\n  }\n  if (position === 'insideTop') {\n    return _objectSpread({\n      x: x + width / 2,\n      y: y + verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n  if (position === 'insideBottom') {\n    return _objectSpread({\n      x: x + width / 2,\n      y: y + height - verticalOffset,\n      textAnchor: 'middle',\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n  if (position === 'insideTopLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n  if (position === 'insideTopRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalStart\n    }, sizeAttrs);\n  }\n  if (position === 'insideBottomLeft') {\n    return _objectSpread({\n      x: x + horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalStart,\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n  if (position === 'insideBottomRight') {\n    return _objectSpread({\n      x: x + width - horizontalOffset,\n      y: y + height - verticalOffset,\n      textAnchor: horizontalEnd,\n      verticalAnchor: verticalEnd\n    }, sizeAttrs);\n  }\n  if (isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n    return _objectSpread({\n      x: x + getPercentValue(position.x, width),\n      y: y + getPercentValue(position.y, height),\n      textAnchor: 'end',\n      verticalAnchor: 'end'\n    }, sizeAttrs);\n  }\n  return _objectSpread({\n    x: x + width / 2,\n    y: y + height / 2,\n    textAnchor: 'middle',\n    verticalAnchor: 'middle'\n  }, sizeAttrs);\n};\nvar isPolar = function isPolar(viewBox) {\n  return 'cx' in viewBox && isNumber(viewBox.cx);\n};\nexport function Label(_ref4) {\n  var _ref4$offset = _ref4.offset,\n    offset = _ref4$offset === void 0 ? 5 : _ref4$offset,\n    restProps = _objectWithoutProperties(_ref4, _excluded);\n  var props = _objectSpread({\n    offset: offset\n  }, restProps);\n  var viewBox = props.viewBox,\n    position = props.position,\n    value = props.value,\n    children = props.children,\n    content = props.content,\n    _props$className = props.className,\n    className = _props$className === void 0 ? '' : _props$className,\n    textBreakAll = props.textBreakAll;\n  if (!viewBox || isNil(value) && isNil(children) && ! /*#__PURE__*/isValidElement(content) && !isFunction(content)) {\n    return null;\n  }\n  if ( /*#__PURE__*/isValidElement(content)) {\n    return /*#__PURE__*/cloneElement(content, props);\n  }\n  var label;\n  if (isFunction(content)) {\n    label = /*#__PURE__*/createElement(content, props);\n    if ( /*#__PURE__*/isValidElement(label)) {\n      return label;\n    }\n  } else {\n    label = getLabel(props);\n  }\n  var isPolarLabel = isPolar(viewBox);\n  var attrs = filterProps(props, true);\n  if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n    return renderRadialLabel(props, label, attrs);\n  }\n  var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n  return /*#__PURE__*/React.createElement(Text, _extends({\n    className: clsx('recharts-label', className)\n  }, attrs, positionAttrs, {\n    breakAll: textBreakAll\n  }), label);\n}\nLabel.displayName = 'Label';\nvar parseViewBox = function parseViewBox(props) {\n  var cx = props.cx,\n    cy = props.cy,\n    angle = props.angle,\n    startAngle = props.startAngle,\n    endAngle = props.endAngle,\n    r = props.r,\n    radius = props.radius,\n    innerRadius = props.innerRadius,\n    outerRadius = props.outerRadius,\n    x = props.x,\n    y = props.y,\n    top = props.top,\n    left = props.left,\n    width = props.width,\n    height = props.height,\n    clockWise = props.clockWise,\n    labelViewBox = props.labelViewBox;\n  if (labelViewBox) {\n    return labelViewBox;\n  }\n  if (isNumber(width) && isNumber(height)) {\n    if (isNumber(x) && isNumber(y)) {\n      return {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      };\n    }\n    if (isNumber(top) && isNumber(left)) {\n      return {\n        x: top,\n        y: left,\n        width: width,\n        height: height\n      };\n    }\n  }\n  if (isNumber(x) && isNumber(y)) {\n    return {\n      x: x,\n      y: y,\n      width: 0,\n      height: 0\n    };\n  }\n  if (isNumber(cx) && isNumber(cy)) {\n    return {\n      cx: cx,\n      cy: cy,\n      startAngle: startAngle || angle || 0,\n      endAngle: endAngle || angle || 0,\n      innerRadius: innerRadius || 0,\n      outerRadius: outerRadius || radius || r || 0,\n      clockWise: clockWise\n    };\n  }\n  if (props.viewBox) {\n    return props.viewBox;\n  }\n  return {};\n};\nvar parseLabel = function parseLabel(label, viewBox) {\n  if (!label) {\n    return null;\n  }\n  if (label === true) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      viewBox: viewBox\n    });\n  }\n  if (isNumOrStr(label)) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      viewBox: viewBox,\n      value: label\n    });\n  }\n  if ( /*#__PURE__*/isValidElement(label)) {\n    if (label.type === Label) {\n      return /*#__PURE__*/cloneElement(label, {\n        key: 'label-implicit',\n        viewBox: viewBox\n      });\n    }\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      content: label,\n      viewBox: viewBox\n    });\n  }\n  if (isFunction(label)) {\n    return /*#__PURE__*/React.createElement(Label, {\n      key: \"label-implicit\",\n      content: label,\n      viewBox: viewBox\n    });\n  }\n  if (isObject(label)) {\n    return /*#__PURE__*/React.createElement(Label, _extends({\n      viewBox: viewBox\n    }, label, {\n      key: \"label-implicit\"\n    }));\n  }\n  return null;\n};\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n  var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n    return null;\n  }\n  var children = parentProps.children;\n  var parentViewBox = parseViewBox(parentProps);\n  var explicitChildren = findAllByType(children, Label).map(function (child, index) {\n    return /*#__PURE__*/cloneElement(child, {\n      viewBox: viewBox || parentViewBox,\n      // eslint-disable-next-line react/no-array-index-key\n      key: \"label-\".concat(index)\n    });\n  });\n  if (!checkPropsLabel) {\n    return explicitChildren;\n  }\n  var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n  return [implicitLabel].concat(_toConsumableArray(explicitChildren));\n};\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"valueAccessor\"],\n  _excluded2 = [\"data\", \"dataKey\", \"clockWise\", \"id\", \"textBreakAll\"];\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React, { cloneElement } from 'react';\nimport isNil from 'lodash/isNil';\nimport isObject from 'lodash/isObject';\nimport isFunction from 'lodash/isFunction';\nimport last from 'lodash/last';\nimport { Label } from './Label';\nimport { Layer } from '../container/Layer';\nimport { findAllByType, filterProps } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar defaultAccessor = function defaultAccessor(entry) {\n  return Array.isArray(entry.value) ? last(entry.value) : entry.value;\n};\nexport function LabelList(_ref) {\n  var _ref$valueAccessor = _ref.valueAccessor,\n    valueAccessor = _ref$valueAccessor === void 0 ? defaultAccessor : _ref$valueAccessor,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var data = restProps.data,\n    dataKey = restProps.dataKey,\n    clockWise = restProps.clockWise,\n    id = restProps.id,\n    textBreakAll = restProps.textBreakAll,\n    others = _objectWithoutProperties(restProps, _excluded2);\n  if (!data || !data.length) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(Layer, {\n    className: \"recharts-label-list\"\n  }, data.map(function (entry, index) {\n    var value = isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n    var idProps = isNil(id) ? {} : {\n      id: \"\".concat(id, \"-\").concat(index)\n    };\n    return /*#__PURE__*/React.createElement(Label, _extends({}, filterProps(entry, true), others, idProps, {\n      parentViewBox: entry.parentViewBox,\n      value: value,\n      textBreakAll: textBreakAll,\n      viewBox: Label.parseViewBox(isNil(clockWise) ? entry : _objectSpread(_objectSpread({}, entry), {}, {\n        clockWise: clockWise\n      })),\n      key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n      ,\n      index: index\n    }));\n  }));\n}\nLabelList.displayName = 'LabelList';\nfunction parseLabelList(label, data) {\n  if (!label) {\n    return null;\n  }\n  if (label === true) {\n    return /*#__PURE__*/React.createElement(LabelList, {\n      key: \"labelList-implicit\",\n      data: data\n    });\n  }\n  if ( /*#__PURE__*/React.isValidElement(label) || isFunction(label)) {\n    return /*#__PURE__*/React.createElement(LabelList, {\n      key: \"labelList-implicit\",\n      data: data,\n      content: label\n    });\n  }\n  if (isObject(label)) {\n    return /*#__PURE__*/React.createElement(LabelList, _extends({\n      data: data\n    }, label, {\n      key: \"labelList-implicit\"\n    }));\n  }\n  return null;\n}\nfunction renderCallByParent(parentProps, data) {\n  var checkPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  if (!parentProps || !parentProps.children && checkPropsLabel && !parentProps.label) {\n    return null;\n  }\n  var children = parentProps.children;\n  var explicitChildren = findAllByType(children, LabelList).map(function (child, index) {\n    return /*#__PURE__*/cloneElement(child, {\n      data: data,\n      // eslint-disable-next-line react/no-array-index-key\n      key: \"labelList-\".concat(index)\n    });\n  });\n  if (!checkPropsLabel) {\n    return explicitChildren;\n  }\n  var implicitLabelList = parseLabelList(parentProps.label, data);\n  return [implicitLabelList].concat(_toConsumableArray(explicitChildren));\n}\nLabelList.renderCallByParent = renderCallByParent;","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { warn } from '../util/LogUtils';\nimport { Surface } from '../container/Surface';\nimport { Symbols } from '../shape/Symbols';\nimport { adaptEventsOfChild } from '../util/types';\nvar SIZE = 32;\nexport var DefaultLegendContent = /*#__PURE__*/function (_PureComponent) {\n  function DefaultLegendContent() {\n    _classCallCheck(this, DefaultLegendContent);\n    return _callSuper(this, DefaultLegendContent, arguments);\n  }\n  _inherits(DefaultLegendContent, _PureComponent);\n  return _createClass(DefaultLegendContent, [{\n    key: \"renderIcon\",\n    value:\n    /**\n     * Render the path of icon\n     * @param {Object} data Data of each legend item\n     * @return {String} Path element\n     */\n    function renderIcon(data) {\n      var inactiveColor = this.props.inactiveColor;\n      var halfSize = SIZE / 2;\n      var sixthSize = SIZE / 6;\n      var thirdSize = SIZE / 3;\n      var color = data.inactive ? inactiveColor : data.color;\n      if (data.type === 'plainline') {\n        return /*#__PURE__*/React.createElement(\"line\", {\n          strokeWidth: 4,\n          fill: \"none\",\n          stroke: color,\n          strokeDasharray: data.payload.strokeDasharray,\n          x1: 0,\n          y1: halfSize,\n          x2: SIZE,\n          y2: halfSize,\n          className: \"recharts-legend-icon\"\n        });\n      }\n      if (data.type === 'line') {\n        return /*#__PURE__*/React.createElement(\"path\", {\n          strokeWidth: 4,\n          fill: \"none\",\n          stroke: color,\n          d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n            A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n            H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n            A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n          className: \"recharts-legend-icon\"\n        });\n      }\n      if (data.type === 'rect') {\n        return /*#__PURE__*/React.createElement(\"path\", {\n          stroke: \"none\",\n          fill: color,\n          d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n          className: \"recharts-legend-icon\"\n        });\n      }\n      if ( /*#__PURE__*/React.isValidElement(data.legendIcon)) {\n        var iconProps = _objectSpread({}, data);\n        delete iconProps.legendIcon;\n        return /*#__PURE__*/React.cloneElement(data.legendIcon, iconProps);\n      }\n      return /*#__PURE__*/React.createElement(Symbols, {\n        fill: color,\n        cx: halfSize,\n        cy: halfSize,\n        size: SIZE,\n        sizeType: \"diameter\",\n        type: data.type\n      });\n    }\n\n    /**\n     * Draw items of legend\n     * @return {ReactElement} Items\n     */\n  }, {\n    key: \"renderItems\",\n    value: function renderItems() {\n      var _this = this;\n      var _this$props = this.props,\n        payload = _this$props.payload,\n        iconSize = _this$props.iconSize,\n        layout = _this$props.layout,\n        formatter = _this$props.formatter,\n        inactiveColor = _this$props.inactiveColor;\n      var viewBox = {\n        x: 0,\n        y: 0,\n        width: SIZE,\n        height: SIZE\n      };\n      var itemStyle = {\n        display: layout === 'horizontal' ? 'inline-block' : 'block',\n        marginRight: 10\n      };\n      var svgStyle = {\n        display: 'inline-block',\n        verticalAlign: 'middle',\n        marginRight: 4\n      };\n      return payload.map(function (entry, i) {\n        var finalFormatter = entry.formatter || formatter;\n        var className = clsx(_defineProperty(_defineProperty({\n          'recharts-legend-item': true\n        }, \"legend-item-\".concat(i), true), \"inactive\", entry.inactive));\n        if (entry.type === 'none') {\n          return null;\n        }\n\n        // Do not render entry.value as functions. Always require static string properties.\n        var entryValue = !isFunction(entry.value) ? entry.value : null;\n        warn(!isFunction(entry.value), \"The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name=\\\"Name of my Data\\\"/>\" // eslint-disable-line max-len\n        );\n        var color = entry.inactive ? inactiveColor : entry.color;\n        return /*#__PURE__*/React.createElement(\"li\", _extends({\n          className: className,\n          style: itemStyle\n          // eslint-disable-next-line react/no-array-index-key\n          ,\n          key: \"legend-item-\".concat(i)\n        }, adaptEventsOfChild(_this.props, entry, i)), /*#__PURE__*/React.createElement(Surface, {\n          width: iconSize,\n          height: iconSize,\n          viewBox: viewBox,\n          style: svgStyle\n        }, _this.renderIcon(entry)), /*#__PURE__*/React.createElement(\"span\", {\n          className: \"recharts-legend-item-text\",\n          style: {\n            color: color\n          }\n        }, finalFormatter ? finalFormatter(entryValue, entry, i) : entryValue));\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props2 = this.props,\n        payload = _this$props2.payload,\n        layout = _this$props2.layout,\n        align = _this$props2.align;\n      if (!payload || !payload.length) {\n        return null;\n      }\n      var finalStyle = {\n        padding: 0,\n        margin: 0,\n        textAlign: layout === 'horizontal' ? align : 'left'\n      };\n      return /*#__PURE__*/React.createElement(\"ul\", {\n        className: \"recharts-default-legend\",\n        style: finalStyle\n      }, this.renderItems());\n    }\n  }]);\n}(PureComponent);\n_defineProperty(DefaultLegendContent, \"displayName\", 'Legend');\n_defineProperty(DefaultLegendContent, \"defaultProps\", {\n  iconSize: 14,\n  layout: 'horizontal',\n  align: 'center',\n  verticalAlign: 'middle',\n  inactiveColor: '#ccc'\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"ref\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultLegendContent } from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n  return entry.value;\n}\nfunction renderContent(content, props) {\n  if ( /*#__PURE__*/React.isValidElement(content)) {\n    return /*#__PURE__*/React.cloneElement(content, props);\n  }\n  if (typeof content === 'function') {\n    return /*#__PURE__*/React.createElement(content, props);\n  }\n  var ref = props.ref,\n    otherProps = _objectWithoutProperties(props, _excluded);\n  return /*#__PURE__*/React.createElement(DefaultLegendContent, otherProps);\n}\nvar EPS = 1;\nexport var Legend = /*#__PURE__*/function (_PureComponent) {\n  function Legend() {\n    var _this;\n    _classCallCheck(this, Legend);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _callSuper(this, Legend, [].concat(args));\n    _defineProperty(_this, \"lastBoundingBox\", {\n      width: -1,\n      height: -1\n    });\n    return _this;\n  }\n  _inherits(Legend, _PureComponent);\n  return _createClass(Legend, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.updateBBox();\n    }\n  }, {\n    key: \"getBBox\",\n    value: function getBBox() {\n      if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n        var box = this.wrapperNode.getBoundingClientRect();\n        box.height = this.wrapperNode.offsetHeight;\n        box.width = this.wrapperNode.offsetWidth;\n        return box;\n      }\n      return null;\n    }\n  }, {\n    key: \"updateBBox\",\n    value: function updateBBox() {\n      var onBBoxUpdate = this.props.onBBoxUpdate;\n      var box = this.getBBox();\n      if (box) {\n        if (Math.abs(box.width - this.lastBoundingBox.width) > EPS || Math.abs(box.height - this.lastBoundingBox.height) > EPS) {\n          this.lastBoundingBox.width = box.width;\n          this.lastBoundingBox.height = box.height;\n          if (onBBoxUpdate) {\n            onBBoxUpdate(box);\n          }\n        }\n      } else if (this.lastBoundingBox.width !== -1 || this.lastBoundingBox.height !== -1) {\n        this.lastBoundingBox.width = -1;\n        this.lastBoundingBox.height = -1;\n        if (onBBoxUpdate) {\n          onBBoxUpdate(null);\n        }\n      }\n    }\n  }, {\n    key: \"getBBoxSnapshot\",\n    value: function getBBoxSnapshot() {\n      if (this.lastBoundingBox.width >= 0 && this.lastBoundingBox.height >= 0) {\n        return _objectSpread({}, this.lastBoundingBox);\n      }\n      return {\n        width: 0,\n        height: 0\n      };\n    }\n  }, {\n    key: \"getDefaultPosition\",\n    value: function getDefaultPosition(style) {\n      var _this$props = this.props,\n        layout = _this$props.layout,\n        align = _this$props.align,\n        verticalAlign = _this$props.verticalAlign,\n        margin = _this$props.margin,\n        chartWidth = _this$props.chartWidth,\n        chartHeight = _this$props.chartHeight;\n      var hPos, vPos;\n      if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n        if (align === 'center' && layout === 'vertical') {\n          var box = this.getBBoxSnapshot();\n          hPos = {\n            left: ((chartWidth || 0) - box.width) / 2\n          };\n        } else {\n          hPos = align === 'right' ? {\n            right: margin && margin.right || 0\n          } : {\n            left: margin && margin.left || 0\n          };\n        }\n      }\n      if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n        if (verticalAlign === 'middle') {\n          var _box = this.getBBoxSnapshot();\n          vPos = {\n            top: ((chartHeight || 0) - _box.height) / 2\n          };\n        } else {\n          vPos = verticalAlign === 'bottom' ? {\n            bottom: margin && margin.bottom || 0\n          } : {\n            top: margin && margin.top || 0\n          };\n        }\n      }\n      return _objectSpread(_objectSpread({}, hPos), vPos);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$props2 = this.props,\n        content = _this$props2.content,\n        width = _this$props2.width,\n        height = _this$props2.height,\n        wrapperStyle = _this$props2.wrapperStyle,\n        payloadUniqBy = _this$props2.payloadUniqBy,\n        payload = _this$props2.payload;\n      var outerStyle = _objectSpread(_objectSpread({\n        position: 'absolute',\n        width: width || 'auto',\n        height: height || 'auto'\n      }, this.getDefaultPosition(wrapperStyle)), wrapperStyle);\n      return /*#__PURE__*/React.createElement(\"div\", {\n        className: \"recharts-legend-wrapper\",\n        style: outerStyle,\n        ref: function ref(node) {\n          _this2.wrapperNode = node;\n        }\n      }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n        payload: getUniqPayload(payload, payloadUniqBy, defaultUniqBy)\n      })));\n    }\n  }], [{\n    key: \"getWithHeight\",\n    value: function getWithHeight(item, chartWidth) {\n      var _this$defaultProps$it = _objectSpread(_objectSpread({}, this.defaultProps), item.props),\n        layout = _this$defaultProps$it.layout;\n      if (layout === 'vertical' && isNumber(item.props.height)) {\n        return {\n          height: item.props.height\n        };\n      }\n      if (layout === 'horizontal') {\n        return {\n          width: item.props.width || chartWidth\n        };\n      }\n      return null;\n    }\n  }]);\n}(PureComponent);\n_defineProperty(Legend, \"displayName\", 'Legend');\n_defineProperty(Legend, \"defaultProps\", {\n  iconSize: 14,\n  layout: 'horizontal',\n  align: 'center',\n  verticalAlign: 'bottom'\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport clsx from 'clsx';\nimport React, { forwardRef, cloneElement, useState, useImperativeHandle, useRef, useEffect, useMemo, useCallback } from 'react';\nimport throttle from 'lodash/throttle';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { getDisplayName } from '../util/ReactUtils';\nexport var ResponsiveContainer = /*#__PURE__*/forwardRef(function (_ref, ref) {\n  var aspect = _ref.aspect,\n    _ref$initialDimension = _ref.initialDimension,\n    initialDimension = _ref$initialDimension === void 0 ? {\n      width: -1,\n      height: -1\n    } : _ref$initialDimension,\n    _ref$width = _ref.width,\n    width = _ref$width === void 0 ? '100%' : _ref$width,\n    _ref$height = _ref.height,\n    height = _ref$height === void 0 ? '100%' : _ref$height,\n    _ref$minWidth = _ref.minWidth,\n    minWidth = _ref$minWidth === void 0 ? 0 : _ref$minWidth,\n    minHeight = _ref.minHeight,\n    maxHeight = _ref.maxHeight,\n    children = _ref.children,\n    _ref$debounce = _ref.debounce,\n    debounce = _ref$debounce === void 0 ? 0 : _ref$debounce,\n    id = _ref.id,\n    className = _ref.className,\n    onResize = _ref.onResize,\n    _ref$style = _ref.style,\n    style = _ref$style === void 0 ? {} : _ref$style;\n  var containerRef = useRef(null);\n  var onResizeRef = useRef();\n  onResizeRef.current = onResize;\n  useImperativeHandle(ref, function () {\n    return Object.defineProperty(containerRef.current, 'current', {\n      get: function get() {\n        // eslint-disable-next-line no-console\n        console.warn('The usage of ref.current.current is deprecated and will no longer be supported.');\n        return containerRef.current;\n      },\n      configurable: true\n    });\n  });\n  var _useState = useState({\n      containerWidth: initialDimension.width,\n      containerHeight: initialDimension.height\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    sizes = _useState2[0],\n    setSizes = _useState2[1];\n  var setContainerSize = useCallback(function (newWidth, newHeight) {\n    setSizes(function (prevState) {\n      var roundedWidth = Math.round(newWidth);\n      var roundedHeight = Math.round(newHeight);\n      if (prevState.containerWidth === roundedWidth && prevState.containerHeight === roundedHeight) {\n        return prevState;\n      }\n      return {\n        containerWidth: roundedWidth,\n        containerHeight: roundedHeight\n      };\n    });\n  }, []);\n  useEffect(function () {\n    var callback = function callback(entries) {\n      var _onResizeRef$current;\n      var _entries$0$contentRec = entries[0].contentRect,\n        containerWidth = _entries$0$contentRec.width,\n        containerHeight = _entries$0$contentRec.height;\n      setContainerSize(containerWidth, containerHeight);\n      (_onResizeRef$current = onResizeRef.current) === null || _onResizeRef$current === void 0 || _onResizeRef$current.call(onResizeRef, containerWidth, containerHeight);\n    };\n    if (debounce > 0) {\n      callback = throttle(callback, debounce, {\n        trailing: true,\n        leading: false\n      });\n    }\n    var observer = new ResizeObserver(callback);\n    var _containerRef$current = containerRef.current.getBoundingClientRect(),\n      containerWidth = _containerRef$current.width,\n      containerHeight = _containerRef$current.height;\n    setContainerSize(containerWidth, containerHeight);\n    observer.observe(containerRef.current);\n    return function () {\n      observer.disconnect();\n    };\n  }, [setContainerSize, debounce]);\n  var chartContent = useMemo(function () {\n    var containerWidth = sizes.containerWidth,\n      containerHeight = sizes.containerHeight;\n    if (containerWidth < 0 || containerHeight < 0) {\n      return null;\n    }\n    warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n       maybe you don't need to use a ResponsiveContainer.\", width, height);\n    warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n    var calculatedWidth = isPercent(width) ? containerWidth : width;\n    var calculatedHeight = isPercent(height) ? containerHeight : height;\n    if (aspect && aspect > 0) {\n      // Preserve the desired aspect ratio\n      if (calculatedWidth) {\n        // Will default to using width for aspect ratio\n        calculatedHeight = calculatedWidth / aspect;\n      } else if (calculatedHeight) {\n        // But we should also take height into consideration\n        calculatedWidth = calculatedHeight * aspect;\n      }\n\n      // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n      if (maxHeight && calculatedHeight > maxHeight) {\n        calculatedHeight = maxHeight;\n      }\n    }\n    warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n       please check the style of container, or the props width(%s) and height(%s),\\n       or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n       height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n    var isCharts = !Array.isArray(children) && getDisplayName(children.type).endsWith('Chart');\n    return React.Children.map(children, function (child) {\n      if ( /*#__PURE__*/React.isValidElement(child)) {\n        return /*#__PURE__*/cloneElement(child, _objectSpread({\n          width: calculatedWidth,\n          height: calculatedHeight\n        }, isCharts ? {\n          style: _objectSpread({\n            height: '100%',\n            width: '100%',\n            maxHeight: calculatedHeight,\n            maxWidth: calculatedWidth\n          }, child.props.style)\n        } : {}));\n      }\n      return child;\n    });\n  }, [aspect, children, height, maxHeight, minHeight, minWidth, sizes, width]);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    id: id ? \"\".concat(id) : undefined,\n    className: clsx('recharts-responsive-container', className),\n    style: _objectSpread(_objectSpread({}, style), {}, {\n      width: width,\n      height: height,\n      minWidth: minWidth,\n      minHeight: minHeight,\n      maxHeight: maxHeight\n    }),\n    ref: containerRef\n  }, chartContent);\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar MULTIPLY_OR_DIVIDE_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([*/])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar ADD_OR_SUBTRACT_REGEX = /(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)([+-])(-?\\d+(?:\\.\\d+)?[a-zA-Z%]*)/;\nvar CSS_LENGTH_UNIT_REGEX = /^px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q$/;\nvar NUM_SPLIT_REGEX = /(-?\\d+(?:\\.\\d+)?)([a-zA-Z%]+)?/;\nvar CONVERSION_RATES = {\n  cm: 96 / 2.54,\n  mm: 96 / 25.4,\n  pt: 96 / 72,\n  pc: 96 / 6,\n  \"in\": 96,\n  Q: 96 / (2.54 * 40),\n  px: 1\n};\nvar FIXED_CSS_LENGTH_UNITS = Object.keys(CONVERSION_RATES);\nvar STR_NAN = 'NaN';\nfunction convertToPx(value, unit) {\n  return value * CONVERSION_RATES[unit];\n}\nvar DecimalCSS = /*#__PURE__*/function () {\n  function DecimalCSS(num, unit) {\n    _classCallCheck(this, DecimalCSS);\n    this.num = num;\n    this.unit = unit;\n    this.num = num;\n    this.unit = unit;\n    if (Number.isNaN(num)) {\n      this.unit = '';\n    }\n    if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {\n      this.num = NaN;\n      this.unit = '';\n    }\n    if (FIXED_CSS_LENGTH_UNITS.includes(unit)) {\n      this.num = convertToPx(num, unit);\n      this.unit = 'px';\n    }\n  }\n  return _createClass(DecimalCSS, [{\n    key: \"add\",\n    value: function add(other) {\n      if (this.unit !== other.unit) {\n        return new DecimalCSS(NaN, '');\n      }\n      return new DecimalCSS(this.num + other.num, this.unit);\n    }\n  }, {\n    key: \"subtract\",\n    value: function subtract(other) {\n      if (this.unit !== other.unit) {\n        return new DecimalCSS(NaN, '');\n      }\n      return new DecimalCSS(this.num - other.num, this.unit);\n    }\n  }, {\n    key: \"multiply\",\n    value: function multiply(other) {\n      if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n        return new DecimalCSS(NaN, '');\n      }\n      return new DecimalCSS(this.num * other.num, this.unit || other.unit);\n    }\n  }, {\n    key: \"divide\",\n    value: function divide(other) {\n      if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {\n        return new DecimalCSS(NaN, '');\n      }\n      return new DecimalCSS(this.num / other.num, this.unit || other.unit);\n    }\n  }, {\n    key: \"toString\",\n    value: function toString() {\n      return \"\".concat(this.num).concat(this.unit);\n    }\n  }, {\n    key: \"isNaN\",\n    value: function isNaN() {\n      return Number.isNaN(this.num);\n    }\n  }], [{\n    key: \"parse\",\n    value: function parse(str) {\n      var _NUM_SPLIT_REGEX$exec;\n      var _ref = (_NUM_SPLIT_REGEX$exec = NUM_SPLIT_REGEX.exec(str)) !== null && _NUM_SPLIT_REGEX$exec !== void 0 ? _NUM_SPLIT_REGEX$exec : [],\n        _ref2 = _slicedToArray(_ref, 3),\n        numStr = _ref2[1],\n        unit = _ref2[2];\n      return new DecimalCSS(parseFloat(numStr), unit !== null && unit !== void 0 ? unit : '');\n    }\n  }]);\n}();\nfunction calculateArithmetic(expr) {\n  if (expr.includes(STR_NAN)) {\n    return STR_NAN;\n  }\n  var newExpr = expr;\n  while (newExpr.includes('*') || newExpr.includes('/')) {\n    var _MULTIPLY_OR_DIVIDE_R;\n    var _ref3 = (_MULTIPLY_OR_DIVIDE_R = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr)) !== null && _MULTIPLY_OR_DIVIDE_R !== void 0 ? _MULTIPLY_OR_DIVIDE_R : [],\n      _ref4 = _slicedToArray(_ref3, 4),\n      leftOperand = _ref4[1],\n      operator = _ref4[2],\n      rightOperand = _ref4[3];\n    var lTs = DecimalCSS.parse(leftOperand !== null && leftOperand !== void 0 ? leftOperand : '');\n    var rTs = DecimalCSS.parse(rightOperand !== null && rightOperand !== void 0 ? rightOperand : '');\n    var result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);\n    if (result.isNaN()) {\n      return STR_NAN;\n    }\n    newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());\n  }\n  while (newExpr.includes('+') || /.-\\d+(?:\\.\\d+)?/.test(newExpr)) {\n    var _ADD_OR_SUBTRACT_REGE;\n    var _ref5 = (_ADD_OR_SUBTRACT_REGE = ADD_OR_SUBTRACT_REGEX.exec(newExpr)) !== null && _ADD_OR_SUBTRACT_REGE !== void 0 ? _ADD_OR_SUBTRACT_REGE : [],\n      _ref6 = _slicedToArray(_ref5, 4),\n      _leftOperand = _ref6[1],\n      _operator = _ref6[2],\n      _rightOperand = _ref6[3];\n    var _lTs = DecimalCSS.parse(_leftOperand !== null && _leftOperand !== void 0 ? _leftOperand : '');\n    var _rTs = DecimalCSS.parse(_rightOperand !== null && _rightOperand !== void 0 ? _rightOperand : '');\n    var _result = _operator === '+' ? _lTs.add(_rTs) : _lTs.subtract(_rTs);\n    if (_result.isNaN()) {\n      return STR_NAN;\n    }\n    newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, _result.toString());\n  }\n  return newExpr;\n}\nvar PARENTHESES_REGEX = /\\(([^()]*)\\)/;\nfunction calculateParentheses(expr) {\n  var newExpr = expr;\n  while (newExpr.includes('(')) {\n    var _PARENTHESES_REGEX$ex = PARENTHESES_REGEX.exec(newExpr),\n      _PARENTHESES_REGEX$ex2 = _slicedToArray(_PARENTHESES_REGEX$ex, 2),\n      parentheticalExpression = _PARENTHESES_REGEX$ex2[1];\n    newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));\n  }\n  return newExpr;\n}\nfunction evaluateExpression(expression) {\n  var newExpr = expression.replace(/\\s+/g, '');\n  newExpr = calculateParentheses(newExpr);\n  newExpr = calculateArithmetic(newExpr);\n  return newExpr;\n}\nexport function safeEvaluateExpression(expression) {\n  try {\n    return evaluateExpression(expression);\n  } catch (e) {\n    /* istanbul ignore next */\n    return STR_NAN;\n  }\n}\nexport function reduceCSSCalc(expression) {\n  var result = safeEvaluateExpression(expression.slice(5, -1));\n  if (result === STR_NAN) {\n    // notify the user\n    return '';\n  }\n  return result;\n}","var _excluded = [\"x\", \"y\", \"lineHeight\", \"capHeight\", \"scaleToFit\", \"textAnchor\", \"verticalAnchor\", \"fill\"],\n  _excluded2 = [\"dx\", \"dy\", \"angle\", \"className\", \"breakAll\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport React, { useMemo } from 'react';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { Global } from '../util/Global';\nimport { filterProps } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nimport { reduceCSSCalc } from '../util/ReduceCSSCalc';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\nvar calculateWordWidths = function calculateWordWidths(_ref) {\n  var children = _ref.children,\n    breakAll = _ref.breakAll,\n    style = _ref.style;\n  try {\n    var words = [];\n    if (!isNil(children)) {\n      if (breakAll) {\n        words = children.toString().split('');\n      } else {\n        words = children.toString().split(BREAKING_SPACES);\n      }\n    }\n    var wordsWithComputedWidth = words.map(function (word) {\n      return {\n        word: word,\n        width: getStringSize(word, style).width\n      };\n    });\n    var spaceWidth = breakAll ? 0 : getStringSize(\"\\xA0\", style).width;\n    return {\n      wordsWithComputedWidth: wordsWithComputedWidth,\n      spaceWidth: spaceWidth\n    };\n  } catch (e) {\n    return null;\n  }\n};\nvar calculateWordsByLines = function calculateWordsByLines(_ref2, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) {\n  var maxLines = _ref2.maxLines,\n    children = _ref2.children,\n    style = _ref2.style,\n    breakAll = _ref2.breakAll;\n  var shouldLimitLines = isNumber(maxLines);\n  var text = children;\n  var calculate = function calculate() {\n    var words = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    return words.reduce(function (result, _ref3) {\n      var word = _ref3.word,\n        width = _ref3.width;\n      var currentLine = result[result.length - 1];\n      if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < Number(lineWidth))) {\n        // Word can be added to an existing line\n        currentLine.words.push(word);\n        currentLine.width += width + spaceWidth;\n      } else {\n        // Add first word to line or word is too long to scaleToFit on existing line\n        var newLine = {\n          words: [word],\n          width: width\n        };\n        result.push(newLine);\n      }\n      return result;\n    }, []);\n  };\n  var originalResult = calculate(initialWordsWithComputedWith);\n  var findLongestLine = function findLongestLine(words) {\n    return words.reduce(function (a, b) {\n      return a.width > b.width ? a : b;\n    });\n  };\n  if (!shouldLimitLines) {\n    return originalResult;\n  }\n  var suffix = '…';\n  var checkOverflow = function checkOverflow(index) {\n    var tempText = text.slice(0, index);\n    var words = calculateWordWidths({\n      breakAll: breakAll,\n      style: style,\n      children: tempText + suffix\n    }).wordsWithComputedWidth;\n    var result = calculate(words);\n    var doesOverflow = result.length > maxLines || findLongestLine(result).width > Number(lineWidth);\n    return [doesOverflow, result];\n  };\n  var start = 0;\n  var end = text.length - 1;\n  var iterations = 0;\n  var trimmedResult;\n  while (start <= end && iterations <= text.length - 1) {\n    var middle = Math.floor((start + end) / 2);\n    var prev = middle - 1;\n    var _checkOverflow = checkOverflow(prev),\n      _checkOverflow2 = _slicedToArray(_checkOverflow, 2),\n      doesPrevOverflow = _checkOverflow2[0],\n      result = _checkOverflow2[1];\n    var _checkOverflow3 = checkOverflow(middle),\n      _checkOverflow4 = _slicedToArray(_checkOverflow3, 1),\n      doesMiddleOverflow = _checkOverflow4[0];\n    if (!doesPrevOverflow && !doesMiddleOverflow) {\n      start = middle + 1;\n    }\n    if (doesPrevOverflow && doesMiddleOverflow) {\n      end = middle - 1;\n    }\n    if (!doesPrevOverflow && doesMiddleOverflow) {\n      trimmedResult = result;\n      break;\n    }\n    iterations++;\n  }\n\n  // Fallback to originalResult (result without trimming) if we cannot find the\n  // where to trim.  This should not happen :tm:\n  return trimmedResult || originalResult;\n};\nvar getWordsWithoutCalculate = function getWordsWithoutCalculate(children) {\n  var words = !isNil(children) ? children.toString().split(BREAKING_SPACES) : [];\n  return [{\n    words: words\n  }];\n};\nvar getWordsByLines = function getWordsByLines(_ref4) {\n  var width = _ref4.width,\n    scaleToFit = _ref4.scaleToFit,\n    children = _ref4.children,\n    style = _ref4.style,\n    breakAll = _ref4.breakAll,\n    maxLines = _ref4.maxLines;\n  // Only perform calculations if using features that require them (multiline, scaleToFit)\n  if ((width || scaleToFit) && !Global.isSsr) {\n    var wordsWithComputedWidth, spaceWidth;\n    var wordWidths = calculateWordWidths({\n      breakAll: breakAll,\n      children: children,\n      style: style\n    });\n    if (wordWidths) {\n      var wcw = wordWidths.wordsWithComputedWidth,\n        sw = wordWidths.spaceWidth;\n      wordsWithComputedWidth = wcw;\n      spaceWidth = sw;\n    } else {\n      return getWordsWithoutCalculate(children);\n    }\n    return calculateWordsByLines({\n      breakAll: breakAll,\n      children: children,\n      maxLines: maxLines,\n      style: style\n    }, wordsWithComputedWidth, spaceWidth, width, scaleToFit);\n  }\n  return getWordsWithoutCalculate(children);\n};\nvar DEFAULT_FILL = '#808080';\nexport var Text = function Text(_ref5) {\n  var _ref5$x = _ref5.x,\n    propsX = _ref5$x === void 0 ? 0 : _ref5$x,\n    _ref5$y = _ref5.y,\n    propsY = _ref5$y === void 0 ? 0 : _ref5$y,\n    _ref5$lineHeight = _ref5.lineHeight,\n    lineHeight = _ref5$lineHeight === void 0 ? '1em' : _ref5$lineHeight,\n    _ref5$capHeight = _ref5.capHeight,\n    capHeight = _ref5$capHeight === void 0 ? '0.71em' : _ref5$capHeight,\n    _ref5$scaleToFit = _ref5.scaleToFit,\n    scaleToFit = _ref5$scaleToFit === void 0 ? false : _ref5$scaleToFit,\n    _ref5$textAnchor = _ref5.textAnchor,\n    textAnchor = _ref5$textAnchor === void 0 ? 'start' : _ref5$textAnchor,\n    _ref5$verticalAnchor = _ref5.verticalAnchor,\n    verticalAnchor = _ref5$verticalAnchor === void 0 ? 'end' : _ref5$verticalAnchor,\n    _ref5$fill = _ref5.fill,\n    fill = _ref5$fill === void 0 ? DEFAULT_FILL : _ref5$fill,\n    props = _objectWithoutProperties(_ref5, _excluded);\n  var wordsByLines = useMemo(function () {\n    return getWordsByLines({\n      breakAll: props.breakAll,\n      children: props.children,\n      maxLines: props.maxLines,\n      scaleToFit: scaleToFit,\n      style: props.style,\n      width: props.width\n    });\n  }, [props.breakAll, props.children, props.maxLines, scaleToFit, props.style, props.width]);\n  var dx = props.dx,\n    dy = props.dy,\n    angle = props.angle,\n    className = props.className,\n    breakAll = props.breakAll,\n    textProps = _objectWithoutProperties(props, _excluded2);\n  if (!isNumOrStr(propsX) || !isNumOrStr(propsY)) {\n    return null;\n  }\n  var x = propsX + (isNumber(dx) ? dx : 0);\n  var y = propsY + (isNumber(dy) ? dy : 0);\n  var startDy;\n  switch (verticalAnchor) {\n    case 'start':\n      startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n      break;\n    case 'middle':\n      startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n      break;\n    default:\n      startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n      break;\n  }\n  var transforms = [];\n  if (scaleToFit) {\n    var lineWidth = wordsByLines[0].width;\n    var width = props.width;\n    transforms.push(\"scale(\".concat((isNumber(width) ? width / lineWidth : 1) / lineWidth, \")\"));\n  }\n  if (angle) {\n    transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n  }\n  if (transforms.length) {\n    textProps.transform = transforms.join(' ');\n  }\n  return /*#__PURE__*/React.createElement(\"text\", _extends({}, filterProps(textProps, true), {\n    x: x,\n    y: y,\n    className: clsx('recharts-text', className),\n    textAnchor: textAnchor,\n    fill: fill.includes('url') ? DEFAULT_FILL : fill\n  }), wordsByLines.map(function (line, index) {\n    var words = line.words.join(breakAll ? '' : ' ');\n    return (\n      /*#__PURE__*/\n      // duplicate words will cause duplicate keys\n      // eslint-disable-next-line react/no-array-index-key\n      React.createElement(\"tspan\", {\n        x: x,\n        dy: index === 0 ? startDy : lineHeight,\n        key: \"\".concat(words, \"-\").concat(index)\n      }, words)\n    );\n  }));\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Default Tooltip Content\n */\n\nimport React from 'react';\nimport sortBy from 'lodash/sortBy';\nimport isNil from 'lodash/isNil';\nimport clsx from 'clsx';\nimport { isNumOrStr } from '../util/DataUtils';\nfunction defaultFormatter(value) {\n  return Array.isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n}\nexport var DefaultTooltipContent = function DefaultTooltipContent(props) {\n  var _props$separator = props.separator,\n    separator = _props$separator === void 0 ? ' : ' : _props$separator,\n    _props$contentStyle = props.contentStyle,\n    contentStyle = _props$contentStyle === void 0 ? {} : _props$contentStyle,\n    _props$itemStyle = props.itemStyle,\n    itemStyle = _props$itemStyle === void 0 ? {} : _props$itemStyle,\n    _props$labelStyle = props.labelStyle,\n    labelStyle = _props$labelStyle === void 0 ? {} : _props$labelStyle,\n    payload = props.payload,\n    formatter = props.formatter,\n    itemSorter = props.itemSorter,\n    wrapperClassName = props.wrapperClassName,\n    labelClassName = props.labelClassName,\n    label = props.label,\n    labelFormatter = props.labelFormatter,\n    _props$accessibilityL = props.accessibilityLayer,\n    accessibilityLayer = _props$accessibilityL === void 0 ? false : _props$accessibilityL;\n  var renderContent = function renderContent() {\n    if (payload && payload.length) {\n      var listStyle = {\n        padding: 0,\n        margin: 0\n      };\n      var items = (itemSorter ? sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n        if (entry.type === 'none') {\n          return null;\n        }\n        var finalItemStyle = _objectSpread({\n          display: 'block',\n          paddingTop: 4,\n          paddingBottom: 4,\n          color: entry.color || '#000'\n        }, itemStyle);\n        var finalFormatter = entry.formatter || formatter || defaultFormatter;\n        var value = entry.value,\n          name = entry.name;\n        var finalValue = value;\n        var finalName = name;\n        if (finalFormatter && finalValue != null && finalName != null) {\n          var formatted = finalFormatter(value, name, entry, i, payload);\n          if (Array.isArray(formatted)) {\n            var _formatted = _slicedToArray(formatted, 2);\n            finalValue = _formatted[0];\n            finalName = _formatted[1];\n          } else {\n            finalValue = formatted;\n          }\n        }\n        return (\n          /*#__PURE__*/\n          // eslint-disable-next-line react/no-array-index-key\n          React.createElement(\"li\", {\n            className: \"recharts-tooltip-item\",\n            key: \"tooltip-item-\".concat(i),\n            style: finalItemStyle\n          }, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n            className: \"recharts-tooltip-item-name\"\n          }, finalName) : null, isNumOrStr(finalName) ? /*#__PURE__*/React.createElement(\"span\", {\n            className: \"recharts-tooltip-item-separator\"\n          }, separator) : null, /*#__PURE__*/React.createElement(\"span\", {\n            className: \"recharts-tooltip-item-value\"\n          }, finalValue), /*#__PURE__*/React.createElement(\"span\", {\n            className: \"recharts-tooltip-item-unit\"\n          }, entry.unit || ''))\n        );\n      });\n      return /*#__PURE__*/React.createElement(\"ul\", {\n        className: \"recharts-tooltip-item-list\",\n        style: listStyle\n      }, items);\n    }\n    return null;\n  };\n  var finalStyle = _objectSpread({\n    margin: 0,\n    padding: 10,\n    backgroundColor: '#fff',\n    border: '1px solid #ccc',\n    whiteSpace: 'nowrap'\n  }, contentStyle);\n  var finalLabelStyle = _objectSpread({\n    margin: 0\n  }, labelStyle);\n  var hasLabel = !isNil(label);\n  var finalLabel = hasLabel ? label : '';\n  var wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);\n  var labelCN = clsx('recharts-tooltip-label', labelClassName);\n  if (hasLabel && labelFormatter && payload !== undefined && payload !== null) {\n    finalLabel = labelFormatter(label, payload);\n  }\n  var accessibilityAttributes = accessibilityLayer ? {\n    role: 'status',\n    'aria-live': 'assertive'\n  } : {};\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: wrapperCN,\n    style: finalStyle\n  }, accessibilityAttributes), /*#__PURE__*/React.createElement(\"p\", {\n    className: labelCN,\n    style: finalLabelStyle\n  }, /*#__PURE__*/React.isValidElement(finalLabel) ? finalLabel : \"\".concat(finalLabel)), renderContent());\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport clsx from 'clsx';\nimport { isNumber } from '../DataUtils';\nvar CSS_CLASS_PREFIX = 'recharts-tooltip-wrapper';\nvar TOOLTIP_HIDDEN = {\n  visibility: 'hidden'\n};\nexport function getTooltipCSSClassName(_ref) {\n  var coordinate = _ref.coordinate,\n    translateX = _ref.translateX,\n    translateY = _ref.translateY;\n  return clsx(CSS_CLASS_PREFIX, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(CSS_CLASS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), \"\".concat(CSS_CLASS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), \"\".concat(CSS_CLASS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y));\n}\nexport function getTooltipTranslateXY(_ref2) {\n  var allowEscapeViewBox = _ref2.allowEscapeViewBox,\n    coordinate = _ref2.coordinate,\n    key = _ref2.key,\n    offsetTopLeft = _ref2.offsetTopLeft,\n    position = _ref2.position,\n    reverseDirection = _ref2.reverseDirection,\n    tooltipDimension = _ref2.tooltipDimension,\n    viewBox = _ref2.viewBox,\n    viewBoxDimension = _ref2.viewBoxDimension;\n  if (position && isNumber(position[key])) {\n    return position[key];\n  }\n  var negative = coordinate[key] - tooltipDimension - offsetTopLeft;\n  var positive = coordinate[key] + offsetTopLeft;\n  if (allowEscapeViewBox[key]) {\n    return reverseDirection[key] ? negative : positive;\n  }\n  if (reverseDirection[key]) {\n    var _tooltipBoundary = negative;\n    var _viewBoxBoundary = viewBox[key];\n    if (_tooltipBoundary < _viewBoxBoundary) {\n      return Math.max(positive, viewBox[key]);\n    }\n    return Math.max(negative, viewBox[key]);\n  }\n  var tooltipBoundary = positive + tooltipDimension;\n  var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n  if (tooltipBoundary > viewBoxBoundary) {\n    return Math.max(negative, viewBox[key]);\n  }\n  return Math.max(positive, viewBox[key]);\n}\nexport function getTransformStyle(_ref3) {\n  var translateX = _ref3.translateX,\n    translateY = _ref3.translateY,\n    useTranslate3d = _ref3.useTranslate3d;\n  return {\n    transform: useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n  };\n}\nexport function getTooltipTranslate(_ref4) {\n  var allowEscapeViewBox = _ref4.allowEscapeViewBox,\n    coordinate = _ref4.coordinate,\n    offsetTopLeft = _ref4.offsetTopLeft,\n    position = _ref4.position,\n    reverseDirection = _ref4.reverseDirection,\n    tooltipBox = _ref4.tooltipBox,\n    useTranslate3d = _ref4.useTranslate3d,\n    viewBox = _ref4.viewBox;\n  var cssProperties, translateX, translateY;\n  if (tooltipBox.height > 0 && tooltipBox.width > 0 && coordinate) {\n    translateX = getTooltipTranslateXY({\n      allowEscapeViewBox: allowEscapeViewBox,\n      coordinate: coordinate,\n      key: 'x',\n      offsetTopLeft: offsetTopLeft,\n      position: position,\n      reverseDirection: reverseDirection,\n      tooltipDimension: tooltipBox.width,\n      viewBox: viewBox,\n      viewBoxDimension: viewBox.width\n    });\n    translateY = getTooltipTranslateXY({\n      allowEscapeViewBox: allowEscapeViewBox,\n      coordinate: coordinate,\n      key: 'y',\n      offsetTopLeft: offsetTopLeft,\n      position: position,\n      reverseDirection: reverseDirection,\n      tooltipDimension: tooltipBox.height,\n      viewBox: viewBox,\n      viewBoxDimension: viewBox.height\n    });\n    cssProperties = getTransformStyle({\n      translateX: translateX,\n      translateY: translateY,\n      useTranslate3d: useTranslate3d\n    });\n  } else {\n    cssProperties = TOOLTIP_HIDDEN;\n  }\n  return {\n    cssProperties: cssProperties,\n    cssClasses: getTooltipCSSClassName({\n      translateX: translateX,\n      translateY: translateY,\n      coordinate: coordinate\n    })\n  };\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { PureComponent } from 'react';\nimport { getTooltipTranslate } from '../util/tooltip/translate';\nvar EPSILON = 1;\nexport var TooltipBoundingBox = /*#__PURE__*/function (_PureComponent) {\n  function TooltipBoundingBox() {\n    var _this;\n    _classCallCheck(this, TooltipBoundingBox);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _callSuper(this, TooltipBoundingBox, [].concat(args));\n    _defineProperty(_this, \"state\", {\n      dismissed: false,\n      dismissedAtCoordinate: {\n        x: 0,\n        y: 0\n      },\n      lastBoundingBox: {\n        width: -1,\n        height: -1\n      }\n    });\n    _defineProperty(_this, \"handleKeyDown\", function (event) {\n      if (event.key === 'Escape') {\n        var _this$props$coordinat, _this$props$coordinat2, _this$props$coordinat3, _this$props$coordinat4;\n        _this.setState({\n          dismissed: true,\n          dismissedAtCoordinate: {\n            x: (_this$props$coordinat = (_this$props$coordinat2 = _this.props.coordinate) === null || _this$props$coordinat2 === void 0 ? void 0 : _this$props$coordinat2.x) !== null && _this$props$coordinat !== void 0 ? _this$props$coordinat : 0,\n            y: (_this$props$coordinat3 = (_this$props$coordinat4 = _this.props.coordinate) === null || _this$props$coordinat4 === void 0 ? void 0 : _this$props$coordinat4.y) !== null && _this$props$coordinat3 !== void 0 ? _this$props$coordinat3 : 0\n          }\n        });\n      }\n    });\n    return _this;\n  }\n  _inherits(TooltipBoundingBox, _PureComponent);\n  return _createClass(TooltipBoundingBox, [{\n    key: \"updateBBox\",\n    value: function updateBBox() {\n      if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n        var box = this.wrapperNode.getBoundingClientRect();\n        if (Math.abs(box.width - this.state.lastBoundingBox.width) > EPSILON || Math.abs(box.height - this.state.lastBoundingBox.height) > EPSILON) {\n          this.setState({\n            lastBoundingBox: {\n              width: box.width,\n              height: box.height\n            }\n          });\n        }\n      } else if (this.state.lastBoundingBox.width !== -1 || this.state.lastBoundingBox.height !== -1) {\n        this.setState({\n          lastBoundingBox: {\n            width: -1,\n            height: -1\n          }\n        });\n      }\n    }\n  }, {\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      document.addEventListener('keydown', this.handleKeyDown);\n      this.updateBBox();\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      document.removeEventListener('keydown', this.handleKeyDown);\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      var _this$props$coordinat5, _this$props$coordinat6;\n      if (this.props.active) {\n        this.updateBBox();\n      }\n      if (!this.state.dismissed) {\n        return;\n      }\n      if (((_this$props$coordinat5 = this.props.coordinate) === null || _this$props$coordinat5 === void 0 ? void 0 : _this$props$coordinat5.x) !== this.state.dismissedAtCoordinate.x || ((_this$props$coordinat6 = this.props.coordinate) === null || _this$props$coordinat6 === void 0 ? void 0 : _this$props$coordinat6.y) !== this.state.dismissedAtCoordinate.y) {\n        this.state.dismissed = false;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n      var _this$props = this.props,\n        active = _this$props.active,\n        allowEscapeViewBox = _this$props.allowEscapeViewBox,\n        animationDuration = _this$props.animationDuration,\n        animationEasing = _this$props.animationEasing,\n        children = _this$props.children,\n        coordinate = _this$props.coordinate,\n        hasPayload = _this$props.hasPayload,\n        isAnimationActive = _this$props.isAnimationActive,\n        offset = _this$props.offset,\n        position = _this$props.position,\n        reverseDirection = _this$props.reverseDirection,\n        useTranslate3d = _this$props.useTranslate3d,\n        viewBox = _this$props.viewBox,\n        wrapperStyle = _this$props.wrapperStyle;\n      var _getTooltipTranslate = getTooltipTranslate({\n          allowEscapeViewBox: allowEscapeViewBox,\n          coordinate: coordinate,\n          offsetTopLeft: offset,\n          position: position,\n          reverseDirection: reverseDirection,\n          tooltipBox: this.state.lastBoundingBox,\n          useTranslate3d: useTranslate3d,\n          viewBox: viewBox\n        }),\n        cssClasses = _getTooltipTranslate.cssClasses,\n        cssProperties = _getTooltipTranslate.cssProperties;\n      var outerStyle = _objectSpread(_objectSpread({\n        transition: isAnimationActive && active ? \"transform \".concat(animationDuration, \"ms \").concat(animationEasing) : undefined\n      }, cssProperties), {}, {\n        pointerEvents: 'none',\n        visibility: !this.state.dismissed && active && hasPayload ? 'visible' : 'hidden',\n        position: 'absolute',\n        top: 0,\n        left: 0\n      }, wrapperStyle);\n      return (\n        /*#__PURE__*/\n        // This element allow listening to the `Escape` key.\n        // See https://github.com/recharts/recharts/pull/2925\n        React.createElement(\"div\", {\n          tabIndex: -1,\n          className: cssClasses,\n          style: outerStyle,\n          ref: function ref(node) {\n            _this2.wrapperNode = node;\n          }\n        }, children)\n      );\n    }\n  }]);\n}(PureComponent);","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport { DefaultTooltipContent } from './DefaultTooltipContent';\nimport { TooltipBoundingBox } from './TooltipBoundingBox';\nimport { Global } from '../util/Global';\nimport { getUniqPayload } from '../util/payload/getUniqPayload';\nfunction defaultUniqBy(entry) {\n  return entry.dataKey;\n}\nfunction renderContent(content, props) {\n  if ( /*#__PURE__*/React.isValidElement(content)) {\n    return /*#__PURE__*/React.cloneElement(content, props);\n  }\n  if (typeof content === 'function') {\n    return /*#__PURE__*/React.createElement(content, props);\n  }\n  return /*#__PURE__*/React.createElement(DefaultTooltipContent, props);\n}\nexport var Tooltip = /*#__PURE__*/function (_PureComponent) {\n  function Tooltip() {\n    _classCallCheck(this, Tooltip);\n    return _callSuper(this, Tooltip, arguments);\n  }\n  _inherits(Tooltip, _PureComponent);\n  return _createClass(Tooltip, [{\n    key: \"render\",\n    value: function render() {\n      var _this = this;\n      var _this$props = this.props,\n        active = _this$props.active,\n        allowEscapeViewBox = _this$props.allowEscapeViewBox,\n        animationDuration = _this$props.animationDuration,\n        animationEasing = _this$props.animationEasing,\n        content = _this$props.content,\n        coordinate = _this$props.coordinate,\n        filterNull = _this$props.filterNull,\n        isAnimationActive = _this$props.isAnimationActive,\n        offset = _this$props.offset,\n        payload = _this$props.payload,\n        payloadUniqBy = _this$props.payloadUniqBy,\n        position = _this$props.position,\n        reverseDirection = _this$props.reverseDirection,\n        useTranslate3d = _this$props.useTranslate3d,\n        viewBox = _this$props.viewBox,\n        wrapperStyle = _this$props.wrapperStyle;\n      var finalPayload = payload !== null && payload !== void 0 ? payload : [];\n      if (filterNull && finalPayload.length) {\n        finalPayload = getUniqPayload(payload.filter(function (entry) {\n          return entry.value != null && (entry.hide !== true || _this.props.includeHidden);\n        }), payloadUniqBy, defaultUniqBy);\n      }\n      var hasPayload = finalPayload.length > 0;\n      return /*#__PURE__*/React.createElement(TooltipBoundingBox, {\n        allowEscapeViewBox: allowEscapeViewBox,\n        animationDuration: animationDuration,\n        animationEasing: animationEasing,\n        isAnimationActive: isAnimationActive,\n        active: active,\n        coordinate: coordinate,\n        hasPayload: hasPayload,\n        offset: offset,\n        position: position,\n        reverseDirection: reverseDirection,\n        useTranslate3d: useTranslate3d,\n        viewBox: viewBox,\n        wrapperStyle: wrapperStyle\n      }, renderContent(content, _objectSpread(_objectSpread({}, this.props), {}, {\n        payload: finalPayload\n      })));\n    }\n  }]);\n}(PureComponent);\n_defineProperty(Tooltip, \"displayName\", 'Tooltip');\n_defineProperty(Tooltip, \"defaultProps\", {\n  accessibilityLayer: false,\n  allowEscapeViewBox: {\n    x: false,\n    y: false\n  },\n  animationDuration: 400,\n  animationEasing: 'ease',\n  contentStyle: {},\n  coordinate: {\n    x: 0,\n    y: 0\n  },\n  cursor: true,\n  cursorStyle: {},\n  filterNull: true,\n  isAnimationActive: !Global.isSsr,\n  itemStyle: {},\n  labelStyle: {},\n  offset: 10,\n  reverseDirection: {\n    x: false,\n    y: false\n  },\n  separator: ' : ',\n  trigger: 'hover',\n  useTranslate3d: false,\n  viewBox: {\n    x: 0,\n    y: 0,\n    height: 0,\n    width: 0\n  },\n  wrapperStyle: {}\n});","var _excluded = [\"children\", \"className\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport var Layer = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var children = props.children,\n    className = props.className,\n    others = _objectWithoutProperties(props, _excluded);\n  var layerClass = clsx('recharts-layer', className);\n  return /*#__PURE__*/React.createElement(\"g\", _extends({\n    className: layerClass\n  }, filterProps(others, true), {\n    ref: ref\n  }), children);\n});","var _excluded = [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\", \"title\", \"desc\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nexport function Surface(props) {\n  var children = props.children,\n    width = props.width,\n    height = props.height,\n    viewBox = props.viewBox,\n    className = props.className,\n    style = props.style,\n    title = props.title,\n    desc = props.desc,\n    others = _objectWithoutProperties(props, _excluded);\n  var svgView = viewBox || {\n    width: width,\n    height: height,\n    x: 0,\n    y: 0\n  };\n  var layerClass = clsx('recharts-surface', className);\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({}, filterProps(others, true, 'svg'), {\n    className: layerClass,\n    width: width,\n    height: height,\n    style: style,\n    viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height)\n  }), /*#__PURE__*/React.createElement(\"title\", null, title), /*#__PURE__*/React.createElement(\"desc\", null, desc), children);\n}","import memoize from 'lodash/memoize';\n/**\n * This is memoized because the viewBox is unlikely to change often\n * - but because it is computed from offset, any change to it would re-render all children.\n *\n * And because we have many readers of the viewBox, and update it only rarely,\n * then let's optimize with memoization.\n */\nexport var calculateViewBox = memoize(function (offset) {\n  return {\n    x: offset.left,\n    y: offset.top,\n    width: offset.width,\n    height: offset.height\n  };\n}, function (offset) {\n  return ['l', offset.left, 't', offset.top, 'w', offset.width, 'h', offset.height].join('');\n});","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport React, { createContext, useContext } from 'react';\nimport invariant from 'tiny-invariant';\nimport find from 'lodash/find';\nimport every from 'lodash/every';\nimport { calculateViewBox } from '../util/calculateViewBox';\nimport { getAnyElementOfObject } from '../util/DataUtils';\nexport var XAxisContext = /*#__PURE__*/createContext(undefined);\nexport var YAxisContext = /*#__PURE__*/createContext(undefined);\nexport var ViewBoxContext = /*#__PURE__*/createContext(undefined);\nexport var OffsetContext = /*#__PURE__*/createContext({});\nexport var ClipPathIdContext = /*#__PURE__*/createContext(undefined);\nexport var ChartHeightContext = /*#__PURE__*/createContext(0);\nexport var ChartWidthContext = /*#__PURE__*/createContext(0);\n\n/**\n * Will add all the properties required to render all individual Recharts components into a React Context.\n *\n * If you want to read these properties, see the collection of hooks exported from this file.\n *\n * @param {object} props CategoricalChartState, plus children\n * @returns {ReactElement} React Context Provider\n */\nexport var ChartLayoutContextProvider = function ChartLayoutContextProvider(props) {\n  var _props$state = props.state,\n    xAxisMap = _props$state.xAxisMap,\n    yAxisMap = _props$state.yAxisMap,\n    offset = _props$state.offset,\n    clipPathId = props.clipPathId,\n    children = props.children,\n    width = props.width,\n    height = props.height;\n\n  /**\n   * Perhaps we should compute this property when reading? Let's see what is more often used\n   */\n  var viewBox = calculateViewBox(offset);\n\n  /*\n   * This pretends to be a single context but actually is split into multiple smaller ones.\n   * Why?\n   * Because one React Context only allows to set one value.\n   * But we need to set multiple values.\n   * If we do that with one context, then we force re-render on components that might not even be interested\n   * in the part of the state that has changed.\n   *\n   * By splitting into smaller contexts, we allow each components to be optimized and only re-render when its dependencies change.\n   *\n   * To actually achieve the optimal re-render, it is necessary to use React.memo().\n   * See the test file for details.\n   */\n  return /*#__PURE__*/React.createElement(XAxisContext.Provider, {\n    value: xAxisMap\n  }, /*#__PURE__*/React.createElement(YAxisContext.Provider, {\n    value: yAxisMap\n  }, /*#__PURE__*/React.createElement(OffsetContext.Provider, {\n    value: offset\n  }, /*#__PURE__*/React.createElement(ViewBoxContext.Provider, {\n    value: viewBox\n  }, /*#__PURE__*/React.createElement(ClipPathIdContext.Provider, {\n    value: clipPathId\n  }, /*#__PURE__*/React.createElement(ChartHeightContext.Provider, {\n    value: height\n  }, /*#__PURE__*/React.createElement(ChartWidthContext.Provider, {\n    value: width\n  }, children)))))));\n};\nexport var useClipPathId = function useClipPathId() {\n  return useContext(ClipPathIdContext);\n};\nfunction getKeysForDebug(object) {\n  var keys = Object.keys(object);\n  if (keys.length === 0) {\n    return 'There are no available ids.';\n  }\n  return \"Available ids are: \".concat(keys, \".\");\n}\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param xAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <XAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useXAxisOrThrow = function useXAxisOrThrow(xAxisId) {\n  var xAxisMap = useContext(XAxisContext);\n  !(xAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n  var xAxis = xAxisMap[xAxisId];\n  !(xAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find xAxis by id \\\"\".concat(xAxisId, \"\\\" [\").concat(_typeof(xAxisId), \"]. \").concat(getKeysForDebug(xAxisMap))) : invariant(false) : void 0;\n  return xAxis;\n};\n\n/**\n * This will find an arbitrary first XAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific XAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns X axisOptions, or undefined - if there are no X axes\n */\nexport var useArbitraryXAxis = function useArbitraryXAxis() {\n  var xAxisMap = useContext(XAxisContext);\n  return getAnyElementOfObject(xAxisMap);\n};\n\n/**\n * This will find an arbitrary first YAxis. If there's exactly one it always returns that one\n * - but if there are multiple then it can return any of those.\n *\n * If you want specific YAxis out of multiple then prefer using useXAxisOrThrow\n *\n * @returns Y axisOptions, or undefined - if there are no Y axes\n */\nexport var useArbitraryYAxis = function useArbitraryYAxis() {\n  var yAxisMap = useContext(YAxisContext);\n  return getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This hooks will:\n * 1st attempt to find an YAxis that has all elements in its domain finite\n * If no such axis exists, it will return an arbitrary YAxis\n * if there are no Y axes then it returns undefined\n *\n * @returns Either Y axisOptions, or undefined if there are no Y axes\n */\nexport var useYAxisWithFiniteDomainOrRandom = function useYAxisWithFiniteDomainOrRandom() {\n  var yAxisMap = useContext(YAxisContext);\n  var yAxisWithFiniteDomain = find(yAxisMap, function (axis) {\n    return every(axis.domain, Number.isFinite);\n  });\n  return yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n};\n\n/**\n * This either finds and returns Axis by the specified ID, or throws an exception if an axis with this ID does not exist.\n *\n * @param yAxisId identifier of the axis - it's either autogenerated ('0'), or passed via `id` prop as <YAxis id='foo' />\n * @returns axis configuration object\n * @throws Error if no axis with this ID exists\n */\nexport var useYAxisOrThrow = function useYAxisOrThrow(yAxisId) {\n  var yAxisMap = useContext(YAxisContext);\n  !(yAxisMap != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find Recharts context; are you sure this is rendered inside a Recharts wrapper component?') : invariant(false) : void 0;\n  var yAxis = yAxisMap[yAxisId];\n  !(yAxis != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not find yAxis by id \\\"\".concat(yAxisId, \"\\\" [\").concat(_typeof(yAxisId), \"]. \").concat(getKeysForDebug(yAxisMap))) : invariant(false) : void 0;\n  return yAxis;\n};\nexport var useViewBox = function useViewBox() {\n  var viewBox = useContext(ViewBoxContext);\n  return viewBox;\n};\nexport var useOffset = function useOffset() {\n  return useContext(OffsetContext);\n};\nexport var useChartWidth = function useChartWidth() {\n  return useContext(ChartWidthContext);\n};\nexport var useChartHeight = function useChartHeight() {\n  return useContext(ChartHeightContext);\n};","export default function() {}\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; // falls through\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 pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(context);\n}\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; // falls through\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","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(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","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveBumpX, curveBumpY, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'victory-vendor/d3-shape';\nimport upperFirst from 'lodash/upperFirst';\nimport isFunction from 'lodash/isFunction';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n  curveBasisClosed: curveBasisClosed,\n  curveBasisOpen: curveBasisOpen,\n  curveBasis: curveBasis,\n  curveBumpX: curveBumpX,\n  curveBumpY: curveBumpY,\n  curveLinearClosed: curveLinearClosed,\n  curveLinear: curveLinear,\n  curveMonotoneX: curveMonotoneX,\n  curveMonotoneY: curveMonotoneY,\n  curveNatural: curveNatural,\n  curveStep: curveStep,\n  curveStepAfter: curveStepAfter,\n  curveStepBefore: curveStepBefore\n};\nvar defined = function defined(p) {\n  return p.x === +p.x && p.y === +p.y;\n};\nvar getX = function getX(p) {\n  return p.x;\n};\nvar getY = function getY(p) {\n  return p.y;\n};\nvar getCurveFactory = function getCurveFactory(type, layout) {\n  if (isFunction(type)) {\n    return type;\n  }\n  var name = \"curve\".concat(upperFirst(type));\n  if ((name === 'curveMonotone' || name === 'curveBump') && layout) {\n    return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n  }\n  return CURVE_FACTORIES[name] || curveLinear;\n};\n/**\n * Calculate the path of curve. Returns null if points is an empty array.\n * @return path or null\n */\nexport var getPath = function getPath(_ref) {\n  var _ref$type = _ref.type,\n    type = _ref$type === void 0 ? 'linear' : _ref$type,\n    _ref$points = _ref.points,\n    points = _ref$points === void 0 ? [] : _ref$points,\n    baseLine = _ref.baseLine,\n    layout = _ref.layout,\n    _ref$connectNulls = _ref.connectNulls,\n    connectNulls = _ref$connectNulls === void 0 ? false : _ref$connectNulls;\n  var curveFactory = getCurveFactory(type, layout);\n  var formatPoints = connectNulls ? points.filter(function (entry) {\n    return defined(entry);\n  }) : points;\n  var lineFunction;\n  if (Array.isArray(baseLine)) {\n    var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n      return defined(base);\n    }) : baseLine;\n    var areaPoints = formatPoints.map(function (entry, index) {\n      return _objectSpread(_objectSpread({}, entry), {}, {\n        base: formatBaseLine[index]\n      });\n    });\n    if (layout === 'vertical') {\n      lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n        return d.base.x;\n      });\n    } else {\n      lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n        return d.base.y;\n      });\n    }\n    lineFunction.defined(defined).curve(curveFactory);\n    return lineFunction(areaPoints);\n  }\n  if (layout === 'vertical' && isNumber(baseLine)) {\n    lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n  } else if (isNumber(baseLine)) {\n    lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n  } else {\n    lineFunction = shapeLine().x(getX).y(getY);\n  }\n  lineFunction.defined(defined).curve(curveFactory);\n  return lineFunction(formatPoints);\n};\nexport var Curve = function Curve(props) {\n  var className = props.className,\n    points = props.points,\n    path = props.path,\n    pathRef = props.pathRef;\n  if ((!points || !points.length) && !path) {\n    return null;\n  }\n  var realPath = points && points.length ? getPath(props) : path;\n  return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n    className: clsx('recharts-curve', className),\n    d: realPath,\n    ref: pathRef\n  }));\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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/**\n * @fileOverview Dot\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { adaptEventHandlers } from '../util/types';\nimport { filterProps } from '../util/ReactUtils';\nexport var Dot = function Dot(props) {\n  var cx = props.cx,\n    cy = props.cy,\n    r = props.r,\n    className = props.className;\n  var layerClass = clsx('recharts-dot', className);\n  if (cx === +cx && cy === +cy && r === +r) {\n    return /*#__PURE__*/React.createElement(\"circle\", _extends({}, filterProps(props, false), adaptEventHandlers(props), {\n      className: layerClass,\n      cx: cx,\n      cy: cy,\n      r: r\n    }));\n  }\n  return null;\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getRectanglePath = function getRectanglePath(x, y, width, height, radius) {\n  var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n  var ySign = height >= 0 ? 1 : -1;\n  var xSign = width >= 0 ? 1 : -1;\n  var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n  var path;\n  if (maxRadius > 0 && radius instanceof Array) {\n    var newRadius = [0, 0, 0, 0];\n    for (var i = 0, len = 4; i < len; i++) {\n      newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n    }\n    path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n    if (newRadius[0] > 0) {\n      path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n    }\n    path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n    if (newRadius[1] > 0) {\n      path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n        \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n    }\n    path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n    if (newRadius[2] > 0) {\n      path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n        \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n    }\n    path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n    if (newRadius[3] > 0) {\n      path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n        \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n    }\n    path += 'Z';\n  } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n    var _newRadius = Math.min(maxRadius, radius);\n    path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n            L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n            L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n            L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n            A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n  } else {\n    path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n  }\n  return path;\n};\nexport var isInRectangle = function isInRectangle(point, rect) {\n  if (!point || !rect) {\n    return false;\n  }\n  var px = point.x,\n    py = point.y;\n  var x = rect.x,\n    y = rect.y,\n    width = rect.width,\n    height = rect.height;\n  if (Math.abs(width) > 0 && Math.abs(height) > 0) {\n    var minX = Math.min(x, x + width);\n    var maxX = Math.max(x, x + width);\n    var minY = Math.min(y, y + height);\n    var maxY = Math.max(y, y + height);\n    return px >= minX && px <= maxX && py >= minY && py <= maxY;\n  }\n  return false;\n};\nvar defaultProps = {\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n  // The radius of border\n  // The radius of four corners when radius is a number\n  // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n  radius: 0,\n  isAnimationActive: false,\n  isUpdateAnimationActive: false,\n  animationBegin: 0,\n  animationDuration: 1500,\n  animationEasing: 'ease'\n};\nexport var Rectangle = function Rectangle(rectangleProps) {\n  var props = _objectSpread(_objectSpread({}, defaultProps), rectangleProps);\n  var pathRef = useRef();\n  var _useState = useState(-1),\n    _useState2 = _slicedToArray(_useState, 2),\n    totalLength = _useState2[0],\n    setTotalLength = _useState2[1];\n  useEffect(function () {\n    if (pathRef.current && pathRef.current.getTotalLength) {\n      try {\n        var pathTotalLength = pathRef.current.getTotalLength();\n        if (pathTotalLength) {\n          setTotalLength(pathTotalLength);\n        }\n      } catch (err) {\n        // calculate total length error\n      }\n    }\n  }, []);\n  var x = props.x,\n    y = props.y,\n    width = props.width,\n    height = props.height,\n    radius = props.radius,\n    className = props.className;\n  var animationEasing = props.animationEasing,\n    animationDuration = props.animationDuration,\n    animationBegin = props.animationBegin,\n    isAnimationActive = props.isAnimationActive,\n    isUpdateAnimationActive = props.isUpdateAnimationActive;\n  if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n    return null;\n  }\n  var layerClass = clsx('recharts-rectangle', className);\n  if (!isUpdateAnimationActive) {\n    return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n      className: layerClass,\n      d: getRectanglePath(x, y, width, height, radius)\n    }));\n  }\n  return /*#__PURE__*/React.createElement(Animate, {\n    canBegin: totalLength > 0,\n    from: {\n      width: width,\n      height: height,\n      x: x,\n      y: y\n    },\n    to: {\n      width: width,\n      height: height,\n      x: x,\n      y: y\n    },\n    duration: animationDuration,\n    animationEasing: animationEasing,\n    isActive: isUpdateAnimationActive\n  }, function (_ref) {\n    var currWidth = _ref.width,\n      currHeight = _ref.height,\n      currX = _ref.x,\n      currY = _ref.y;\n    return /*#__PURE__*/React.createElement(Animate, {\n      canBegin: totalLength > 0,\n      from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n      to: \"\".concat(totalLength, \"px 0px\"),\n      attributeName: \"strokeDasharray\",\n      begin: animationBegin,\n      duration: animationDuration,\n      isActive: isAnimationActive,\n      easing: animationEasing\n    }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n      className: layerClass,\n      d: getRectanglePath(currX, currY, currWidth, currHeight, radius),\n      ref: pathRef\n    })));\n  });\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Sector\n */\nimport React from 'react';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n  var sign = mathSign(endAngle - startAngle);\n  var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n  return sign * deltaAngle;\n};\nvar getTangentCircle = function getTangentCircle(_ref) {\n  var cx = _ref.cx,\n    cy = _ref.cy,\n    radius = _ref.radius,\n    angle = _ref.angle,\n    sign = _ref.sign,\n    isExternal = _ref.isExternal,\n    cornerRadius = _ref.cornerRadius,\n    cornerIsExternal = _ref.cornerIsExternal;\n  var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n  var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n  var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n  var center = polarToCartesian(cx, cy, centerRadius, centerAngle);\n  // The coordinate of point which is tangent to the circle\n  var circleTangency = polarToCartesian(cx, cy, radius, centerAngle);\n  // The coordinate of point which is tangent to the radius line\n  var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n  var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n  return {\n    center: center,\n    circleTangency: circleTangency,\n    lineTangency: lineTangency,\n    theta: theta\n  };\n};\nvar getSectorPath = function getSectorPath(_ref2) {\n  var cx = _ref2.cx,\n    cy = _ref2.cy,\n    innerRadius = _ref2.innerRadius,\n    outerRadius = _ref2.outerRadius,\n    startAngle = _ref2.startAngle,\n    endAngle = _ref2.endAngle;\n  var angle = getDeltaAngle(startAngle, endAngle);\n\n  // When the angle of sector equals to 360, star point and end point coincide\n  var tempEndAngle = startAngle + angle;\n  var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n  var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n  var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n    A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n    \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n    \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n  \");\n  if (innerRadius > 0) {\n    var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n    var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n    path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n            A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n            \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n            \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n  } else {\n    path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n  }\n  return path;\n};\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n  var cx = _ref3.cx,\n    cy = _ref3.cy,\n    innerRadius = _ref3.innerRadius,\n    outerRadius = _ref3.outerRadius,\n    cornerRadius = _ref3.cornerRadius,\n    forceCornerRadius = _ref3.forceCornerRadius,\n    cornerIsExternal = _ref3.cornerIsExternal,\n    startAngle = _ref3.startAngle,\n    endAngle = _ref3.endAngle;\n  var sign = mathSign(endAngle - startAngle);\n  var _getTangentCircle = getTangentCircle({\n      cx: cx,\n      cy: cy,\n      radius: outerRadius,\n      angle: startAngle,\n      sign: sign,\n      cornerRadius: cornerRadius,\n      cornerIsExternal: cornerIsExternal\n    }),\n    soct = _getTangentCircle.circleTangency,\n    solt = _getTangentCircle.lineTangency,\n    sot = _getTangentCircle.theta;\n  var _getTangentCircle2 = getTangentCircle({\n      cx: cx,\n      cy: cy,\n      radius: outerRadius,\n      angle: endAngle,\n      sign: -sign,\n      cornerRadius: cornerRadius,\n      cornerIsExternal: cornerIsExternal\n    }),\n    eoct = _getTangentCircle2.circleTangency,\n    eolt = _getTangentCircle2.lineTangency,\n    eot = _getTangentCircle2.theta;\n  var outerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sot - eot;\n  if (outerArcAngle < 0) {\n    if (forceCornerRadius) {\n      return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n        a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n        a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n      \");\n    }\n    return getSectorPath({\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n  }\n  var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n    A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n    A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n    A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n  \");\n  if (innerRadius > 0) {\n    var _getTangentCircle3 = getTangentCircle({\n        cx: cx,\n        cy: cy,\n        radius: innerRadius,\n        angle: startAngle,\n        sign: sign,\n        isExternal: true,\n        cornerRadius: cornerRadius,\n        cornerIsExternal: cornerIsExternal\n      }),\n      sict = _getTangentCircle3.circleTangency,\n      silt = _getTangentCircle3.lineTangency,\n      sit = _getTangentCircle3.theta;\n    var _getTangentCircle4 = getTangentCircle({\n        cx: cx,\n        cy: cy,\n        radius: innerRadius,\n        angle: endAngle,\n        sign: -sign,\n        isExternal: true,\n        cornerRadius: cornerRadius,\n        cornerIsExternal: cornerIsExternal\n      }),\n      eict = _getTangentCircle4.circleTangency,\n      eilt = _getTangentCircle4.lineTangency,\n      eit = _getTangentCircle4.theta;\n    var innerArcAngle = cornerIsExternal ? Math.abs(startAngle - endAngle) : Math.abs(startAngle - endAngle) - sit - eit;\n    if (innerArcAngle < 0 && cornerRadius === 0) {\n      return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n    }\n    path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n      A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n      A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n      A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n  } else {\n    path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n  }\n  return path;\n};\nvar defaultProps = {\n  cx: 0,\n  cy: 0,\n  innerRadius: 0,\n  outerRadius: 0,\n  startAngle: 0,\n  endAngle: 0,\n  cornerRadius: 0,\n  forceCornerRadius: false,\n  cornerIsExternal: false\n};\nexport var Sector = function Sector(sectorProps) {\n  var props = _objectSpread(_objectSpread({}, defaultProps), sectorProps);\n  var cx = props.cx,\n    cy = props.cy,\n    innerRadius = props.innerRadius,\n    outerRadius = props.outerRadius,\n    cornerRadius = props.cornerRadius,\n    forceCornerRadius = props.forceCornerRadius,\n    cornerIsExternal = props.cornerIsExternal,\n    startAngle = props.startAngle,\n    endAngle = props.endAngle,\n    className = props.className;\n  if (outerRadius < innerRadius || startAngle === endAngle) {\n    return null;\n  }\n  var layerClass = clsx('recharts-sector', className);\n  var deltaRadius = outerRadius - innerRadius;\n  var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n  var path;\n  if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n    path = getSectorWithCorner({\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      cornerRadius: Math.min(cr, deltaRadius / 2),\n      forceCornerRadius: forceCornerRadius,\n      cornerIsExternal: cornerIsExternal,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n  } else {\n    path = getSectorPath({\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n  }\n  return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(props, true), {\n    className: layerClass,\n    d: path,\n    role: \"img\"\n  }));\n};","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = 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","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const 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 {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i < 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = 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","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -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","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, 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 {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _excluded = [\"type\", \"size\", \"sizeType\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\n/**\n * @fileOverview Curve\n */\nimport React from 'react';\nimport upperFirst from 'lodash/upperFirst';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'victory-vendor/d3-shape';\nimport clsx from 'clsx';\nimport { filterProps } from '../util/ReactUtils';\nvar symbolFactories = {\n  symbolCircle: symbolCircle,\n  symbolCross: symbolCross,\n  symbolDiamond: symbolDiamond,\n  symbolSquare: symbolSquare,\n  symbolStar: symbolStar,\n  symbolTriangle: symbolTriangle,\n  symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\nvar getSymbolFactory = function getSymbolFactory(type) {\n  var name = \"symbol\".concat(upperFirst(type));\n  return symbolFactories[name] || symbolCircle;\n};\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n  if (sizeType === 'area') {\n    return size;\n  }\n  switch (type) {\n    case 'cross':\n      return 5 * size * size / 9;\n    case 'diamond':\n      return 0.5 * size * size / Math.sqrt(3);\n    case 'square':\n      return size * size;\n    case 'star':\n      {\n        var angle = 18 * RADIAN;\n        return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n      }\n    case 'triangle':\n      return Math.sqrt(3) * size * size / 4;\n    case 'wye':\n      return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n    default:\n      return Math.PI * size * size / 4;\n  }\n};\nvar registerSymbol = function registerSymbol(key, factory) {\n  symbolFactories[\"symbol\".concat(upperFirst(key))] = factory;\n};\nexport var Symbols = function Symbols(_ref) {\n  var _ref$type = _ref.type,\n    type = _ref$type === void 0 ? 'circle' : _ref$type,\n    _ref$size = _ref.size,\n    size = _ref$size === void 0 ? 64 : _ref$size,\n    _ref$sizeType = _ref.sizeType,\n    sizeType = _ref$sizeType === void 0 ? 'area' : _ref$sizeType,\n    rest = _objectWithoutProperties(_ref, _excluded);\n  var props = _objectSpread(_objectSpread({}, rest), {}, {\n    type: type,\n    size: size,\n    sizeType: sizeType\n  });\n\n  /**\n   * Calculate the path of curve\n   * @return {String} path\n   */\n  var getPath = function getPath() {\n    var symbolFactory = getSymbolFactory(type);\n    var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n    return symbol();\n  };\n  var className = props.className,\n    cx = props.cx,\n    cy = props.cy;\n  var filteredProps = filterProps(props, true);\n  if (cx === +cx && cy === +cy && size === +size) {\n    return /*#__PURE__*/React.createElement(\"path\", _extends({}, filteredProps, {\n      className: clsx('recharts-symbols', className),\n      transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n      d: getPath()\n    }));\n  }\n  return null;\n};\nSymbols.registerSymbol = registerSymbol;","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let 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","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @fileOverview Rectangle\n */\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport Animate from 'react-smooth';\nimport { filterProps } from '../util/ReactUtils';\nvar getTrapezoidPath = function getTrapezoidPath(x, y, upperWidth, lowerWidth, height) {\n  var widthGap = upperWidth - lowerWidth;\n  var path;\n  path = \"M \".concat(x, \",\").concat(y);\n  path += \"L \".concat(x + upperWidth, \",\").concat(y);\n  path += \"L \".concat(x + upperWidth - widthGap / 2, \",\").concat(y + height);\n  path += \"L \".concat(x + upperWidth - widthGap / 2 - lowerWidth, \",\").concat(y + height);\n  path += \"L \".concat(x, \",\").concat(y, \" Z\");\n  return path;\n};\nvar defaultProps = {\n  x: 0,\n  y: 0,\n  upperWidth: 0,\n  lowerWidth: 0,\n  height: 0,\n  isUpdateAnimationActive: false,\n  animationBegin: 0,\n  animationDuration: 1500,\n  animationEasing: 'ease'\n};\nexport var Trapezoid = function Trapezoid(props) {\n  var trapezoidProps = _objectSpread(_objectSpread({}, defaultProps), props);\n  var pathRef = useRef();\n  var _useState = useState(-1),\n    _useState2 = _slicedToArray(_useState, 2),\n    totalLength = _useState2[0],\n    setTotalLength = _useState2[1];\n  useEffect(function () {\n    if (pathRef.current && pathRef.current.getTotalLength) {\n      try {\n        var pathTotalLength = pathRef.current.getTotalLength();\n        if (pathTotalLength) {\n          setTotalLength(pathTotalLength);\n        }\n      } catch (err) {\n        // calculate total length error\n      }\n    }\n  }, []);\n  var x = trapezoidProps.x,\n    y = trapezoidProps.y,\n    upperWidth = trapezoidProps.upperWidth,\n    lowerWidth = trapezoidProps.lowerWidth,\n    height = trapezoidProps.height,\n    className = trapezoidProps.className;\n  var animationEasing = trapezoidProps.animationEasing,\n    animationDuration = trapezoidProps.animationDuration,\n    animationBegin = trapezoidProps.animationBegin,\n    isUpdateAnimationActive = trapezoidProps.isUpdateAnimationActive;\n  if (x !== +x || y !== +y || upperWidth !== +upperWidth || lowerWidth !== +lowerWidth || height !== +height || upperWidth === 0 && lowerWidth === 0 || height === 0) {\n    return null;\n  }\n  var layerClass = clsx('recharts-trapezoid', className);\n  if (!isUpdateAnimationActive) {\n    return /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n      className: layerClass,\n      d: getTrapezoidPath(x, y, upperWidth, lowerWidth, height)\n    })));\n  }\n  return /*#__PURE__*/React.createElement(Animate, {\n    canBegin: totalLength > 0,\n    from: {\n      upperWidth: 0,\n      lowerWidth: 0,\n      height: height,\n      x: x,\n      y: y\n    },\n    to: {\n      upperWidth: upperWidth,\n      lowerWidth: lowerWidth,\n      height: height,\n      x: x,\n      y: y\n    },\n    duration: animationDuration,\n    animationEasing: animationEasing,\n    isActive: isUpdateAnimationActive\n  }, function (_ref) {\n    var currUpperWidth = _ref.upperWidth,\n      currLowerWidth = _ref.lowerWidth,\n      currHeight = _ref.height,\n      currX = _ref.x,\n      currY = _ref.y;\n    return /*#__PURE__*/React.createElement(Animate, {\n      canBegin: totalLength > 0,\n      from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n      to: \"\".concat(totalLength, \"px 0px\"),\n      attributeName: \"strokeDasharray\",\n      begin: animationBegin,\n      duration: animationDuration,\n      easing: animationEasing\n    }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(trapezoidProps, true), {\n      className: layerClass,\n      d: getTrapezoidPath(currX, currY, currUpperWidth, currLowerWidth, currHeight),\n      ref: pathRef\n    })));\n  });\n};","var _excluded = [\"option\", \"shapeType\", \"propTransformer\", \"activeClassName\", \"isActive\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React, { isValidElement, cloneElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport isPlainObject from 'lodash/isPlainObject';\nimport isBoolean from 'lodash/isBoolean';\nimport isEqual from 'lodash/isEqual';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Trapezoid } from '../shape/Trapezoid';\nimport { Sector } from '../shape/Sector';\nimport { Layer } from '../container/Layer';\nimport { Symbols } from '../shape/Symbols';\n\n/**\n * This is an abstraction for rendering a user defined prop for a customized shape in several forms.\n *\n * <Shape /> is the root and will handle taking in:\n *  - an object of svg properties\n *  - a boolean\n *  - a render prop(inline function that returns jsx)\n *  - a react element\n *\n * <ShapeSelector /> is a subcomponent of <Shape /> and used to match a component\n * to the value of props.shapeType that is passed to the root.\n *\n */\n\nfunction defaultPropTransformer(option, props) {\n  return _objectSpread(_objectSpread({}, props), option);\n}\nfunction isSymbolsProps(shapeType, _elementProps) {\n  return shapeType === 'symbols';\n}\nfunction ShapeSelector(_ref) {\n  var shapeType = _ref.shapeType,\n    elementProps = _ref.elementProps;\n  switch (shapeType) {\n    case 'rectangle':\n      return /*#__PURE__*/React.createElement(Rectangle, elementProps);\n    case 'trapezoid':\n      return /*#__PURE__*/React.createElement(Trapezoid, elementProps);\n    case 'sector':\n      return /*#__PURE__*/React.createElement(Sector, elementProps);\n    case 'symbols':\n      if (isSymbolsProps(shapeType, elementProps)) {\n        return /*#__PURE__*/React.createElement(Symbols, elementProps);\n      }\n      break;\n    default:\n      return null;\n  }\n}\nexport function getPropsFromShapeOption(option) {\n  if ( /*#__PURE__*/isValidElement(option)) {\n    return option.props;\n  }\n  return option;\n}\nexport function Shape(_ref2) {\n  var option = _ref2.option,\n    shapeType = _ref2.shapeType,\n    _ref2$propTransformer = _ref2.propTransformer,\n    propTransformer = _ref2$propTransformer === void 0 ? defaultPropTransformer : _ref2$propTransformer,\n    _ref2$activeClassName = _ref2.activeClassName,\n    activeClassName = _ref2$activeClassName === void 0 ? 'recharts-active-shape' : _ref2$activeClassName,\n    isActive = _ref2.isActive,\n    props = _objectWithoutProperties(_ref2, _excluded);\n  var shape;\n  if ( /*#__PURE__*/isValidElement(option)) {\n    shape = /*#__PURE__*/cloneElement(option, _objectSpread(_objectSpread({}, props), getPropsFromShapeOption(option)));\n  } else if (isFunction(option)) {\n    shape = option(props);\n  } else if (isPlainObject(option) && !isBoolean(option)) {\n    var nextProps = propTransformer(option, props);\n    shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n      shapeType: shapeType,\n      elementProps: nextProps\n    });\n  } else {\n    var elementProps = props;\n    shape = /*#__PURE__*/React.createElement(ShapeSelector, {\n      shapeType: shapeType,\n      elementProps: elementProps\n    });\n  }\n  if (isActive) {\n    return /*#__PURE__*/React.createElement(Layer, {\n      className: activeClassName\n    }, shape);\n  }\n  return shape;\n}\n\n/**\n * This is an abstraction to handle identifying the active index from a tooltip mouse interaction\n */\n\nexport function isFunnel(graphicalItem, _item) {\n  return _item != null && 'trapezoids' in graphicalItem.props;\n}\nexport function isPie(graphicalItem, _item) {\n  return _item != null && 'sectors' in graphicalItem.props;\n}\nexport function isScatter(graphicalItem, _item) {\n  return _item != null && 'points' in graphicalItem.props;\n}\nexport function compareFunnel(shapeData, activeTooltipItem) {\n  var _activeTooltipItem$la, _activeTooltipItem$la2;\n  var xMatches = shapeData.x === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la === void 0 ? void 0 : _activeTooltipItem$la.x) || shapeData.x === activeTooltipItem.x;\n  var yMatches = shapeData.y === (activeTooltipItem === null || activeTooltipItem === void 0 || (_activeTooltipItem$la2 = activeTooltipItem.labelViewBox) === null || _activeTooltipItem$la2 === void 0 ? void 0 : _activeTooltipItem$la2.y) || shapeData.y === activeTooltipItem.y;\n  return xMatches && yMatches;\n}\nexport function comparePie(shapeData, activeTooltipItem) {\n  var startAngleMatches = shapeData.endAngle === activeTooltipItem.endAngle;\n  var endAngleMatches = shapeData.startAngle === activeTooltipItem.startAngle;\n  return startAngleMatches && endAngleMatches;\n}\nexport function compareScatter(shapeData, activeTooltipItem) {\n  var xMatches = shapeData.x === activeTooltipItem.x;\n  var yMatches = shapeData.y === activeTooltipItem.y;\n  var zMatches = shapeData.z === activeTooltipItem.z;\n  return xMatches && yMatches && zMatches;\n}\nfunction getComparisonFn(graphicalItem, activeItem) {\n  var comparison;\n  if (isFunnel(graphicalItem, activeItem)) {\n    comparison = compareFunnel;\n  } else if (isPie(graphicalItem, activeItem)) {\n    comparison = comparePie;\n  } else if (isScatter(graphicalItem, activeItem)) {\n    comparison = compareScatter;\n  }\n  return comparison;\n}\nfunction getShapeDataKey(graphicalItem, activeItem) {\n  var shapeKey;\n  if (isFunnel(graphicalItem, activeItem)) {\n    shapeKey = 'trapezoids';\n  } else if (isPie(graphicalItem, activeItem)) {\n    shapeKey = 'sectors';\n  } else if (isScatter(graphicalItem, activeItem)) {\n    shapeKey = 'points';\n  }\n  return shapeKey;\n}\nfunction getActiveShapeTooltipPayload(graphicalItem, activeItem) {\n  if (isFunnel(graphicalItem, activeItem)) {\n    var _activeItem$tooltipPa;\n    return (_activeItem$tooltipPa = activeItem.tooltipPayload) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa[0]) === null || _activeItem$tooltipPa === void 0 || (_activeItem$tooltipPa = _activeItem$tooltipPa.payload) === null || _activeItem$tooltipPa === void 0 ? void 0 : _activeItem$tooltipPa.payload;\n  }\n  if (isPie(graphicalItem, activeItem)) {\n    var _activeItem$tooltipPa2;\n    return (_activeItem$tooltipPa2 = activeItem.tooltipPayload) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2[0]) === null || _activeItem$tooltipPa2 === void 0 || (_activeItem$tooltipPa2 = _activeItem$tooltipPa2.payload) === null || _activeItem$tooltipPa2 === void 0 ? void 0 : _activeItem$tooltipPa2.payload;\n  }\n  if (isScatter(graphicalItem, activeItem)) {\n    return activeItem.payload;\n  }\n  return {};\n}\n/**\n *\n * @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip\n * @returns {number}\n *\n * To handle possible duplicates in the data set,\n * match both the data value of the active item to a data value on a graph item,\n * and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.\n * This assumes equal lengths of shape objects to data items.\n */\nexport function getActiveShapeIndexForTooltip(_ref3) {\n  var activeTooltipItem = _ref3.activeTooltipItem,\n    graphicalItem = _ref3.graphicalItem,\n    itemData = _ref3.itemData;\n  var shapeKey = getShapeDataKey(graphicalItem, activeTooltipItem);\n  var tooltipPayload = getActiveShapeTooltipPayload(graphicalItem, activeTooltipItem);\n  var activeItemMatches = itemData.filter(function (datum, dataIndex) {\n    var valuesMatch = isEqual(tooltipPayload, datum);\n    var mouseCoordinateMatches = graphicalItem.props[shapeKey].filter(function (shapeData) {\n      var comparison = getComparisonFn(graphicalItem, activeTooltipItem);\n      return comparison(shapeData, activeTooltipItem);\n    });\n\n    // get the last index in case of multiple matches\n    var indexOfMouseCoordinates = graphicalItem.props[shapeKey].indexOf(mouseCoordinateMatches[mouseCoordinateMatches.length - 1]);\n    var coordinatesMatch = dataIndex === indexOfMouseCoordinates;\n    return valuesMatch && coordinatesMatch;\n  });\n\n  // get the last index in case of multiple matches\n  var activeIndex = itemData.indexOf(activeItemMatches[activeItemMatches.length - 1]);\n  return activeIndex;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport mapValues from 'lodash/mapValues';\nimport every from 'lodash/every';\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nimport { getPercentValue } from './DataUtils';\nimport { Bar } from '../cartesian/Bar';\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param  {Object} props     Latest props\n * @param  {Object} axisMap   The configuration of axes\n * @param  {Object} offset    The offset of main part in the svg element\n * @param  {String} axisType  The type of axes, x-axis or y-axis\n * @param  {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n  var width = props.width,\n    height = props.height,\n    layout = props.layout,\n    children = props.children;\n  var ids = Object.keys(axisMap);\n  var steps = {\n    left: offset.left,\n    leftMirror: offset.left,\n    right: width - offset.right,\n    rightMirror: width - offset.right,\n    top: offset.top,\n    topMirror: offset.top,\n    bottom: height - offset.bottom,\n    bottomMirror: height - offset.bottom\n  };\n  var hasBar = !!findChildByType(children, Bar);\n  return ids.reduce(function (result, id) {\n    var axis = axisMap[id];\n    var orientation = axis.orientation,\n      domain = axis.domain,\n      _axis$padding = axis.padding,\n      padding = _axis$padding === void 0 ? {} : _axis$padding,\n      mirror = axis.mirror,\n      reversed = axis.reversed;\n    var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n    var calculatedPadding, range, x, y, needSpace;\n    if (axis.type === 'number' && (axis.padding === 'gap' || axis.padding === 'no-gap')) {\n      var diff = domain[1] - domain[0];\n      var smallestDistanceBetweenValues = Infinity;\n      var sortedValues = axis.categoricalDomain.sort();\n      sortedValues.forEach(function (value, index) {\n        if (index > 0) {\n          smallestDistanceBetweenValues = Math.min((value || 0) - (sortedValues[index - 1] || 0), smallestDistanceBetweenValues);\n        }\n      });\n      if (Number.isFinite(smallestDistanceBetweenValues)) {\n        var smallestDistanceInPercent = smallestDistanceBetweenValues / diff;\n        var rangeWidth = axis.layout === 'vertical' ? offset.height : offset.width;\n        if (axis.padding === 'gap') {\n          calculatedPadding = smallestDistanceInPercent * rangeWidth / 2;\n        }\n        if (axis.padding === 'no-gap') {\n          var gap = getPercentValue(props.barCategoryGap, smallestDistanceInPercent * rangeWidth);\n          var halfBand = smallestDistanceInPercent * rangeWidth / 2;\n          calculatedPadding = halfBand - gap - (halfBand - gap) / rangeWidth * gap;\n        }\n      }\n    }\n    if (axisType === 'xAxis') {\n      range = [offset.left + (padding.left || 0) + (calculatedPadding || 0), offset.left + offset.width - (padding.right || 0) - (calculatedPadding || 0)];\n    } else if (axisType === 'yAxis') {\n      range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0) + (calculatedPadding || 0), offset.top + offset.height - (padding.bottom || 0) - (calculatedPadding || 0)];\n    } else {\n      range = axis.range;\n    }\n    if (reversed) {\n      range = [range[1], range[0]];\n    }\n    var _parseScale = parseScale(axis, chartName, hasBar),\n      scale = _parseScale.scale,\n      realScaleType = _parseScale.realScaleType;\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n      realScaleType: realScaleType\n    }));\n    if (axisType === 'xAxis') {\n      needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n      x = offset.left;\n      y = steps[offsetKey] - needSpace * axis.height;\n    } else if (axisType === 'yAxis') {\n      needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n      x = steps[offsetKey] - needSpace * axis.width;\n      y = offset.top;\n    }\n    var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n      realScaleType: realScaleType,\n      x: x,\n      y: y,\n      scale: scale,\n      width: axisType === 'xAxis' ? offset.width : axis.width,\n      height: axisType === 'yAxis' ? offset.height : axis.height\n    });\n    finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n    if (!axis.hide && axisType === 'xAxis') {\n      steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n    } else if (!axis.hide) {\n      steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n    }\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n  }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n  var x1 = _ref.x,\n    y1 = _ref.y;\n  var x2 = _ref2.x,\n    y2 = _ref2.y;\n  return {\n    x: Math.min(x1, x2),\n    y: Math.min(y1, y2),\n    width: Math.abs(x2 - x1),\n    height: Math.abs(y2 - y1)\n  };\n};\n\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param  {Object} coords     x1, x2, y1, and y2\n * @return {Object} object\n */\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n  var x1 = _ref3.x1,\n    y1 = _ref3.y1,\n    x2 = _ref3.x2,\n    y2 = _ref3.y2;\n  return rectWithPoints({\n    x: x1,\n    y: y1\n  }, {\n    x: x2,\n    y: y2\n  });\n};\nexport var ScaleHelper = /*#__PURE__*/function () {\n  function ScaleHelper(scale) {\n    _classCallCheck(this, ScaleHelper);\n    this.scale = scale;\n  }\n  return _createClass(ScaleHelper, [{\n    key: \"domain\",\n    get: function get() {\n      return this.scale.domain;\n    }\n  }, {\n    key: \"range\",\n    get: function get() {\n      return this.scale.range;\n    }\n  }, {\n    key: \"rangeMin\",\n    get: function get() {\n      return this.range()[0];\n    }\n  }, {\n    key: \"rangeMax\",\n    get: function get() {\n      return this.range()[1];\n    }\n  }, {\n    key: \"bandwidth\",\n    get: function get() {\n      return this.scale.bandwidth;\n    }\n  }, {\n    key: \"apply\",\n    value: function apply(value) {\n      var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        bandAware = _ref4.bandAware,\n        position = _ref4.position;\n      if (value === undefined) {\n        return undefined;\n      }\n      if (position) {\n        switch (position) {\n          case 'start':\n            {\n              return this.scale(value);\n            }\n          case 'middle':\n            {\n              var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n              return this.scale(value) + offset;\n            }\n          case 'end':\n            {\n              var _offset = this.bandwidth ? this.bandwidth() : 0;\n              return this.scale(value) + _offset;\n            }\n          default:\n            {\n              return this.scale(value);\n            }\n        }\n      }\n      if (bandAware) {\n        var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n        return this.scale(value) + _offset2;\n      }\n      return this.scale(value);\n    }\n  }, {\n    key: \"isInRange\",\n    value: function isInRange(value) {\n      var range = this.range();\n      var first = range[0];\n      var last = range[range.length - 1];\n      return first <= last ? value >= first && value <= last : value >= last && value <= first;\n    }\n  }], [{\n    key: \"create\",\n    value: function create(obj) {\n      return new ScaleHelper(obj);\n    }\n  }]);\n}();\n_defineProperty(ScaleHelper, \"EPS\", 1e-4);\nexport var createLabeledScales = function createLabeledScales(options) {\n  var scales = Object.keys(options).reduce(function (res, key) {\n    return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, key, ScaleHelper.create(options[key])));\n  }, {});\n  return _objectSpread(_objectSpread({}, scales), {}, {\n    apply: function apply(coord) {\n      var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n        bandAware = _ref5.bandAware,\n        position = _ref5.position;\n      return mapValues(coord, function (value, label) {\n        return scales[label].apply(value, {\n          bandAware: bandAware,\n          position: position\n        });\n      });\n    },\n    isInRange: function isInRange(coord) {\n      return every(coord, function (value, label) {\n        return scales[label].isInRange(value);\n      });\n    }\n  });\n};\n\n/** Normalizes the angle so that 0 <= angle < 180.\n * @param {number} angle Angle in degrees.\n * @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180. */\nexport function normalizeAngle(angle) {\n  return (angle % 180 + 180) % 180;\n}\n\n/** Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n * @param {Object} size Width and height of the text in a horizontal position.\n * @param {number} angle Angle in degrees in which the text is displayed.\n * @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.\n */\nexport var getAngledRectangleWidth = function getAngledRectangleWidth(_ref6) {\n  var width = _ref6.width,\n    height = _ref6.height;\n  var angle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n  // Ensure angle is >= 0 && < 180\n  var normalizedAngle = normalizeAngle(angle);\n  var angleRadians = normalizedAngle * Math.PI / 180;\n\n  /* Depending on the height and width of the rectangle, we may need to use different formulas to calculate the angled\n   * width. This threshold defines when each formula should kick in. */\n  var angleThreshold = Math.atan(height / width);\n  var angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);\n  return Math.abs(angledWidth);\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 array 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\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\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 sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i < n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(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(Array.from(_)), 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(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n  return i;\n};\n\nexport var PLACE_HOLDER = {\n  '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n  return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n  return function _curried() {\n    if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n      return _curried;\n    }\n\n    return fn.apply(void 0, arguments);\n  };\n};\n\nvar curryN = function curryN(n, fn) {\n  if (n === 1) {\n    return fn;\n  }\n\n  return curry0(function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var argsLength = args.filter(function (arg) {\n      return arg !== PLACE_HOLDER;\n    }).length;\n\n    if (argsLength >= n) {\n      return fn.apply(void 0, args);\n    }\n\n    return curryN(n - argsLength, curry0(function () {\n      for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        restArgs[_key2] = arguments[_key2];\n      }\n\n      var newArgs = args.map(function (arg) {\n        return isPlaceHolder(arg) ? restArgs.shift() : arg;\n      });\n      return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n    }));\n  });\n};\n\nexport var curry = function curry(fn) {\n  return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n  var arr = [];\n\n  for (var i = begin; i < end; ++i) {\n    arr[i - begin] = i;\n  }\n\n  return arr;\n};\nexport var map = curry(function (fn, arr) {\n  if (Array.isArray(arr)) {\n    return arr.map(fn);\n  }\n\n  return Object.keys(arr).map(function (key) {\n    return arr[key];\n  }).map(fn);\n});\nexport var compose = function compose() {\n  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n    args[_key3] = arguments[_key3];\n  }\n\n  if (!args.length) {\n    return identity;\n  }\n\n  var fns = args.reverse(); // first function can receive multiply arguments\n\n  var firstFn = fns[0];\n  var tailsFn = fns.slice(1);\n  return function () {\n    return tailsFn.reduce(function (res, fn) {\n      return fn(res);\n    }, firstFn.apply(void 0, arguments));\n  };\n};\nexport var reverse = function reverse(arr) {\n  if (Array.isArray(arr)) {\n    return arr.reverse();\n  } // can be string\n\n\n  return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n  var lastArgs = null;\n  var lastResult = null;\n  return function () {\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n\n    if (lastArgs && args.every(function (val, i) {\n      return val === lastArgs[i];\n    })) {\n      return lastResult;\n    }\n\n    lastArgs = args;\n    lastResult = fn.apply(void 0, args);\n    return lastResult;\n  };\n};","/**\n * @fileOverview 一些公用的运算方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获取数值的位数\n * 其中绝对值属于区间[0.1, 1), 得到的值为0\n * 绝对值属于区间[0.01, 0.1),得到的位数为 -1\n * 绝对值属于区间[0.001, 0.01),得到的位数为 -2\n *\n * @param  {Number} value 数值\n * @return {Integer} 位数\n */\n\nfunction getDigitCount(value) {\n  var result;\n\n  if (value === 0) {\n    result = 1;\n  } else {\n    result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n  }\n\n  return result;\n}\n/**\n * 按照固定的步长获取[start, end)这个区间的数据\n * 并且需要处理js计算精度的问题\n *\n * @param  {Decimal} start 起点\n * @param  {Decimal} end   终点,不包含该值\n * @param  {Decimal} step  步长\n * @return {Array}         若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n  var num = new Decimal(start);\n  var i = 0;\n  var result = []; // magic number to prevent infinite loop\n\n  while (num.lt(end) && i < 100000) {\n    result.push(num.toNumber());\n    num = num.add(step);\n    i++;\n  }\n\n  return result;\n}\n/**\n * 对数值进行线性插值\n *\n * @param  {Number} a  定义域的极点\n * @param  {Number} b  定义域的极点\n * @param  {Number} t  [0, 1]内的某个值\n * @return {Number}    定义域内的某个值\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n  var newA = +a;\n  var newB = +b;\n  return newA + t * (newB - newA);\n});\n/**\n * 线性插值的逆运算\n *\n * @param  {Number} a 定义域的极点\n * @param  {Number} b 定义域的极点\n * @param  {Number} x 可以认为是插值后的一个输出值\n * @return {Number}   当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n  var diff = b - +a;\n  diff = diff || Infinity;\n  return (x - a) / diff;\n});\n/**\n * 线性插值的逆运算,并且有截断的操作\n *\n * @param  {Number} a 定义域的极点\n * @param  {Number} b 定义域的极点\n * @param  {Number} x 可以认为是插值后的一个输出值\n * @return {Number}   当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当x不在 a ~ b这个区间时,会截断到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n  var diff = b - +a;\n  diff = diff || Infinity;\n  return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n  rangeStep: rangeStep,\n  getDigitCount: getDigitCount,\n  interpolateNumber: interpolateNumber,\n  uninterpolateNumber: uninterpolateNumber,\n  uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param  {Number} min       The minimum value\n * @param  {Number} max       The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n  var _ref2 = _slicedToArray(_ref, 2),\n      min = _ref2[0],\n      max = _ref2[1];\n\n  var validMin = min,\n      validMax = max; // exchange\n\n  if (min > max) {\n    validMin = max;\n    validMax = min;\n  }\n\n  return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param  {Decimal} roughStep        The rough step calculated by deviding the\n * difference by the tickCount\n * @param  {Boolean} allowDecimals    Allow the ticks to be decimals or not\n * @param  {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n  if (roughStep.lte(0)) {\n    return new Decimal(0);\n  }\n\n  var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n  // order of magnitudes than the rough step\n\n  var digitCountValue = new Decimal(10).pow(digitCount);\n  var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n  var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n  var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n  var formatStep = amendStepRatio.mul(digitCountValue);\n  return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param  {Number}  value         The minimum valuue which is also the maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}                 ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n  var step = 1; // calculate the middle value of ticks\n\n  var middle = new Decimal(value);\n\n  if (!middle.isint() && allowDecimals) {\n    var absVal = Math.abs(value);\n\n    if (absVal < 1) {\n      // The step should be a float number when the difference is smaller than 1\n      step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n      middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n    } else if (absVal > 1) {\n      // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n      middle = new Decimal(Math.floor(value));\n    }\n  } else if (value === 0) {\n    middle = new Decimal(Math.floor((tickCount - 1) / 2));\n  } else if (!allowDecimals) {\n    middle = new Decimal(Math.floor(value));\n  }\n\n  var middleIndex = Math.floor((tickCount - 1) / 2);\n  var fn = compose(map(function (n) {\n    return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n  }), range);\n  return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param  {Number}  min              The minimum value of an interval\n * @param  {Number}  max              The maximum value of an interval\n * @param  {Integer} tickCount        The count of ticks\n * @param  {Boolean} allowDecimals    Allow the ticks to be decimals or not\n * @param  {Number}  correctionFactor A correction factor\n * @return {Object}  The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n  var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n  // dirty hack (for recharts' test)\n  if (!Number.isFinite((max - min) / (tickCount - 1))) {\n    return {\n      step: new Decimal(0),\n      tickMin: new Decimal(0),\n      tickMax: new Decimal(0)\n    };\n  } // The step which is easy to understand between two ticks\n\n\n  var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n  var middle; // When 0 is inside the interval, 0 should be a tick\n\n  if (min <= 0 && max >= 0) {\n    middle = new Decimal(0);\n  } else {\n    // calculate the middle value\n    middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n    middle = middle.sub(new Decimal(middle).mod(step));\n  }\n\n  var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n  var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n  var scaleCount = belowCount + upCount + 1;\n\n  if (scaleCount > tickCount) {\n    // When more ticks need to cover the interval, step should be bigger.\n    return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n  }\n\n  if (scaleCount < tickCount) {\n    // When less ticks can cover the interval, we should add some additional ticks\n    upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n    belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n  }\n\n  return {\n    step: step,\n    tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n    tickMax: middle.add(new Decimal(upCount).mul(step))\n  };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n  var _ref4 = _slicedToArray(_ref3, 2),\n      min = _ref4[0],\n      max = _ref4[1];\n\n  var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  // More than two ticks should be return\n  var count = Math.max(tickCount, 2);\n\n  var _getValidInterval = getValidInterval([min, max]),\n      _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n      cormin = _getValidInterval2[0],\n      cormax = _getValidInterval2[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n      return Infinity;\n    }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n      return -Infinity;\n    })), [cormax]);\n\n    return min > max ? reverse(_values) : _values;\n  }\n\n  if (cormin === cormax) {\n    return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n  } // Get the step between two ticks\n\n\n  var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n      step = _calculateStep.step,\n      tickMin = _calculateStep.tickMin,\n      tickMax = _calculateStep.tickMax;\n\n  var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n  return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n  var _ref6 = _slicedToArray(_ref5, 2),\n      min = _ref6[0],\n      max = _ref6[1];\n\n  var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n  // More than two ticks should be return\n  var count = Math.max(tickCount, 2);\n\n  var _getValidInterval3 = getValidInterval([min, max]),\n      _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n      cormin = _getValidInterval4[0],\n      cormax = _getValidInterval4[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    return [min, max];\n  }\n\n  if (cormin === cormax) {\n    return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n  }\n\n  var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n  var fn = compose(map(function (n) {\n    return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n  }), range);\n  var values = fn(0, count).filter(function (entry) {\n    return entry >= cormin && entry <= cormax;\n  });\n  return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param  {Number}  min, max      min: The minimum value, max: The maximum value\n * @param  {Integer} tickCount     The count of ticks\n * @param  {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array}   ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n  var _ref8 = _slicedToArray(_ref7, 2),\n      min = _ref8[0],\n      max = _ref8[1];\n\n  var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n  // More than two ticks should be return\n  var _getValidInterval5 = getValidInterval([min, max]),\n      _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n      cormin = _getValidInterval6[0],\n      cormax = _getValidInterval6[1];\n\n  if (cormin === -Infinity || cormax === Infinity) {\n    return [min, max];\n  }\n\n  if (cormin === cormax) {\n    return [cormin];\n  }\n\n  var count = Math.max(tickCount, 2);\n  var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n  var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n  return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport * as d3Scales from 'victory-vendor/d3-scale';\nimport { stack as shapeStack, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle, stackOrderNone } from 'victory-vendor/d3-shape';\nimport max from 'lodash/max';\nimport min from 'lodash/min';\nimport isNil from 'lodash/isNil';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport get from 'lodash/get';\nimport flatMap from 'lodash/flatMap';\nimport isNan from 'lodash/isNaN';\nimport upperFirst from 'lodash/upperFirst';\nimport isEqual from 'lodash/isEqual';\nimport sortBy from 'lodash/sortBy';\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport { ErrorBar } from '../cartesian/ErrorBar';\nimport { findEntryInArray, getPercentValue, isNumber, isNumOrStr, mathSign, uniqueId } from './DataUtils';\nimport { filterProps, findAllByType, getDisplayName } from './ReactUtils';\n// TODO: Cause of circular dependency. Needs refactor.\n// import { RadiusAxisProps, AngleAxisProps } from '../polar/types';\n\nimport { getLegendProps } from './getLegendProps';\n\n// Exported for backwards compatibility\nexport { getLegendProps };\nexport function getValueByDataKey(obj, dataKey, defaultValue) {\n  if (isNil(obj) || isNil(dataKey)) {\n    return defaultValue;\n  }\n  if (isNumOrStr(dataKey)) {\n    return get(obj, dataKey, defaultValue);\n  }\n  if (isFunction(dataKey)) {\n    return dataKey(obj);\n  }\n  return defaultValue;\n}\n/**\n * Get domain of data by key.\n * @param  {Array}   data      The data displayed in the chart\n * @param  {String}  key       The unique key of a group of data\n * @param  {String}  type      The type of axis\n * @param  {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\nexport function getDomainOfDataByKey(data, key, type, filterNil) {\n  var flattenData = flatMap(data, function (entry) {\n    return getValueByDataKey(entry, key);\n  });\n  if (type === 'number') {\n    // @ts-expect-error parseFloat type only accepts strings\n    var domain = flattenData.filter(function (entry) {\n      return isNumber(entry) || parseFloat(entry);\n    });\n    return domain.length ? [min(domain), max(domain)] : [Infinity, -Infinity];\n  }\n  var validateData = filterNil ? flattenData.filter(function (entry) {\n    return !isNil(entry);\n  }) : flattenData;\n\n  // Supports x-axis of Date type\n  return validateData.map(function (entry) {\n    return isNumOrStr(entry) || entry instanceof Date ? entry : '';\n  });\n}\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate) {\n  var _ticks$length;\n  var ticks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var unsortedTicks = arguments.length > 2 ? arguments[2] : undefined;\n  var axis = arguments.length > 3 ? arguments[3] : undefined;\n  var index = -1;\n  var len = (_ticks$length = ticks === null || ticks === void 0 ? void 0 : ticks.length) !== null && _ticks$length !== void 0 ? _ticks$length : 0;\n\n  // if there are 1 or less ticks ticks then the active tick is at index 0\n  if (len <= 1) {\n    return 0;\n  }\n  if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n    var range = axis.range;\n    // ticks are distributed in a circle\n    for (var i = 0; i < len; i++) {\n      var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n      var cur = unsortedTicks[i].coordinate;\n      var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n      var sameDirectionCoord = void 0;\n      if (mathSign(cur - before) !== mathSign(after - cur)) {\n        var diffInterval = [];\n        if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n          sameDirectionCoord = after;\n          var curInRange = cur + range[1] - range[0];\n          diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n          diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n        } else {\n          sameDirectionCoord = before;\n          var afterInRange = after + range[1] - range[0];\n          diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n          diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n        }\n        var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n        if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n          index = unsortedTicks[i].index;\n          break;\n        }\n      } else {\n        var minValue = Math.min(before, after);\n        var maxValue = Math.max(before, after);\n        if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {\n          index = unsortedTicks[i].index;\n          break;\n        }\n      }\n    }\n  } else {\n    // ticks are distributed in a single direction\n    for (var _i = 0; _i < len; _i++) {\n      if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n        index = ticks[_i].index;\n        break;\n      }\n    }\n  }\n  return index;\n};\n\n/**\n * Get the main color of each graphic item\n * @param  {ReactElement} item A graphic item\n * @return {String}            Color\n */\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n  var _item$type;\n  var _ref = item,\n    displayName = _ref.type.displayName; // TODO: check if displayName is valid.\n  var defaultedProps = (_item$type = item.type) !== null && _item$type !== void 0 && _item$type.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n  var stroke = defaultedProps.stroke,\n    fill = defaultedProps.fill;\n  var result;\n  switch (displayName) {\n    case 'Line':\n      result = stroke;\n      break;\n    case 'Area':\n    case 'Radar':\n      result = stroke && stroke !== 'none' ? stroke : fill;\n      break;\n    default:\n      result = fill;\n      break;\n  }\n  return result;\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param  {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\nexport var getBarSizeList = function getBarSizeList(_ref2) {\n  var globalSize = _ref2.barSize,\n    totalSize = _ref2.totalSize,\n    _ref2$stackGroups = _ref2.stackGroups,\n    stackGroups = _ref2$stackGroups === void 0 ? {} : _ref2$stackGroups;\n  if (!stackGroups) {\n    return {};\n  }\n  var result = {};\n  var numericAxisIds = Object.keys(stackGroups);\n  for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n    var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n    var stackIds = Object.keys(sgs);\n    for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n      var _sgs$stackIds$j = sgs[stackIds[j]],\n        items = _sgs$stackIds$j.items,\n        cateAxisId = _sgs$stackIds$j.cateAxisId;\n      var barItems = items.filter(function (item) {\n        return getDisplayName(item.type).indexOf('Bar') >= 0;\n      });\n      if (barItems && barItems.length) {\n        var barItemDefaultProps = barItems[0].type.defaultProps;\n        var barItemProps = barItemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, barItemDefaultProps), barItems[0].props) : barItems[0].props;\n        var selfSize = barItemProps.barSize;\n        var cateId = barItemProps[cateAxisId];\n        if (!result[cateId]) {\n          result[cateId] = [];\n        }\n        var barSize = isNil(selfSize) ? globalSize : selfSize;\n        result[cateId].push({\n          item: barItems[0],\n          stackList: barItems.slice(1),\n          barSize: isNil(barSize) ? undefined : getPercentValue(barSize, totalSize, 0)\n        });\n      }\n    }\n  }\n  return result;\n};\n/**\n * Calculate the size of each bar and offset between start of band and the bar\n *\n * @param  {number} bandSize is the size of area where bars can render\n * @param  {number | string} barGap is the gap size, as a percentage of `bandSize`.\n *                                  Can be defined as number or percent string\n * @param  {number | string} barCategoryGap is the gap size, as a percentage of `bandSize`.\n *                                  Can be defined as number or percent string\n * @param  {Array<object>} sizeList Sizes of all groups\n * @param  {number} maxBarSize The maximum size of each bar\n * @return {Array<object>} The size and offset of each bar\n */\nexport var getBarPosition = function getBarPosition(_ref3) {\n  var barGap = _ref3.barGap,\n    barCategoryGap = _ref3.barCategoryGap,\n    bandSize = _ref3.bandSize,\n    _ref3$sizeList = _ref3.sizeList,\n    sizeList = _ref3$sizeList === void 0 ? [] : _ref3$sizeList,\n    maxBarSize = _ref3.maxBarSize;\n  var len = sizeList.length;\n  if (len < 1) return null;\n  var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n  var result;\n  var initialValue = [];\n\n  // whether or not is barSize setted by user\n  if (sizeList[0].barSize === +sizeList[0].barSize) {\n    var useFull = false;\n    var fullBarSize = bandSize / len;\n    // @ts-expect-error the type check above does not check for type number explicitly\n    var sum = sizeList.reduce(function (res, entry) {\n      return res + entry.barSize || 0;\n    }, 0);\n    sum += (len - 1) * realBarGap;\n    if (sum >= bandSize) {\n      sum -= (len - 1) * realBarGap;\n      realBarGap = 0;\n    }\n    if (sum >= bandSize && fullBarSize > 0) {\n      useFull = true;\n      fullBarSize *= 0.9;\n      sum = len * fullBarSize;\n    }\n    var offset = (bandSize - sum) / 2 >> 0;\n    var prev = {\n      offset: offset - realBarGap,\n      size: 0\n    };\n    result = sizeList.reduce(function (res, entry) {\n      var newPosition = {\n        item: entry.item,\n        position: {\n          offset: prev.offset + prev.size + realBarGap,\n          // @ts-expect-error the type check above does not check for type number explicitly\n          size: useFull ? fullBarSize : entry.barSize\n        }\n      };\n      var newRes = [].concat(_toConsumableArray(res), [newPosition]);\n      prev = newRes[newRes.length - 1].position;\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(function (item) {\n          newRes.push({\n            item: item,\n            position: prev\n          });\n        });\n      }\n      return newRes;\n    }, initialValue);\n  } else {\n    var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n    if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n      realBarGap = 0;\n    }\n    var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n    if (originalSize > 1) {\n      originalSize >>= 0;\n    }\n    var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n    result = sizeList.reduce(function (res, entry, i) {\n      var newRes = [].concat(_toConsumableArray(res), [{\n        item: entry.item,\n        position: {\n          offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n          size: size\n        }\n      }]);\n      if (entry.stackList && entry.stackList.length) {\n        entry.stackList.forEach(function (item) {\n          newRes.push({\n            item: item,\n            position: newRes[newRes.length - 1].position\n          });\n        });\n      }\n      return newRes;\n    }, initialValue);\n  }\n  return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, _unused, props, legendBox) {\n  var children = props.children,\n    width = props.width,\n    margin = props.margin;\n  var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n  var legendProps = getLegendProps({\n    children: children,\n    legendWidth: legendWidth\n  });\n  if (legendProps) {\n    var _ref4 = legendBox || {},\n      boxWidth = _ref4.width,\n      boxHeight = _ref4.height;\n    var align = legendProps.align,\n      verticalAlign = legendProps.verticalAlign,\n      layout = legendProps.layout;\n    if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'middle') && align !== 'center' && isNumber(offset[align])) {\n      return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, align, offset[align] + (boxWidth || 0)));\n    }\n    if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && verticalAlign !== 'middle' && isNumber(offset[verticalAlign])) {\n      return _objectSpread(_objectSpread({}, offset), {}, _defineProperty({}, verticalAlign, offset[verticalAlign] + (boxHeight || 0)));\n    }\n  }\n  return offset;\n};\nvar isErrorBarRelevantForAxis = function isErrorBarRelevantForAxis(layout, axisType, direction) {\n  if (isNil(axisType)) {\n    return true;\n  }\n  if (layout === 'horizontal') {\n    return axisType === 'yAxis';\n  }\n  if (layout === 'vertical') {\n    return axisType === 'xAxis';\n  }\n  if (direction === 'x') {\n    return axisType === 'xAxis';\n  }\n  if (direction === 'y') {\n    return axisType === 'yAxis';\n  }\n  return true;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, layout, axisType) {\n  var children = item.props.children;\n  var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n    return isErrorBarRelevantForAxis(layout, axisType, errorBarChild.props.direction);\n  });\n  if (errorBars && errorBars.length) {\n    var keys = errorBars.map(function (errorBarChild) {\n      return errorBarChild.props.dataKey;\n    });\n    return data.reduce(function (result, entry) {\n      var entryValue = getValueByDataKey(entry, dataKey);\n      if (isNil(entryValue)) return result;\n      var mainValue = Array.isArray(entryValue) ? [min(entryValue), max(entryValue)] : [entryValue, entryValue];\n      var errorDomain = keys.reduce(function (prevErrorArr, k) {\n        var errorValue = getValueByDataKey(entry, k, 0);\n        var lowerValue = mainValue[0] - Math.abs(Array.isArray(errorValue) ? errorValue[0] : errorValue);\n        var upperValue = mainValue[1] + Math.abs(Array.isArray(errorValue) ? errorValue[1] : errorValue);\n        return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n      }, [Infinity, -Infinity]);\n      return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n    }, [Infinity, -Infinity]);\n  }\n  return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType, layout) {\n  var domains = items.map(function (item) {\n    return getDomainOfErrorBars(data, item, dataKey, layout, axisType);\n  }).filter(function (entry) {\n    return !isNil(entry);\n  });\n  if (domains && domains.length) {\n    return domains.reduce(function (result, entry) {\n      return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n    }, [Infinity, -Infinity]);\n  }\n  return null;\n};\n\n/**\n * Get domain of data by the configuration of item element\n * @param  {Array}   data      The data displayed in the chart\n * @param  {Array}   items     The instances of item\n * @param  {String}  type      The type of axis, number - Number Axis, category - Category Axis\n * @param  {LayoutType} layout The type of layout\n * @param  {Boolean} filterNil Whether or not filter nil values\n * @return {Array}        Domain\n */\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, layout, filterNil) {\n  var domains = items.map(function (item) {\n    var dataKey = item.props.dataKey;\n    if (type === 'number' && dataKey) {\n      return getDomainOfErrorBars(data, item, dataKey, layout) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n    }\n    return getDomainOfDataByKey(data, dataKey, type, filterNil);\n  });\n  if (type === 'number') {\n    // Calculate the domain of number axis\n    return domains.reduce(\n    // @ts-expect-error if (type === number) means that the domain is numerical type\n    // - but this link is missing in the type definition\n    function (result, entry) {\n      return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n    }, [Infinity, -Infinity]);\n  }\n  var tag = {};\n  // Get the union set of category axis\n  return domains.reduce(function (result, entry) {\n    for (var i = 0, len = entry.length; i < len; i++) {\n      // @ts-expect-error Date cannot index an object\n      if (!tag[entry[i]]) {\n        // @ts-expect-error Date cannot index an object\n        tag[entry[i]] = true;\n\n        // @ts-expect-error Date cannot index an object\n        result.push(entry[i]);\n      }\n    }\n    return result;\n  }, []);\n};\nexport var isCategoricalAxis = function isCategoricalAxis(layout, axisType) {\n  return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n\n/**\n * Calculate the Coordinates of grid\n * @param  {Array} ticks           The ticks in axis\n * @param {Number} minValue        The minimun value of axis\n * @param {Number} maxValue        The maximun value of axis\n * @param {boolean} syncWithTicks  Synchronize grid lines with ticks or not\n * @return {Array}                 Coordinates\n */\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, minValue, maxValue, syncWithTicks) {\n  if (syncWithTicks) {\n    return ticks.map(function (entry) {\n      return entry.coordinate;\n    });\n  }\n  var hasMin, hasMax;\n  var values = ticks.map(function (entry) {\n    if (entry.coordinate === minValue) {\n      hasMin = true;\n    }\n    if (entry.coordinate === maxValue) {\n      hasMax = true;\n    }\n    return entry.coordinate;\n  });\n  if (!hasMin) {\n    values.push(minValue);\n  }\n  if (!hasMax) {\n    values.push(maxValue);\n  }\n  return values;\n};\n\n/**\n * Get the ticks of an axis\n * @param  {Object}  axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array}  Ticks\n */\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n  if (!axis) return null;\n  var scale = axis.scale;\n  var duplicateDomain = axis.duplicateDomain,\n    type = axis.type,\n    range = axis.range;\n  var offsetForBand = axis.realScaleType === 'scaleBand' ? scale.bandwidth() / 2 : 2;\n  var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / offsetForBand : 0;\n  offset = axis.axisType === 'angleAxis' && (range === null || range === void 0 ? void 0 : range.length) >= 2 ? mathSign(range[0] - range[1]) * 2 * offset : offset;\n\n  // The ticks set by user should only affect the ticks adjacent to axis line\n  if (isGrid && (axis.ticks || axis.niceTicks)) {\n    var result = (axis.ticks || axis.niceTicks).map(function (entry) {\n      var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n      return {\n        // If the scaleContent is not a number, the coordinate will be NaN.\n        // That could be the case for example with a PointScale and a string as domain.\n        coordinate: scale(scaleContent) + offset,\n        value: entry,\n        offset: offset\n      };\n    });\n    return result.filter(function (row) {\n      return !isNan(row.coordinate);\n    });\n  }\n\n  // When axis is a categorial axis, but the type of axis is number or the scale of axis is not \"auto\"\n  if (axis.isCategorical && axis.categoricalDomain) {\n    return axis.categoricalDomain.map(function (entry, index) {\n      return {\n        coordinate: scale(entry) + offset,\n        value: entry,\n        index: index,\n        offset: offset\n      };\n    });\n  }\n  if (scale.ticks && !isAll) {\n    return scale.ticks(axis.tickCount).map(function (entry) {\n      return {\n        coordinate: scale(entry) + offset,\n        value: entry,\n        offset: offset\n      };\n    });\n  }\n\n  // When axis has duplicated text, serial numbers are used to generate scale\n  return scale.domain().map(function (entry, index) {\n    return {\n      coordinate: scale(entry) + offset,\n      value: duplicateDomain ? duplicateDomain[entry] : entry,\n      index: index,\n      offset: offset\n    };\n  });\n};\n\n/**\n * combine the handlers\n * @param  {Function} defaultHandler Internal private handler\n * @param  {Function} childHandler Handler function specified in child component\n * @return {Function}                The combined handler\n */\n\nvar handlerWeakMap = new WeakMap();\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, childHandler) {\n  if (typeof childHandler !== 'function') {\n    return defaultHandler;\n  }\n  if (!handlerWeakMap.has(defaultHandler)) {\n    handlerWeakMap.set(defaultHandler, new WeakMap());\n  }\n  var childWeakMap = handlerWeakMap.get(defaultHandler);\n  if (childWeakMap.has(childHandler)) {\n    return childWeakMap.get(childHandler);\n  }\n  var combineHandler = function combineHandler() {\n    defaultHandler.apply(void 0, arguments);\n    childHandler.apply(void 0, arguments);\n  };\n  childWeakMap.set(childHandler, combineHandler);\n  return combineHandler;\n};\n\n/**\n * Parse the scale function of axis\n * @param  {Object}   axis          The option of axis\n * @param  {String}   chartType     The displayName of chart\n * @param  {Boolean}  hasBar        if it has a bar\n * @return {object}               The scale function and resolved name\n */\nexport var parseScale = function parseScale(axis, chartType, hasBar) {\n  var scale = axis.scale,\n    type = axis.type,\n    layout = axis.layout,\n    axisType = axis.axisType;\n  if (scale === 'auto') {\n    if (layout === 'radial' && axisType === 'radiusAxis') {\n      return {\n        scale: d3Scales.scaleBand(),\n        realScaleType: 'band'\n      };\n    }\n    if (layout === 'radial' && axisType === 'angleAxis') {\n      return {\n        scale: d3Scales.scaleLinear(),\n        realScaleType: 'linear'\n      };\n    }\n    if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0 || chartType.indexOf('ComposedChart') >= 0 && !hasBar)) {\n      return {\n        scale: d3Scales.scalePoint(),\n        realScaleType: 'point'\n      };\n    }\n    if (type === 'category') {\n      return {\n        scale: d3Scales.scaleBand(),\n        realScaleType: 'band'\n      };\n    }\n    return {\n      scale: d3Scales.scaleLinear(),\n      realScaleType: 'linear'\n    };\n  }\n  if (isString(scale)) {\n    var name = \"scale\".concat(upperFirst(scale));\n    return {\n      scale: (d3Scales[name] || d3Scales.scalePoint)(),\n      realScaleType: d3Scales[name] ? name : 'point'\n    };\n  }\n  return isFunction(scale) ? {\n    scale: scale\n  } : {\n    scale: d3Scales.scalePoint(),\n    realScaleType: 'point'\n  };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n  var domain = scale.domain();\n  if (!domain || domain.length <= 2) {\n    return;\n  }\n  var len = domain.length;\n  var range = scale.range();\n  var minValue = Math.min(range[0], range[1]) - EPS;\n  var maxValue = Math.max(range[0], range[1]) + EPS;\n  var first = scale(domain[0]);\n  var last = scale(domain[len - 1]);\n  if (first < minValue || first > maxValue || last < minValue || last > maxValue) {\n    scale.domain([domain[0], domain[len - 1]]);\n  }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n  if (!barPosition) {\n    return null;\n  }\n  for (var i = 0, len = barPosition.length; i < len; i++) {\n    if (barPosition[i].item === child) {\n      return barPosition[i].position;\n    }\n  }\n  return null;\n};\n\n/**\n * Both value and domain are tuples of two numbers\n * - but the type stays as array of numbers until we have better support in rest of the app\n * @param {Array} value input that will be truncated\n * @param {Array} domain boundaries\n * @returns {Array} tuple of two numbers\n */\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n  if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n    return value;\n  }\n  var minValue = Math.min(domain[0], domain[1]);\n  var maxValue = Math.max(domain[0], domain[1]);\n  var result = [value[0], value[1]];\n  if (!isNumber(value[0]) || value[0] < minValue) {\n    result[0] = minValue;\n  }\n  if (!isNumber(value[1]) || value[1] > maxValue) {\n    result[1] = maxValue;\n  }\n  if (result[0] > maxValue) {\n    result[0] = maxValue;\n  }\n  if (result[1] < minValue) {\n    result[1] = minValue;\n  }\n  return result;\n};\n\n/**\n * Stacks all positive numbers above zero and all negative numbers below zero.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetSign = function offsetSign(series) {\n  var n = series.length;\n  if (n <= 0) {\n    return;\n  }\n  for (var j = 0, m = series[0].length; j < m; ++j) {\n    var positive = 0;\n    var negative = 0;\n    for (var i = 0; i < n; ++i) {\n      var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n      /* eslint-disable prefer-destructuring, no-param-reassign */\n      if (value >= 0) {\n        series[i][j][0] = positive;\n        series[i][j][1] = positive + value;\n        positive = series[i][j][1];\n      } else {\n        series[i][j][0] = negative;\n        series[i][j][1] = negative + value;\n        negative = series[i][j][1];\n      }\n      /* eslint-enable prefer-destructuring, no-param-reassign */\n    }\n  }\n};\n\n/**\n * Replaces all negative values with zero when stacking data.\n *\n * If all values in the series are positive then this behaves the same as 'none' stacker.\n *\n * @param {Array} series from d3-shape Stack\n * @return {Array} series with applied offset\n */\nexport var offsetPositive = function offsetPositive(series) {\n  var n = series.length;\n  if (n <= 0) {\n    return;\n  }\n  for (var j = 0, m = series[0].length; j < m; ++j) {\n    var positive = 0;\n    for (var i = 0; i < n; ++i) {\n      var value = isNan(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n\n      /* eslint-disable prefer-destructuring, no-param-reassign */\n      if (value >= 0) {\n        series[i][j][0] = positive;\n        series[i][j][1] = positive + value;\n        positive = series[i][j][1];\n      } else {\n        series[i][j][0] = 0;\n        series[i][j][1] = 0;\n      }\n      /* eslint-enable prefer-destructuring, no-param-reassign */\n    }\n  }\n};\n\n/**\n * Function type to compute offset for stacked data.\n *\n * d3-shape has something fishy going on with its types.\n * In @definitelytyped/d3-shape, this function (the offset accessor) is typed as Series<> => void.\n * However! When I actually open the storybook I can see that the offset accessor actually receives Array<Series<>>.\n * The same I can see in the source code itself:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n * That one unfortunately has no types but we can tell it passes three-dimensional array.\n *\n * Which leads me to believe that definitelytyped is wrong on this one.\n * There's open discussion on this topic without much attention:\n * https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/66042\n */\n\nvar STACK_OFFSET_MAP = {\n  sign: offsetSign,\n  // @ts-expect-error definitelytyped types are incorrect\n  expand: stackOffsetExpand,\n  // @ts-expect-error definitelytyped types are incorrect\n  none: stackOffsetNone,\n  // @ts-expect-error definitelytyped types are incorrect\n  silhouette: stackOffsetSilhouette,\n  // @ts-expect-error definitelytyped types are incorrect\n  wiggle: stackOffsetWiggle,\n  positive: offsetPositive\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n  var dataKeys = stackItems.map(function (item) {\n    return item.props.dataKey;\n  });\n  var offsetAccessor = STACK_OFFSET_MAP[offsetType];\n  var stack = shapeStack()\n  // @ts-expect-error stack.keys type wants an array of strings, but we provide array of DataKeys\n  .keys(dataKeys).value(function (d, key) {\n    return +getValueByDataKey(d, key, 0);\n  }).order(stackOrderNone)\n  // @ts-expect-error definitelytyped types are incorrect\n  .offset(offsetAccessor);\n  return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n  if (!data) {\n    return null;\n  }\n\n  // reversing items to affect render order (for layering)\n  var items = reverseStackOrder ? _items.reverse() : _items;\n  var parentStackGroupsInitialValue = {};\n  var stackGroups = items.reduce(function (result, item) {\n    var _item$type2;\n    var defaultedProps = (_item$type2 = item.type) !== null && _item$type2 !== void 0 && _item$type2.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n    var stackId = defaultedProps.stackId,\n      hide = defaultedProps.hide;\n    if (hide) {\n      return result;\n    }\n    var axisId = defaultedProps[numericAxisId];\n    var parentGroup = result[axisId] || {\n      hasStack: false,\n      stackGroups: {}\n    };\n    if (isNumOrStr(stackId)) {\n      var childGroup = parentGroup.stackGroups[stackId] || {\n        numericAxisId: numericAxisId,\n        cateAxisId: cateAxisId,\n        items: []\n      };\n      childGroup.items.push(item);\n      parentGroup.hasStack = true;\n      parentGroup.stackGroups[stackId] = childGroup;\n    } else {\n      parentGroup.stackGroups[uniqueId('_stackId_')] = {\n        numericAxisId: numericAxisId,\n        cateAxisId: cateAxisId,\n        items: [item]\n      };\n    }\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, parentGroup));\n  }, parentStackGroupsInitialValue);\n  var axisStackGroupsInitialValue = {};\n  return Object.keys(stackGroups).reduce(function (result, axisId) {\n    var group = stackGroups[axisId];\n    if (group.hasStack) {\n      var stackGroupsInitialValue = {};\n      group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n        var g = group.stackGroups[stackId];\n        return _objectSpread(_objectSpread({}, res), {}, _defineProperty({}, stackId, {\n          numericAxisId: numericAxisId,\n          cateAxisId: cateAxisId,\n          items: g.items,\n          stackedData: getStackedData(data, g.items, offsetType)\n        }));\n      }, stackGroupsInitialValue);\n    }\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, axisId, group));\n  }, axisStackGroupsInitialValue);\n};\n\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts  The configuration of axis\n * @return {Object}      null\n */\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n  var realScaleType = opts.realScaleType,\n    type = opts.type,\n    tickCount = opts.tickCount,\n    originalDomain = opts.originalDomain,\n    allowDecimals = opts.allowDecimals;\n  var scaleType = realScaleType || opts.scale;\n  if (scaleType !== 'auto' && scaleType !== 'linear') {\n    return null;\n  }\n  if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n    // Calculate the ticks by the number of grid when the axis is a number axis\n    var domain = scale.domain();\n    if (!domain.length) {\n      return null;\n    }\n    var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n    scale.domain([min(tickValues), max(tickValues)]);\n    return {\n      niceTicks: tickValues\n    };\n  }\n  if (tickCount && type === 'number') {\n    var _domain = scale.domain();\n    var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n    return {\n      niceTicks: _tickValues\n    };\n  }\n  return null;\n};\nexport function getCateCoordinateOfLine(_ref5) {\n  var axis = _ref5.axis,\n    ticks = _ref5.ticks,\n    bandSize = _ref5.bandSize,\n    entry = _ref5.entry,\n    index = _ref5.index,\n    dataKey = _ref5.dataKey;\n  if (axis.type === 'category') {\n    // find coordinate of category axis by the value of category\n    // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n    if (!axis.allowDuplicatedCategory && axis.dataKey && !isNil(entry[axis.dataKey])) {\n      // @ts-expect-error why does this use direct object access instead of getValueByDataKey?\n      var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n      if (matchedTick) {\n        return matchedTick.coordinate + bandSize / 2;\n      }\n    }\n    return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n  }\n  var value = getValueByDataKey(entry, !isNil(dataKey) ? dataKey : axis.dataKey);\n  return !isNil(value) ? axis.scale(value) : null;\n}\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref6) {\n  var axis = _ref6.axis,\n    ticks = _ref6.ticks,\n    offset = _ref6.offset,\n    bandSize = _ref6.bandSize,\n    entry = _ref6.entry,\n    index = _ref6.index;\n  if (axis.type === 'category') {\n    return ticks[index] ? ticks[index].coordinate + offset : null;\n  }\n  var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n  return !isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref7) {\n  var numericAxis = _ref7.numericAxis;\n  var domain = numericAxis.scale.domain();\n  if (numericAxis.type === 'number') {\n    var minValue = Math.min(domain[0], domain[1]);\n    var maxValue = Math.max(domain[0], domain[1]);\n    if (minValue <= 0 && maxValue >= 0) {\n      return 0;\n    }\n    if (maxValue < 0) {\n      return maxValue;\n    }\n    return minValue;\n  }\n  return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n  var _item$type3;\n  var defaultedProps = (_item$type3 = item.type) !== null && _item$type3 !== void 0 && _item$type3.defaultProps ? _objectSpread(_objectSpread({}, item.type.defaultProps), item.props) : item.props;\n  var stackId = defaultedProps.stackId;\n  if (isNumOrStr(stackId)) {\n    var group = stackGroups[stackId];\n    if (group) {\n      var itemIndex = group.items.indexOf(item);\n      return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n    }\n  }\n  return null;\n};\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n  return data.reduce(function (result, entry) {\n    return [min(entry.concat([result[0]]).filter(isNumber)), max(entry.concat([result[1]]).filter(isNumber))];\n  }, [Infinity, -Infinity]);\n};\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n  return Object.keys(stackGroups).reduce(function (result, stackId) {\n    var group = stackGroups[stackId];\n    var stackedData = group.stackedData;\n    var domain = stackedData.reduce(function (res, entry) {\n      var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n      return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n    }, [Infinity, -Infinity]);\n    return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n  }, [Infinity, -Infinity]).map(function (result) {\n    return result === Infinity || result === -Infinity ? 0 : result;\n  });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n  if (isFunction(specifiedDomain)) {\n    return specifiedDomain(dataDomain, allowDataOverflow);\n  }\n  if (!Array.isArray(specifiedDomain)) {\n    return dataDomain;\n  }\n  var domain = [];\n\n  /* eslint-disable prefer-destructuring */\n  if (isNumber(specifiedDomain[0])) {\n    domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n  } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n    var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n    domain[0] = dataDomain[0] - value;\n  } else if (isFunction(specifiedDomain[0])) {\n    domain[0] = specifiedDomain[0](dataDomain[0]);\n  } else {\n    domain[0] = dataDomain[0];\n  }\n  if (isNumber(specifiedDomain[1])) {\n    domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n  } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n    var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n    domain[1] = dataDomain[1] + _value;\n  } else if (isFunction(specifiedDomain[1])) {\n    domain[1] = specifiedDomain[1](dataDomain[1]);\n  } else {\n    domain[1] = dataDomain[1];\n  }\n  /* eslint-enable prefer-destructuring */\n\n  return domain;\n};\n\n/**\n * Calculate the size between two category\n * @param  {Object} axis  The options of axis\n * @param  {Array}  ticks The ticks of axis\n * @param  {Boolean} isBar if items in axis are bars\n * @return {Number} Size\n */\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks, isBar) {\n  // @ts-expect-error we need to rethink scale type\n  if (axis && axis.scale && axis.scale.bandwidth) {\n    // @ts-expect-error we need to rethink scale type\n    var bandWidth = axis.scale.bandwidth();\n    if (!isBar || bandWidth > 0) {\n      return bandWidth;\n    }\n  }\n  if (axis && ticks && ticks.length >= 2) {\n    var orderedTicks = sortBy(ticks, function (o) {\n      return o.coordinate;\n    });\n    var bandSize = Infinity;\n    for (var i = 1, len = orderedTicks.length; i < len; i++) {\n      var cur = orderedTicks[i];\n      var prev = orderedTicks[i - 1];\n      bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n    }\n    return bandSize === Infinity ? 0 : bandSize;\n  }\n  return isBar ? undefined : 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param   {Array}        specifiedDomain  The domain specified by users\n * @param   {Array}        calculatedDomain The domain calculated by dateKey\n * @param   {ReactElement} axisChild        The axis ReactElement\n * @returns {Array}        domains\n */\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n  if (!specifiedDomain || !specifiedDomain.length) {\n    return calculatedDomain;\n  }\n  if (isEqual(specifiedDomain, get(axisChild, 'type.defaultProps.domain'))) {\n    return calculatedDomain;\n  }\n  return specifiedDomain;\n};\nexport var getTooltipItem = function getTooltipItem(graphicalItem, payload) {\n  var defaultedProps = graphicalItem.type.defaultProps ? _objectSpread(_objectSpread({}, graphicalItem.type.defaultProps), graphicalItem.props) : graphicalItem.props;\n  var dataKey = defaultedProps.dataKey,\n    name = defaultedProps.name,\n    unit = defaultedProps.unit,\n    formatter = defaultedProps.formatter,\n    tooltipType = defaultedProps.tooltipType,\n    chartType = defaultedProps.chartType,\n    hide = defaultedProps.hide;\n  return _objectSpread(_objectSpread({}, filterProps(graphicalItem, false)), {}, {\n    dataKey: dataKey,\n    unit: unit,\n    formatter: formatter,\n    name: name || dataKey,\n    color: getMainColorOfGraphicItem(graphicalItem),\n    value: getValueByDataKey(payload, dataKey),\n    type: tooltipType,\n    payload: payload,\n    chartType: chartType,\n    hide: hide\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","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","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { Global } from './Global';\nvar stringCache = {\n  widthCache: {},\n  cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n  position: 'absolute',\n  top: '-20000px',\n  left: 0,\n  padding: 0,\n  margin: 0,\n  border: 'none',\n  whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\nfunction autoCompleteStyle(name, value) {\n  if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n    return \"\".concat(value, \"px\");\n  }\n  return value;\n}\nfunction camelToMiddleLine(text) {\n  var strs = text.split('');\n  var formatStrs = strs.reduce(function (result, entry) {\n    if (entry === entry.toUpperCase()) {\n      return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n    }\n    return [].concat(_toConsumableArray(result), [entry]);\n  }, []);\n  return formatStrs.join('');\n}\nexport var getStyleString = function getStyleString(style) {\n  return Object.keys(style).reduce(function (result, s) {\n    return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n  }, '');\n};\nfunction removeInvalidKeys(obj) {\n  var copyObj = _objectSpread({}, obj);\n  Object.keys(copyObj).forEach(function (key) {\n    if (!copyObj[key]) {\n      delete copyObj[key];\n    }\n  });\n  return copyObj;\n}\nexport var getStringSize = function getStringSize(text) {\n  var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (text === undefined || text === null || Global.isSsr) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n  var copyStyle = removeInvalidKeys(style);\n  var cacheKey = JSON.stringify({\n    text: text,\n    copyStyle: copyStyle\n  });\n  if (stringCache.widthCache[cacheKey]) {\n    return stringCache.widthCache[cacheKey];\n  }\n  try {\n    var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n    if (!measurementSpan) {\n      measurementSpan = document.createElement('span');\n      measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n      measurementSpan.setAttribute('aria-hidden', 'true');\n      document.body.appendChild(measurementSpan);\n    }\n    // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n    // https://en.wikipedia.org/wiki/Content_Security_Policy\n    var measurementSpanStyle = _objectSpread(_objectSpread({}, SPAN_STYLE), copyStyle);\n    Object.assign(measurementSpan.style, measurementSpanStyle);\n    measurementSpan.textContent = \"\".concat(text);\n    var rect = measurementSpan.getBoundingClientRect();\n    var result = {\n      width: rect.width,\n      height: rect.height\n    };\n    stringCache.widthCache[cacheKey] = result;\n    if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n      stringCache.cacheCount = 0;\n      stringCache.widthCache = {};\n    }\n    return result;\n  } catch (e) {\n    return {\n      width: 0,\n      height: 0\n    };\n  }\n};\nexport var getOffset = function getOffset(rect) {\n  return {\n    top: rect.top + window.scrollY - document.documentElement.clientTop,\n    left: rect.left + window.scrollX - document.documentElement.clientLeft\n  };\n};","import isString from 'lodash/isString';\nimport isNan from 'lodash/isNaN';\nimport get from 'lodash/get';\nimport lodashIsNumber from 'lodash/isNumber';\nexport var mathSign = function mathSign(value) {\n  if (value === 0) {\n    return 0;\n  }\n  if (value > 0) {\n    return 1;\n  }\n  return -1;\n};\nexport var isPercent = function isPercent(value) {\n  return isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n  return lodashIsNumber(value) && !isNan(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n  return isNumber(value) || isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n  var id = ++idCounter;\n  return \"\".concat(prefix || '').concat(id);\n};\n\n/**\n * Get percent value of a total value\n * @param {number|string} percent A percent\n * @param {number} totalValue     Total value\n * @param {number} defaultValue   The value returned when percent is undefined or invalid\n * @param {boolean} validate      If set to be true, the result will be validated\n * @return {number} value\n */\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n  var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n  var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  if (!isNumber(percent) && !isString(percent)) {\n    return defaultValue;\n  }\n  var value;\n  if (isPercent(percent)) {\n    var index = percent.indexOf('%');\n    value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n  } else {\n    value = +percent;\n  }\n  if (isNan(value)) {\n    value = defaultValue;\n  }\n  if (validate && value > totalValue) {\n    value = totalValue;\n  }\n  return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n  if (!obj) {\n    return null;\n  }\n  var keys = Object.keys(obj);\n  if (keys && keys.length) {\n    return obj[keys[0]];\n  }\n  return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n  if (!Array.isArray(ary)) {\n    return false;\n  }\n  var len = ary.length;\n  var cache = {};\n  for (var i = 0; i < len; i++) {\n    if (!cache[ary[i]]) {\n      cache[ary[i]] = true;\n    } else {\n      return true;\n    }\n  }\n  return false;\n};\n\n/* @todo consider to rename this function into `getInterpolator` */\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n  if (isNumber(numberA) && isNumber(numberB)) {\n    return function (t) {\n      return numberA + t * (numberB - numberA);\n    };\n  }\n  return function () {\n    return numberB;\n  };\n};\nexport function findEntryInArray(ary, specifiedKey, specifiedValue) {\n  if (!ary || !ary.length) {\n    return null;\n  }\n  return ary.find(function (entry) {\n    return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : get(entry, specifiedKey)) === specifiedValue;\n  });\n}\n\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\nexport var getLinearRegression = function getLinearRegression(data) {\n  if (!data || !data.length) {\n    return null;\n  }\n  var len = data.length;\n  var xsum = 0;\n  var ysum = 0;\n  var xysum = 0;\n  var xxsum = 0;\n  var xmin = Infinity;\n  var xmax = -Infinity;\n  var xcurrent = 0;\n  var ycurrent = 0;\n  for (var i = 0; i < len; i++) {\n    xcurrent = data[i].cx || 0;\n    ycurrent = data[i].cy || 0;\n    xsum += xcurrent;\n    ysum += ycurrent;\n    xysum += xcurrent * ycurrent;\n    xxsum += xcurrent * xcurrent;\n    xmin = Math.min(xmin, xcurrent);\n    xmax = Math.max(xmax, xcurrent);\n  }\n  var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n  return {\n    xmin: xmin,\n    xmax: xmax,\n    a: a,\n    b: (ysum - a * xsum) / len\n  };\n};","var parseIsSsrByDefault = function parseIsSsrByDefault() {\n  return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nexport var Global = {\n  isSsr: parseIsSsrByDefault(),\n  get: function get(key) {\n    return Global[key];\n  },\n  set: function set(key, value) {\n    if (typeof key === 'string') {\n      Global[key] = value;\n    } else {\n      var keys = Object.keys(key);\n      if (keys && keys.length) {\n        keys.forEach(function (k) {\n          Global[k] = key[k];\n        });\n      }\n    }\n  }\n};","/* eslint no-console: 0 */\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format) {\n  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n    args[_key - 2] = arguments[_key];\n  }\n  if (isDev && typeof console !== 'undefined' && console.warn) {\n    if (format === undefined) {\n      console.warn('LogUtils requires an error message argument');\n    }\n    if (!condition) {\n      if (format === undefined) {\n        console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n      } else {\n        var argIndex = 0;\n        console.warn(format.replace(/%s/g, function () {\n          return args[argIndex++];\n        }));\n      }\n    }\n  }\n};","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nimport isNil from 'lodash/isNil';\nimport { isValidElement } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n  return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n  return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n  return {\n    x: cx + Math.cos(-RADIAN * angle) * radius,\n    y: cy + Math.sin(-RADIAN * angle) * radius\n  };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n  return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n\n/**\n * Calculate the scale function, position, width, height of axes\n * @param  {Object} props     Latest props\n * @param  {Object} axisMap   The configuration of axes\n * @param  {Object} offset    The offset of main part in the svg element\n * @param  {Object} axisType  The type of axes, radius-axis or angle-axis\n * @param  {String} chartName The name of chart\n * @return {Object} Configuration\n */\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n  var width = props.width,\n    height = props.height;\n  var startAngle = props.startAngle,\n    endAngle = props.endAngle;\n  var cx = getPercentValue(props.cx, width, width / 2);\n  var cy = getPercentValue(props.cy, height, height / 2);\n  var maxRadius = getMaxRadius(width, height, offset);\n  var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n  var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n  var ids = Object.keys(axisMap);\n  return ids.reduce(function (result, id) {\n    var axis = axisMap[id];\n    var domain = axis.domain,\n      reversed = axis.reversed;\n    var range;\n    if (isNil(axis.range)) {\n      if (axisType === 'angleAxis') {\n        range = [startAngle, endAngle];\n      } else if (axisType === 'radiusAxis') {\n        range = [innerRadius, outerRadius];\n      }\n      if (reversed) {\n        range = [range[1], range[0]];\n      }\n    } else {\n      range = axis.range;\n      var _range = range;\n      var _range2 = _slicedToArray(_range, 2);\n      startAngle = _range2[0];\n      endAngle = _range2[1];\n    }\n    var _parseScale = parseScale(axis, chartName),\n      realScaleType = _parseScale.realScaleType,\n      scale = _parseScale.scale;\n    scale.domain(domain).range(range);\n    checkDomainOfScale(scale);\n    var ticks = getTicksOfScale(scale, _objectSpread(_objectSpread({}, axis), {}, {\n      realScaleType: realScaleType\n    }));\n    var finalAxis = _objectSpread(_objectSpread(_objectSpread({}, axis), ticks), {}, {\n      range: range,\n      radius: outerRadius,\n      realScaleType: realScaleType,\n      scale: scale,\n      cx: cx,\n      cy: cy,\n      innerRadius: innerRadius,\n      outerRadius: outerRadius,\n      startAngle: startAngle,\n      endAngle: endAngle\n    });\n    return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, id, finalAxis));\n  }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n  var x1 = point.x,\n    y1 = point.y;\n  var x2 = anotherPoint.x,\n    y2 = anotherPoint.y;\n  return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n  var x = _ref.x,\n    y = _ref.y;\n  var cx = _ref2.cx,\n    cy = _ref2.cy;\n  var radius = distanceBetweenPoints({\n    x: x,\n    y: y\n  }, {\n    x: cx,\n    y: cy\n  });\n  if (radius <= 0) {\n    return {\n      radius: radius\n    };\n  }\n  var cos = (x - cx) / radius;\n  var angleInRadian = Math.acos(cos);\n  if (y > cy) {\n    angleInRadian = 2 * Math.PI - angleInRadian;\n  }\n  return {\n    radius: radius,\n    angle: radianToDegree(angleInRadian),\n    angleInRadian: angleInRadian\n  };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n  var startAngle = _ref3.startAngle,\n    endAngle = _ref3.endAngle;\n  var startCnt = Math.floor(startAngle / 360);\n  var endCnt = Math.floor(endAngle / 360);\n  var min = Math.min(startCnt, endCnt);\n  return {\n    startAngle: startAngle - min * 360,\n    endAngle: endAngle - min * 360\n  };\n};\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n  var startAngle = _ref4.startAngle,\n    endAngle = _ref4.endAngle;\n  var startCnt = Math.floor(startAngle / 360);\n  var endCnt = Math.floor(endAngle / 360);\n  var min = Math.min(startCnt, endCnt);\n  return angle + min * 360;\n};\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n  var x = _ref5.x,\n    y = _ref5.y;\n  var _getAngleOfPoint = getAngleOfPoint({\n      x: x,\n      y: y\n    }, sector),\n    radius = _getAngleOfPoint.radius,\n    angle = _getAngleOfPoint.angle;\n  var innerRadius = sector.innerRadius,\n    outerRadius = sector.outerRadius;\n  if (radius < innerRadius || radius > outerRadius) {\n    return false;\n  }\n  if (radius === 0) {\n    return true;\n  }\n  var _formatAngleOfSector = formatAngleOfSector(sector),\n    startAngle = _formatAngleOfSector.startAngle,\n    endAngle = _formatAngleOfSector.endAngle;\n  var formatAngle = angle;\n  var inRange;\n  if (startAngle <= endAngle) {\n    while (formatAngle > endAngle) {\n      formatAngle -= 360;\n    }\n    while (formatAngle < startAngle) {\n      formatAngle += 360;\n    }\n    inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n  } else {\n    while (formatAngle > startAngle) {\n      formatAngle -= 360;\n    }\n    while (formatAngle < endAngle) {\n      formatAngle += 360;\n    }\n    inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n  }\n  if (inRange) {\n    return _objectSpread(_objectSpread({}, sector), {}, {\n      radius: radius,\n      angle: reverseFormatAngleOfSetor(formatAngle, sector)\n    });\n  }\n  return null;\n};\nexport var getTickClassName = function getTickClassName(tick) {\n  return ! /*#__PURE__*/isValidElement(tick) && !isFunction(tick) && typeof tick !== 'boolean' ? tick.className : '';\n};","var _excluded = [\"children\"],\n  _excluded2 = [\"children\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; 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; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport get from 'lodash/get';\nimport isNil from 'lodash/isNil';\nimport isString from 'lodash/isString';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport { Children, isValidElement } from 'react';\nimport { isFragment } from 'react-is';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nimport { FilteredElementKeyMap, SVGElementPropKeys, EventKeys } from './types';\nvar REACT_BROWSER_EVENT_MAP = {\n  click: 'onClick',\n  mousedown: 'onMouseDown',\n  mouseup: 'onMouseUp',\n  mouseover: 'onMouseOver',\n  mousemove: 'onMouseMove',\n  mouseout: 'onMouseOut',\n  mouseenter: 'onMouseEnter',\n  mouseleave: 'onMouseLeave',\n  touchcancel: 'onTouchCancel',\n  touchend: 'onTouchEnd',\n  touchmove: 'onTouchMove',\n  touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n\n/**\n * Get the display name of a component\n * @param  {Object} Comp Specified Component\n * @return {String}      Display name of Component\n */\nexport var getDisplayName = function getDisplayName(Comp) {\n  if (typeof Comp === 'string') {\n    return Comp;\n  }\n  if (!Comp) {\n    return '';\n  }\n  return Comp.displayName || Comp.name || 'Component';\n};\n\n// `toArray` gets called multiple times during the render\n// so we can memoize last invocation (since reference to `children` is the same)\nvar lastChildren = null;\nvar lastResult = null;\nexport var toArray = function toArray(children) {\n  if (children === lastChildren && Array.isArray(lastResult)) {\n    return lastResult;\n  }\n  var result = [];\n  Children.forEach(children, function (child) {\n    if (isNil(child)) return;\n    if (isFragment(child)) {\n      result = result.concat(toArray(child.props.children));\n    } else {\n      // @ts-expect-error this could still be Iterable<ReactNode> and TS does not like that\n      result.push(child);\n    }\n  });\n  lastResult = result;\n  lastChildren = children;\n  return result;\n};\n\n/*\n * Find and return all matched children by type.\n * `type` must be a React.ComponentType\n */\nexport function findAllByType(children, type) {\n  var result = [];\n  var types = [];\n  if (Array.isArray(type)) {\n    types = type.map(function (t) {\n      return getDisplayName(t);\n    });\n  } else {\n    types = [getDisplayName(type)];\n  }\n  toArray(children).forEach(function (child) {\n    var childType = get(child, 'type.displayName') || get(child, 'type.name');\n    if (types.indexOf(childType) !== -1) {\n      result.push(child);\n    }\n  });\n  return result;\n}\n\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` must be a React.ComponentType\n */\nexport function findChildByType(children, type) {\n  var result = findAllByType(children, type);\n  return result && result[0];\n}\n\n/*\n * Create a new array of children excluding the ones matched the type\n */\nexport var withoutType = function withoutType(children, type) {\n  var newChildren = [];\n  var types;\n  if (Array.isArray(type)) {\n    types = type.map(function (t) {\n      return getDisplayName(t);\n    });\n  } else {\n    types = [getDisplayName(type)];\n  }\n  toArray(children).forEach(function (child) {\n    var displayName = get(child, 'type.displayName');\n    if (displayName && types.indexOf(displayName) !== -1) {\n      return;\n    }\n    newChildren.push(child);\n  });\n  return newChildren;\n};\n\n/**\n * validate the width and height props of a chart element\n * @param  {Object} el A chart element\n * @return {Boolean}   true If the props width and height are number, and greater than 0\n */\nexport var validateWidthHeight = function validateWidthHeight(el) {\n  if (!el || !el.props) {\n    return false;\n  }\n  var _el$props = el.props,\n    width = _el$props.width,\n    height = _el$props.height;\n  if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n    return false;\n  }\n  return true;\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\nvar isSvgElement = function isSvgElement(child) {\n  return child && child.type && isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\nexport var hasClipDot = function hasClipDot(dot) {\n  return dot && _typeof(dot) === 'object' && 'clipDot' in dot;\n};\n\n/**\n * Checks if the property is valid to spread onto an SVG element or onto a specific component\n * @param {unknown} property property value currently being compared\n * @param {string} key property key currently being compared\n * @param {boolean} includeEvents if events are included in spreadable props\n * @param {boolean} svgElementType checks against map of SVG element types to attributes\n * @returns {boolean} is prop valid\n */\nexport var isValidSpreadableProp = function isValidSpreadableProp(property, key, includeEvents, svgElementType) {\n  var _FilteredElementKeyMa;\n  /**\n   * If the svg element type is explicitly included, check against the filtered element key map\n   * to determine if there are attributes that should only exist on that element type.\n   * @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.\n   */\n  var matchingElementTypeKeys = (_FilteredElementKeyMa = FilteredElementKeyMap === null || FilteredElementKeyMap === void 0 ? void 0 : FilteredElementKeyMap[svgElementType]) !== null && _FilteredElementKeyMa !== void 0 ? _FilteredElementKeyMa : [];\n  return !isFunction(property) && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);\n};\n\n/**\n * Filter all the svg elements of children\n * @param  {Array} children The children of a react element\n * @return {Array}          All the svg elements\n */\nexport var filterSvgElements = function filterSvgElements(children) {\n  var svgElements = [];\n  toArray(children).forEach(function (entry) {\n    if (isSvgElement(entry)) {\n      svgElements.push(entry);\n    }\n  });\n  return svgElements;\n};\nexport var filterProps = function filterProps(props, includeEvents, svgElementType) {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n  var inputProps = props;\n  if ( /*#__PURE__*/isValidElement(props)) {\n    inputProps = props.props;\n  }\n  if (!isObject(inputProps)) {\n    return null;\n  }\n  var out = {};\n\n  /**\n   * Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.\n   * Items filtered out are as follows:\n   *   - functions in properties that are SVG attributes (functions are included when includeEvents is true)\n   *   - props that are SVG attributes but don't matched the passed svgElementType\n   *   - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)\n   */\n  Object.keys(inputProps).forEach(function (key) {\n    var _inputProps;\n    if (isValidSpreadableProp((_inputProps = inputProps) === null || _inputProps === void 0 ? void 0 : _inputProps[key], key, includeEvents, svgElementType)) {\n      out[key] = inputProps[key];\n    }\n  });\n  return out;\n};\n\n/**\n * Wether props of children changed\n * @param  {Object} nextChildren The latest children\n * @param  {Object} prevChildren The prev children\n * @return {Boolean}             equal or not\n */\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n  if (nextChildren === prevChildren) {\n    return true;\n  }\n  var count = Children.count(nextChildren);\n  if (count !== Children.count(prevChildren)) {\n    return false;\n  }\n  if (count === 0) {\n    return true;\n  }\n  if (count === 1) {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    return isSingleChildEqual(Array.isArray(nextChildren) ? nextChildren[0] : nextChildren, Array.isArray(prevChildren) ? prevChildren[0] : prevChildren);\n  }\n  for (var i = 0; i < count; i++) {\n    var nextChild = nextChildren[i];\n    var prevChild = prevChildren[i];\n    if (Array.isArray(nextChild) || Array.isArray(prevChild)) {\n      if (!isChildrenEqual(nextChild, prevChild)) {\n        return false;\n      }\n      // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    } else if (!isSingleChildEqual(nextChild, prevChild)) {\n      return false;\n    }\n  }\n  return true;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n  if (isNil(nextChild) && isNil(prevChild)) {\n    return true;\n  }\n  if (!isNil(nextChild) && !isNil(prevChild)) {\n    var _ref = nextChild.props || {},\n      nextChildren = _ref.children,\n      nextProps = _objectWithoutProperties(_ref, _excluded);\n    var _ref2 = prevChild.props || {},\n      prevChildren = _ref2.children,\n      prevProps = _objectWithoutProperties(_ref2, _excluded2);\n    if (nextChildren && prevChildren) {\n      return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n    }\n    if (!nextChildren && !prevChildren) {\n      return shallowEqual(nextProps, prevProps);\n    }\n    return false;\n  }\n  return false;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n  var elements = [];\n  var record = {};\n  toArray(children).forEach(function (child, index) {\n    if (isSvgElement(child)) {\n      elements.push(child);\n    } else if (child) {\n      var displayName = getDisplayName(child.type);\n      var _ref3 = renderMap[displayName] || {},\n        handler = _ref3.handler,\n        once = _ref3.once;\n      if (handler && (!once || !record[displayName])) {\n        var results = handler(child, displayName, index);\n        elements.push(results);\n        record[displayName] = true;\n      }\n    }\n  });\n  return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n  var type = e && e.type;\n  if (type && REACT_BROWSER_EVENT_MAP[type]) {\n    return REACT_BROWSER_EVENT_MAP[type];\n  }\n  return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n  return toArray(children).indexOf(child);\n};","export function shallowEqual(a, b) {\n  /* eslint-disable no-restricted-syntax */\n  for (var key in a) {\n    if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n      return false;\n    }\n  }\n  for (var _key in b) {\n    if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n      return false;\n    }\n  }\n  return true;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { Legend } from '../component/Legend';\nimport { getMainColorOfGraphicItem } from './ChartUtils';\nimport { findChildByType } from './ReactUtils';\nexport var getLegendProps = function getLegendProps(_ref) {\n  var children = _ref.children,\n    formattedGraphicalItems = _ref.formattedGraphicalItems,\n    legendWidth = _ref.legendWidth,\n    legendContent = _ref.legendContent;\n  var legendItem = findChildByType(children, Legend);\n  if (!legendItem) {\n    return null;\n  }\n  var legendDefaultProps = Legend.defaultProps;\n  var legendProps = legendDefaultProps !== undefined ? _objectSpread(_objectSpread({}, legendDefaultProps), legendItem.props) : {};\n  var legendData;\n  if (legendItem.props && legendItem.props.payload) {\n    legendData = legendItem.props && legendItem.props.payload;\n  } else if (legendContent === 'children') {\n    legendData = (formattedGraphicalItems || []).reduce(function (result, _ref2) {\n      var item = _ref2.item,\n        props = _ref2.props;\n      var data = props.sectors || props.data || [];\n      return result.concat(data.map(function (entry) {\n        return {\n          type: legendItem.props.iconType || item.props.legendType,\n          value: entry.name,\n          color: entry.fill,\n          payload: entry\n        };\n      }));\n    }, []);\n  } else {\n    legendData = (formattedGraphicalItems || []).map(function (_ref3) {\n      var item = _ref3.item;\n      var itemDefaultProps = item.type.defaultProps;\n      var itemProps = itemDefaultProps !== undefined ? _objectSpread(_objectSpread({}, itemDefaultProps), item.props) : {};\n      var dataKey = itemProps.dataKey,\n        name = itemProps.name,\n        legendType = itemProps.legendType,\n        hide = itemProps.hide;\n      return {\n        inactive: hide,\n        dataKey: dataKey,\n        type: legendProps.iconType || legendType || 'square',\n        color: getMainColorOfGraphicItem(item),\n        value: name || dataKey,\n        // @ts-expect-error property strokeDasharray is required in Payload but optional in props\n        payload: itemProps\n      };\n    });\n  }\n  return _objectSpread(_objectSpread(_objectSpread({}, legendProps), Legend.getWithHeight(legendItem, legendWidth)), {}, {\n    payload: legendData,\n    item: legendItem\n  });\n};","import uniqBy from 'lodash/uniqBy';\nimport isFunction from 'lodash/isFunction';\n\n/**\n * This is configuration option that decides how to filter for unique values only:\n *\n * - `false` means \"no filter\"\n * - `true` means \"use recharts default filter\"\n * - function means \"use return of this function as the default key\"\n */\n\nexport function getUniqPayload(payload, option, defaultUniqBy) {\n  if (option === true) {\n    return uniqBy(payload, defaultUniqBy);\n  }\n  if (isFunction(option)) {\n    return uniqBy(payload, option);\n  }\n  return payload;\n}","function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nimport { isValidElement } from 'react';\nimport isObject from 'lodash/isObject';\n\n/**\n * Determines how values are stacked:\n *\n * - `none` is the default, it adds values on top of each other. No smarts. Negative values will overlap.\n * - `expand` make it so that the values always add up to 1 - so the chart will look like a rectangle.\n * - `wiggle` and `silhouette` tries to keep the chart centered.\n * - `sign` stacks positive values above zero and negative values below zero. Similar to `none` but handles negatives.\n * - `positive` ignores all negative values, and then behaves like \\`none\\`.\n *\n * Also see https://d3js.org/d3-shape/stack#stack-offsets\n * (note that the `diverging` offset in d3 is named `sign` in recharts)\n */\n\n//\n// Event Handler Types -- Copied from @types/react/index.d.ts and adapted for Props.\n//\n\nvar SVGContainerPropKeys = ['viewBox', 'children'];\nexport var SVGElementPropKeys = ['aria-activedescendant', 'aria-atomic', 'aria-autocomplete', 'aria-busy', 'aria-checked', 'aria-colcount', 'aria-colindex', 'aria-colspan', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-errormessage', 'aria-expanded', 'aria-flowto', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-level', 'aria-live', 'aria-modal', 'aria-multiline', 'aria-multiselectable', 'aria-orientation', 'aria-owns', 'aria-placeholder', 'aria-posinset', 'aria-pressed', 'aria-readonly', 'aria-relevant', 'aria-required', 'aria-roledescription', 'aria-rowcount', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-setsize', 'aria-sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'className', 'color', 'height', 'id', 'lang', 'max', 'media', 'method', 'min', 'name', 'style',\n/*\n * removed 'type' SVGElementPropKey because we do not currently use any SVG elements\n * that can use it and it conflicts with the recharts prop 'type'\n * https://github.com/recharts/recharts/pull/3327\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/type\n */\n// 'type',\n'target', 'width', 'role', 'tabIndex', 'accentHeight', 'accumulate', 'additive', 'alignmentBaseline', 'allowReorder', 'alphabetic', 'amplitude', 'arabicForm', 'ascent', 'attributeName', 'attributeType', 'autoReverse', 'azimuth', 'baseFrequency', 'baselineShift', 'baseProfile', 'bbox', 'begin', 'bias', 'by', 'calcMode', 'capHeight', 'clip', 'clipPath', 'clipPathUnits', 'clipRule', 'colorInterpolation', 'colorInterpolationFilters', 'colorProfile', 'colorRendering', 'contentScriptType', 'contentStyleType', 'cursor', 'cx', 'cy', 'd', 'decelerate', 'descent', 'diffuseConstant', 'direction', 'display', 'divisor', 'dominantBaseline', 'dur', 'dx', 'dy', 'edgeMode', 'elevation', 'enableBackground', 'end', 'exponent', 'externalResourcesRequired', 'fill', 'fillOpacity', 'fillRule', 'filter', 'filterRes', 'filterUnits', 'floodColor', 'floodOpacity', 'focusable', 'fontFamily', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontWeight', 'format', 'from', 'fx', 'fy', 'g1', 'g2', 'glyphName', 'glyphOrientationHorizontal', 'glyphOrientationVertical', 'glyphRef', 'gradientTransform', 'gradientUnits', 'hanging', 'horizAdvX', 'horizOriginX', 'href', 'ideographic', 'imageRendering', 'in2', 'in', 'intercept', 'k1', 'k2', 'k3', 'k4', 'k', 'kernelMatrix', 'kernelUnitLength', 'kerning', 'keyPoints', 'keySplines', 'keyTimes', 'lengthAdjust', 'letterSpacing', 'lightingColor', 'limitingConeAngle', 'local', 'markerEnd', 'markerHeight', 'markerMid', 'markerStart', 'markerUnits', 'markerWidth', 'mask', 'maskContentUnits', 'maskUnits', 'mathematical', 'mode', 'numOctaves', 'offset', 'opacity', 'operator', 'order', 'orient', 'orientation', 'origin', 'overflow', 'overlinePosition', 'overlineThickness', 'paintOrder', 'panose1', 'pathLength', 'patternContentUnits', 'patternTransform', 'patternUnits', 'pointerEvents', 'pointsAtX', 'pointsAtY', 'pointsAtZ', 'preserveAlpha', 'preserveAspectRatio', 'primitiveUnits', 'r', 'radius', 'refX', 'refY', 'renderingIntent', 'repeatCount', 'repeatDur', 'requiredExtensions', 'requiredFeatures', 'restart', 'result', 'rotate', 'rx', 'ry', 'seed', 'shapeRendering', 'slope', 'spacing', 'specularConstant', 'specularExponent', 'speed', 'spreadMethod', 'startOffset', 'stdDeviation', 'stemh', 'stemv', 'stitchTiles', 'stopColor', 'stopOpacity', 'strikethroughPosition', 'strikethroughThickness', 'string', 'stroke', 'strokeDasharray', 'strokeDashoffset', 'strokeLinecap', 'strokeLinejoin', 'strokeMiterlimit', 'strokeOpacity', 'strokeWidth', 'surfaceScale', 'systemLanguage', 'tableValues', 'targetX', 'targetY', 'textAnchor', 'textDecoration', 'textLength', 'textRendering', 'to', 'transform', 'u1', 'u2', 'underlinePosition', 'underlineThickness', 'unicode', 'unicodeBidi', 'unicodeRange', 'unitsPerEm', 'vAlphabetic', 'values', 'vectorEffect', 'version', 'vertAdvY', 'vertOriginX', 'vertOriginY', 'vHanging', 'vIdeographic', 'viewTarget', 'visibility', 'vMathematical', 'widths', 'wordSpacing', 'writingMode', 'x1', 'x2', 'x', 'xChannelSelector', 'xHeight', 'xlinkActuate', 'xlinkArcrole', 'xlinkHref', 'xlinkRole', 'xlinkShow', 'xlinkTitle', 'xlinkType', 'xmlBase', 'xmlLang', 'xmlns', 'xmlnsXlink', 'xmlSpace', 'y1', 'y2', 'y', 'yChannelSelector', 'z', 'zoomAndPan', 'ref', 'key', 'angle'];\nvar PolyElementKeys = ['points', 'pathLength'];\n\n/** svg element types that have specific attribute filtration requirements */\n\n/** map of svg element types to unique svg attributes that belong to that element */\nexport var FilteredElementKeyMap = {\n  svg: SVGContainerPropKeys,\n  polygon: PolyElementKeys,\n  polyline: PolyElementKeys\n};\nexport var EventKeys = ['dangerouslySetInnerHTML', 'onCopy', 'onCopyCapture', 'onCut', 'onCutCapture', 'onPaste', 'onPasteCapture', 'onCompositionEnd', 'onCompositionEndCapture', 'onCompositionStart', 'onCompositionStartCapture', 'onCompositionUpdate', 'onCompositionUpdateCapture', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onChangeCapture', 'onBeforeInput', 'onBeforeInputCapture', 'onInput', 'onInputCapture', 'onReset', 'onResetCapture', 'onSubmit', 'onSubmitCapture', 'onInvalid', 'onInvalidCapture', 'onLoad', 'onLoadCapture', 'onError', 'onErrorCapture', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyPressCapture', 'onKeyUp', 'onKeyUpCapture', 'onAbort', 'onAbortCapture', 'onCanPlay', 'onCanPlayCapture', 'onCanPlayThrough', 'onCanPlayThroughCapture', 'onDurationChange', 'onDurationChangeCapture', 'onEmptied', 'onEmptiedCapture', 'onEncrypted', 'onEncryptedCapture', 'onEnded', 'onEndedCapture', 'onLoadedData', 'onLoadedDataCapture', 'onLoadedMetadata', 'onLoadedMetadataCapture', 'onLoadStart', 'onLoadStartCapture', 'onPause', 'onPauseCapture', 'onPlay', 'onPlayCapture', 'onPlaying', 'onPlayingCapture', 'onProgress', 'onProgressCapture', 'onRateChange', 'onRateChangeCapture', 'onSeeked', 'onSeekedCapture', 'onSeeking', 'onSeekingCapture', 'onStalled', 'onStalledCapture', 'onSuspend', 'onSuspendCapture', 'onTimeUpdate', 'onTimeUpdateCapture', 'onVolumeChange', 'onVolumeChangeCapture', 'onWaiting', 'onWaitingCapture', 'onAuxClick', 'onAuxClickCapture', 'onClick', 'onClickCapture', 'onContextMenu', 'onContextMenuCapture', 'onDoubleClick', 'onDoubleClickCapture', 'onDrag', 'onDragCapture', 'onDragEnd', 'onDragEndCapture', 'onDragEnter', 'onDragEnterCapture', 'onDragExit', 'onDragExitCapture', 'onDragLeave', 'onDragLeaveCapture', 'onDragOver', 'onDragOverCapture', 'onDragStart', 'onDragStartCapture', 'onDrop', 'onDropCapture', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseMoveCapture', 'onMouseOut', 'onMouseOutCapture', 'onMouseOver', 'onMouseOverCapture', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onSelectCapture', 'onTouchCancel', 'onTouchCancelCapture', 'onTouchEnd', 'onTouchEndCapture', 'onTouchMove', 'onTouchMoveCapture', 'onTouchStart', 'onTouchStartCapture', 'onPointerDown', 'onPointerDownCapture', 'onPointerMove', 'onPointerMoveCapture', 'onPointerUp', 'onPointerUpCapture', 'onPointerCancel', 'onPointerCancelCapture', 'onPointerEnter', 'onPointerEnterCapture', 'onPointerLeave', 'onPointerLeaveCapture', 'onPointerOver', 'onPointerOverCapture', 'onPointerOut', 'onPointerOutCapture', 'onGotPointerCapture', 'onGotPointerCaptureCapture', 'onLostPointerCapture', 'onLostPointerCaptureCapture', 'onScroll', 'onScrollCapture', 'onWheel', 'onWheelCapture', 'onAnimationStart', 'onAnimationStartCapture', 'onAnimationEnd', 'onAnimationEndCapture', 'onAnimationIteration', 'onAnimationIterationCapture', 'onTransitionEnd', 'onTransitionEndCapture'];\n\n/** The type of easing function to use for animations */\n\n/** Specifies the duration of animation, the unit of this option is ms. */\n\n/** the offset of a chart, which define the blank space all around */\n\n/**\n * The domain of axis.\n * This is the definition\n *\n * Numeric domain is always defined by an array of exactly two values, for the min and the max of the axis.\n * Categorical domain is defined as array of all possible values.\n *\n * Can be specified in many ways:\n * - array of numbers\n * - with special strings like 'dataMin' and 'dataMax'\n * - with special string math like 'dataMin - 100'\n * - with keyword 'auto'\n * - or a function\n * - array of functions\n * - or a combination of the above\n */\n\n/**\n * NumberDomain is an evaluated {@link AxisDomain}.\n * Unlike {@link AxisDomain}, it has no variety - it's a tuple of two number.\n * This is after all the keywords and functions were evaluated and what is left is [min, max].\n *\n * Know that the min, max values are not guaranteed to be nice numbers - values like -Infinity or NaN are possible.\n *\n * There are also `category` axes that have different things than numbers in their domain.\n */\n\n/** The props definition of base axis */\n\n/** Defines how ticks are placed and whether / how tick collisions are handled.\n * 'preserveStart' keeps the left tick on collision and ensures that the first tick is always shown.\n * 'preserveEnd' keeps the right tick on collision and ensures that the last tick is always shown.\n * 'preserveStartEnd' keeps the left tick on collision and ensures that the first and last ticks are always shown.\n * 'equidistantPreserveStart' selects a number N such that every nTh tick will be shown without collision.\n */\n\nexport var adaptEventHandlers = function adaptEventHandlers(props, newHandler) {\n  if (!props || typeof props === 'function' || typeof props === 'boolean') {\n    return null;\n  }\n  var inputProps = props;\n  if ( /*#__PURE__*/isValidElement(props)) {\n    inputProps = props.props;\n  }\n  if (!isObject(inputProps)) {\n    return null;\n  }\n  var out = {};\n  Object.keys(inputProps).forEach(function (key) {\n    if (EventKeys.includes(key)) {\n      out[key] = newHandler || function (e) {\n        return inputProps[key](inputProps, e);\n      };\n    }\n  });\n  return out;\n};\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n  return function (e) {\n    originalHandler(data, index, e);\n    return null;\n  };\n};\nexport var adaptEventsOfChild = function adaptEventsOfChild(props, data, index) {\n  if (!isObject(props) || _typeof(props) !== 'object') {\n    return null;\n  }\n  var out = null;\n  Object.keys(props).forEach(function (key) {\n    var item = props[key];\n    if (EventKeys.includes(key) && typeof item === 'function') {\n      if (!out) out = {};\n      out[key] = getEventHandlerOfChild(item, data, index);\n    }\n  });\n  return out;\n};","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n"],"names":["globalScope","ONE","MAX_DIGITS","Decimal","precision","rounding","toExpNeg","toExpPos","LN10","external","decimalError","invalidArgument","exponentOutOfRange","mathfloor","Math","floor","mathpow","pow","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","MAX_E","P","add","x","y","carry","d","e","i","k","len","xd","yd","Ctor","constructor","pr","s","round","slice","length","ceil","reverse","push","unshift","pop","checkInt32","min","max","Error","digitsToString","ws","indexOfLastWord","str","w","getZeroString","absoluteValue","abs","this","comparedTo","cmp","j","xdL","ydL","decimalPlaces","dp","dividedBy","div","divide","dividedToIntegerBy","idiv","equals","eq","exponent","getBase10Exponent","greaterThan","gt","greaterThanOrEqualTo","gte","isInteger","isint","isNegative","isneg","isPositive","ispos","isZero","lessThan","lt","lessThanOrEqualTo","lte","logarithm","log","base","r","wpr","ln","minus","sub","subtract","modulo","mod","q","times","naturalExponential","exp","naturalLogarithm","negated","neg","plus","sd","z","squareRoot","sqrt","n","t","toExponential","indexOf","toString","mul","rL","shift","toDecimalPlaces","todp","rm","toFixed","toInteger","toint","toNumber","toPower","sign","yIsInt","yn","truncate","toPrecision","toSignificantDigits","tosd","valueOf","val","toJSON","multiplyInteger","temp","compare","a","b","aL","bL","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","denominator","sum","getLn10","zs","c","c0","numerator","x2","charAt","parseDecimal","replace","search","substring","charCodeAt","rd","doRound","xdi","xe","xLTy","isExp","arr","config","obj","p","v","ps","clone","value","test","prototype","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","set","hasOwnProperty","has","Object","prefix","Events","EE","fn","context","once","addListener","emitter","event","TypeError","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","create","__proto__","eventNames","events","name","names","call","getOwnPropertySymbols","concat","listeners","handlers","l","ee","Array","listenerCount","emit","a1","a2","a3","a4","a5","args","arguments","removeListener","undefined","apply","on","removeAllListeners","off","prefixed","module","exports","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","clear","entry","get","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Promise","Set","setCacheAdd","setCacheHas","SetCache","values","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","data","size","Symbol","Uint8Array","WeakMap","func","thisArg","array","predicate","resIndex","result","baseIndexOf","comparator","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","key","iteratee","offset","string","split","defineProperty","object","baseForOwn","baseEach","createBaseEach","collection","isSymbol","current","computed","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","keys","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","other","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","source","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","nativeCeil","nativeMax","start","end","step","overRest","setToString","constant","baseSetToString","comparer","sort","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","includes","isCommon","seen","outer","seenIndex","cache","stringToPath","baseSlice","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","coreJsData","eachFunc","iterable","props","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","join","findIndexFunc","baseRange","isIterateeCall","toFinite","noop","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","symbolValueOf","tag","byteLength","byteOffset","buffer","message","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","g","baseGetAllKeys","getSymbols","isKeyable","map","baseIsNative","getValue","getPrototype","overArg","getPrototypeOf","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","ctorString","hasFunc","reHasUnicode","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","type","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","exec","IE_PROTO","assocIndexOf","splice","getMapData","forEach","memoize","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","require","binding","transform","arg","otherArgs","freeSelf","self","root","shortOut","nativeNow","Date","now","count","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","match","number","quote","subString","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","nativeMin","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","arrayEvery","baseEvery","guard","find","createFind","defaultValue","baseHasIn","hasPath","baseIsArguments","stubFalse","Buffer","isNumber","objectCtorString","proto","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","baseAssignValue","baseExtremum","baseGt","resolver","memoized","Cache","baseLt","baseProperty","basePropertyDeep","range","createRange","baseSome","baseOrderBy","baseRest","sortBy","debounce","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isBinary","baseUniq","upperFirst","createCaseFirst","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","u","for","f","h","m","$$typeof","isFragment","isValidElementType","getModuleId","typeOf","getOwnPropertyNames","combineComparators","comparatorA","comparatorB","state","createIsCircular","areItemsEqual","cachedA","cachedB","delete","getStrictProperties","hasOwn","sameValueZeroEqual","OWNER","getOwnPropertyDescriptor","areArraysEqual","areDatesEqual","getTime","areMapsEqual","aResult","bResult","matchedIndices","aIterable","next","done","bIterable","hasMatch","matchIndex","_a","aKey","aValue","_b","bKey","bValue","areObjectsEqual","properties","areObjectsEqualStrict","descriptorA","descriptorB","configurable","enumerable","writable","arePrimitiveWrappersEqual","areRegExpsEqual","flags","areSetsEqual","areTypedArraysEqual","ARGUMENTS_TAG","BOOLEAN_TAG","DATE_TAG","MAP_TAG","NUMBER_TAG","OBJECT_TAG","REG_EXP_TAG","SET_TAG","STRING_TAG","isView","assign","bind","deepEqual","createCustomEqual","strict","circular","createInternalComparator","createCustomInternalComparator","createState","createCustomConfig","areArraysEqual$1","areMapsEqual$1","areObjectsEqual$1","areSetsEqual$1","createEqualityComparatorConfig","then","createEqualityComparator","meta","createIsEqual","_indexOrKeyA","_indexOrKeyB","_parentA","_parentB","setRafTimeout","callback","timeout","currTime","requestAnimationFrame","shouldUpdate","safeRequestAnimationFrame","_typeof","o","iterator","_toArray","_arrayWithHoles","iter","from","_iterableToArray","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","createAnimateManager","handleChange","shouldStop","setStyle","_style","_styles","curr","restStyles","stop","style","subscribe","_handleChange","ownKeys","filter","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","input","hint","prim","toPrimitive","res","Number","_toPrimitive","_toPropertyKey","param","mapObject","reduce","getTransitionVal","duration","easing","prop","toLowerCase","_slicedToArray","return","_iterableToArrayLimit","_toConsumableArray","_arrayWithoutHoles","_nonIterableSpread","ACCURACY","cubicBezierFactor","c1","c2","multyTime","params","pre","cubicBezier","configBezier","_len","_key","x1","y1","y2","_easing$1$split$0$spl2","parseFloat","every","num","curveX","curveY","derCurveX","newParams","bezier","_t","evalT","derVal","isStepper","configEasing","_len2","_key2","_config$stiff","stiff","_config$damping","damping","_config$dt","dt","stepper","currX","destX","currV","newV","newX","configSpring","alpha","begin","needContinue","_ref","to","calStepperVals","preVals","steps","nextStepVals","_easing2","velocity","render","preObj","nextObj","preTime","beginTime","interKeys","timingStyle","stepperStyle","cafId","update","currStyle","finalStyle","cancelAnimationFrame","_excluded","_objectWithoutProperties","excluded","target","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","_defineProperties","descriptor","_setPrototypeOf","setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","Animate","_PureComponent","subClass","superClass","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_this$props","isActive","attributeName","children","handleStyleChange","changeStyle","_this$props2","canBegin","mounted","runAnimation","prevProps","_this$props3","shouldReAnimate","currentFrom","isTriggered","manager","stopJSAnimation","_newState","setState","newState","onAnimationEnd","unSubscribe","_this2","onAnimationStart","startAnimation","configUpdate","_this3","_steps$","initialStyle","_steps$$duration","initialTime","sequence","nextItem","_nextItem$easing","nextProperties","preItem","runJSAnimation","transition","newStyle","propsTo","runStepAnimation","_this$props4","others","onAnimationReStart","Children","stateStyle","cloneContainer","container","_container$props","_container$props$styl","className","cloneElement","only","child","PureComponent","displayName","defaultProps","propTypes","getChildMapping","mapFn","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","enter","TransitionGroup","_React$Component","handleExited","contextValue","isMounting","firstRender","_proto","componentDidMount","componentWillUnmount","getDerivedStateFromProps","appear","currentChildMapping","Component","component","childFactory","TransitionGroupContext","Provider","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","status","nextCallback","prevState","updateStatus","componentDidUpdate","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","scrollTop","forceReflow","performEnter","performExit","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","nextState","setNextCallback","_this4","active","handler","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","childProps","contextType","_extends","parseDurationOfSingleTransition","isFinite","AnimateGroupChild","_Component","isAppearing","appearOptions","enterOptions","handleStyleActive","leaveOptions","handleEnter","handleExit","parseTimeout","AnimateGroup","leave","typeguardBarRectangleProps","xProp","yProp","option","xValue","yValue","heightValue","height","widthValue","width","radius","BarRectangle","shapeType","propTransformer","activeClassName","_Bar","_callSuper","Bar","isAnimationFinished","animationId","prevAnimationId","curData","prevData","dataKey","activeIndex","activeBar","baseProps","handleAnimationStart","handleAnimationEnd","Layer","layout","isAnimationActive","animationBegin","animationDuration","animationEasing","stepData","interpolatorX","interpolatorY","interpolatorWidth","interpolatorHeight","_interpolatorHeight","interpolator","renderRectanglesStatically","renderRectanglesWithAnimation","backgroundProps","background","rest","fill","needClip","clipPathId","_this$props5","xAxis","yAxis","errorBarItems","ErrorBar","dataPointFormatter","dataPoint","errorVal","errorBarProps","clipPath","item","_this$props6","hide","left","top","id","layerClass","clsx","needClipX","allowDataOverflow","needClipY","renderBackground","renderRectangles","renderErrorBar","LabelList","renderCallByParent","xAxisId","yAxisId","legendType","minPointSize","Global","isSsr","barPosition","bandSize","xAxisTicks","yAxisTicks","stackedData","dataStartIndex","displayedData","pos","itemDefaultProps","itemProps","minPointSizeProp","numericAxis","stackedDomain","scale","domain","baseValue","cells","Cell","rects","isValueNumber","minPointSizeCallback","_ref4","baseValueScale","currentValueScale","axis","ticks","computedHeight","isNaN","delta","_ref5","_baseValueScale","_currentValueScale","payload","tooltipPayload","tooltipPosition","_excluded2","_excluded3","CartesianAxis","fontSize","letterSpacing","viewBox","restProps","viewBoxOld","restPropsOld","htmlLayer","layerReference","tick","getElementsByClassName","window","getComputedStyle","tx","ty","orientation","tickSize","mirror","tickMargin","finalTickSize","tickCoord","coordinate","line","textAnchor","verticalAnchor","axisLine","needHeight","needWidth","tickLine","stroke","tickFormatter","unit","finalTicks","getTickTextAnchor","getTickVerticalAnchor","axisProps","customTickProps","tickLineProps","items","_this2$getTickLineCoo","getTickLineCoord","lineCoord","tickProps","visibleTicksCount","renderTickItem","_this$props7","ticksGenerator","_this$props8","noTicksProps","ref","renderAxisLine","renderTicks","minTickGap","interval","svgProps","direction","errorBars","_dataPointFormatter","lowBound","highBound","lineCoordinates","_errorVal","yMid","yMin","yMax","xMin","xMax","_scale","xMid","_xMin","_xMax","_yMin","_yMax","coordinates","strokeWidth","XAxisImpl","axisOptions","axisType","XAxis","allowDecimals","tickCount","padding","right","reversed","allowDuplicatedCategory","YAxisImpl","YAxis","bottom","getEveryNthWithCondition","isValid","isVisible","tickPosition","getSize","getTicks","angle","getNumberIntervalTicks","candidates","sizeKey","unitSize","getTickSize","content","contentSize","getAngledTickWidth","boundaries","isWidth","getTickBoundaries","_ret","initialStart","stepsize","_loop","isShow","getEquidistantTicks","preserveEnd","tail","tailSize","tailGap","_loop2","gap","getTicksStart","getTicksEnd","PREFIX_LIST","isTouch","changedTouches","Brush","leaveTimer","isTravellerMoving","handleTravellerMove","isSlideMoving","handleSlideDrag","handleDrag","endIndex","onDragEnd","startIndex","detachDragEndListener","handleDragEnd","leaveTimeOut","isTextActive","slideMoveStartX","pageX","attachDragEndListener","travellerDragStartHandlers","startX","handleTravellerDragStart","endX","lineY","renderDefaultTraveller","travellerWidth","updateId","prevUpdateId","prevTravellerWidth","prevX","prevWidth","scaleValues","isTravellerFocused","createScale","valueRange","middle","lastIndex","minIndex","getIndexInRange","maxIndex","text","addEventListener","removeEventListener","_this$state","onChange","newIndex","getIndex","movingTravellerId","brushMoveStartX","_this$state2","prevValue","_this$state3","currentScaleValue","currentIndex","newScaleValue","chartElement","margin","compact","travellerX","_data$startIndex","_data$endIndex","traveller","ariaLabel","travellerProps","ariaLabelBrush","tabIndex","role","onMouseEnter","handleEnterSlideOrTraveller","onMouseLeave","handleLeaveSlideOrTraveller","onMouseDown","onTouchStart","onKeyDown","preventDefault","stopPropagation","handleTravellerMoveKeyboard","onFocus","onBlur","cursor","renderTraveller","_this$props9","handleSlideDragStart","fillOpacity","_this$props10","_this$state4","attrs","pointerEvents","Text","getTextOfTick","_this$props11","alwaysShowText","_this$state5","isPanoramic","camelName","toUpperCase","generatePrefixStyle","handleLeaveWrapper","onTouchMove","handleTouchMove","renderPanorama","renderSlide","renderTravellerLayer","renderText","ifOverflowMatches","alwaysShow","ifOverflow","ReferenceDot","isX","isY","scales","bandAware","isInRange","getCoordinate","cx","cy","dotProps","renderDot","Label","isFront","Dot","ReferenceLineImpl","fixedX","fixedY","segment","endPoints","isFixedX","isFixedY","isSegment","position","xAxisOrientation","yAxisOrientation","yCoord","coord","points","xCoord","_coord","_points","_points2","getEndPoints","_endPoints","_endPoints$","_endPoints$2","lineProps","renderLine","ReferenceLine","ReferenceArea","hasX1","hasX2","hasY1","hasY2","rect","xValue1","xValue2","yValue1","yValue2","p1","rangeMin","p2","rangeMax","getRect","renderRect","Rectangle","detectReferenceElementsDomain","axisId","specifiedTicks","lines","dots","elements","areas","idKey","valueKey","finalDomain","el","key1","key2","value1","value2","eventCenter","SYNC_EVENT","AccessibilityManager","_ref$coordinateList","coordinateList","_ref$container","_ref$layout","_ref$offset","_ref$mouseHandlerCall","mouseHandlerCallback","spoofMouse","_window","_window2","_this$container$getBo","getBoundingClientRect","scrollOffsetX","scrollX","scrollOffsetY","scrollY","pageY","getPath","Cross","_ref$x","_ref$y","_ref$top","_ref$left","_ref$width","_ref$height","getRadialCursorPoints","activeCoordinate","startAngle","endAngle","getCursorPoints","innerRadius","outerRadius","innerPoint","outerPoint","Cursor","_element$props$cursor","_defaultProps","tooltipEventType","activePayload","activeTooltipIndex","tooltipAxisBandSize","chartName","elementPropsCursor","cursorComp","Curve","halfSize","getCursorRectangle","_getRadialCursorPoint","Sector","cursorProps","payloadIndex","createElement","ORIENT_MAP","FULL_WIDTH_AND_HEIGHT","originCoordinate","renderAsIs","getDisplayedData","graphicalItems","dataEndIndex","itemsData","itemData","getDefaultDomainByAxisType","getTooltipContent","chartData","activeLabel","tooltipAxis","_child$props$data","getTooltipData","rangeObj","rangeData","chartX","chartY","calculateTooltipPos","orderedTooltipTicks","tooltipTicks","_angle","_radius","getActiveCoordinate","getAxisMapByAxes","axes","axisIdKey","stackGroups","stackOffset","isCategorical","_childProps$domain2","includeHidden","duplicateDomain","categoricalDomain","domainStart","domainEnd","isDomainSpecifiedByUser","defaultDomain","_childProps$domain","childDomain","duplicate","errorBarsDomain","_defaultProps2","_defaultProps3","itemAxisId","itemHide","hasStack","axisDomain","originalDomain","getAxisMap","_ref4$axisType","AxisComp","axisMap","Axis","_defaultProps4","_defaultProps5","getAxisMapByItems","createDefaultState","defaultShowTooltip","brushItem","isTooltipActive","getAxisNameByLayout","numericAxisName","cateAxisName","getCartesianAxisSize","axisObj","axisName","generateCategoricalChart","_ref6","GraphicalChild","_ref6$defaultTooltipE","defaultTooltipEventType","_ref6$validateTooltip","validateTooltipEventTypes","axisComponents","legendContent","formatAxisMap","getFormatItems","currentState","barSize","barGap","barCategoryGap","globalMaxBarSize","maxBarSize","_getAxisNameByLayout","hasBar","some","hasGraphicalBarItem","formattedItems","childMaxBarSize","numericAxisId","cateAxisId","cateAxis","cateTicks","itemIsBar","sizeList","totalSize","_ref7","_getBandSizeOfAxis","barBandSize","composedFn","getComposedData","childIndex","updateStateOfAxisMapsOffsetAndStackGroups","_ref8","reverseStackOrder","_getAxisNameByLayout2","prevLegendBBox","_ref5$xAxisMap","xAxisMap","_ref5$yAxisMap","yAxisMap","legendItem","Legend","offsetH","offsetV","brushBottom","offsetWidth","offsetHeight","calculateOffset","legendBBox","cateAxisMap","ticksObj","formattedGraphicalItems","CategoricalChartWrapper","_props","_props$id","_props$throttleDelay","box","cId","syncId","eventEmitterSymbol","syncMethod","applySyncEvent","_ref9","triggerSyncEvent","mouse","getMouseInfo","_nextState","onMouseMove","activeItem","persist","throttleTriggeredAfterMouseMove","_mouse","eventName","_nextState2","onClick","onMouseUp","handleMouseDown","handleMouseUp","validateChartX","validateChartY","_element$props$active","getTooltipEventType","elementDefaultProps","elementProps","axisOption","_element$props","radialLines","polarAngles","polarRadius","radiusAxisMap","angleAxisMap","radiusAxis","angleAxis","legendWidth","getLegendProps","otherProps","chartWidth","chartHeight","onBBoxUpdate","handleLegendBBoxUpdate","_tooltipItem$props$ac","accessibilityLayer","tooltipItem","Tooltip","label","_this$state6","handleBrushChange","_this$state7","_element$props2","_element$props2$xAxis","_element$props2$yAxis","_ref10","activePoint","basePoint","isRange","itemItemProps","activeDot","renderActiveDot","filterFormatItem","_this$state8","_item$props","baseLine","activeShape","hasActive","itemEvents","trigger","handleItemMouseEnter","handleItemMouseLeave","graphicalItem","_this$getItemByXY","_ref11$graphicalItem","getItemByXY","_ref11$graphicalItem$","xyItem","specifiedKey","renderActivePoints","CartesianGrid","renderReferenceElement","renderBrush","renderGraphicChild","Line","Area","Radar","RadialBar","Scatter","Pie","Funnel","renderCursor","PolarGrid","renderPolarGrid","PolarAngleAxis","renderPolarAxis","PolarRadiusAxis","Customized","renderCustomized","triggeredAfterMouseMove","throttleDelay","_this$props$margin$le","_this$props$margin$to","accessibilityManager","setDetails","displayDefaultTooltip","tooltipElem","defaultIndex","independentAxisCoord","dependentAxisCoord","scatterPlotElement","_ref12","setIndex","_this$props$margin$le2","_this$props$margin$to2","shared","eventType","boundingRect","containerOffset","inRange","_this$state9","xScale","yScale","invert","toolTipData","scaledX","scaledY","_this$state10","tooltipEvents","handleClick","handleMouseEnter","handleMouseMove","handleMouseLeave","handleTouchStart","onTouchEnd","handleTouchEnd","handleOuterEvent","handleReceiveSyncEvent","_this$state$offset","_ref13","_ref14","_ref15","_ref16","_this$state$xAxisMap","_this$state$yAxisMap","chartXY","_this$state11","itemDisplayName","activeBarItem","_activeBarItem","activeTooltipItem","_this$props$tabIndex","_this$props$role","title","desc","Surface","renderClipPath","renderMap","keyboardEvent","focus","parseEventsOfWrapper","renderLegend","renderTooltip","defaultState","prevDataKey","prevHeight","prevLayout","prevStackOffset","prevMargin","prevChildren","_defaultState","keepFromPrevState","updatesToState","_brush$props$startInd","_brush$props","_brush$props$endIndex","_brush$props2","brush","hasDifferentStartOrEndIndex","newUpdateId","dot","CategoricalChart","forwardRef","getLabel","formatter","renderRadialLabel","labelProps","labelAngle","clockWise","deltaAngle","getDeltaAngle","startPoint","endPoint","dominantBaseline","xlinkHref","getAttrsOfPolarLabel","midAngle","_polarToCartesian","_x","_polarToCartesian2","getAttrsOfCartesianLabel","parentViewBox","verticalSign","verticalOffset","verticalEnd","verticalStart","horizontalSign","horizontalOffset","horizontalEnd","horizontalStart","_attrs2","_attrs3","sizeAttrs","isPolar","_ref4$offset","_props$className","textBreakAll","isPolarLabel","positionAttrs","breakAll","parseViewBox","labelViewBox","parentProps","checkPropsLabel","explicitChildren","implicitLabel","parseLabel","defaultAccessor","_ref$valueAccessor","valueAccessor","idProps","parseLabelList","SIZE","DefaultLegendContent","inactiveColor","sixthSize","thirdSize","color","inactive","strokeDasharray","legendIcon","iconProps","Symbols","sizeType","iconSize","itemStyle","display","marginRight","svgStyle","verticalAlign","finalFormatter","entryValue","renderIcon","align","textAlign","renderItems","defaultUniqBy","updateBBox","wrapperNode","getBBox","lastBoundingBox","hPos","vPos","getBBoxSnapshot","wrapperStyle","payloadUniqBy","outerStyle","getDefaultPosition","renderContent","getUniqPayload","ResponsiveContainer","aspect","_ref$initialDimension","initialDimension","_ref$minWidth","minWidth","minHeight","maxHeight","_ref$debounce","onResize","_ref$style","containerRef","useRef","onResizeRef","useImperativeHandle","console","warn","_useState2","useState","containerWidth","containerHeight","sizes","setSizes","setContainerSize","useCallback","newWidth","newHeight","roundedWidth","roundedHeight","useEffect","_onResizeRef$current","_entries$0$contentRec","contentRect","observer","ResizeObserver","_containerRef$current","observe","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","isCharts","endsWith","maxWidth","MULTIPLY_OR_DIVIDE_REGEX","ADD_OR_SUBTRACT_REGEX","CSS_LENGTH_UNIT_REGEX","NUM_SPLIT_REGEX","CONVERSION_RATES","cm","mm","pt","pc","Q","px","FIXED_CSS_LENGTH_UNITS","STR_NAN","DecimalCSS","NaN","convertToPx","_NUM_SPLIT_REGEX$exec","numStr","calculateArithmetic","expr","newExpr","_MULTIPLY_OR_DIVIDE_R","leftOperand","operator","rightOperand","lTs","parse","rTs","multiply","_ADD_OR_SUBTRACT_REGE","_leftOperand","_operator","_rightOperand","_lTs","_rTs","_result","PARENTHESES_REGEX","evaluateExpression","expression","parentheticalExpression","calculateParentheses","reduceCSSCalc","safeEvaluateExpression","BREAKING_SPACES","calculateWordWidths","words","wordsWithComputedWidth","word","spaceWidth","getWordsWithoutCalculate","getWordsByLines","scaleToFit","maxLines","wordWidths","initialWordsWithComputedWith","lineWidth","shouldLimitLines","calculate","currentLine","newLine","originalResult","trimmedResult","checkOverflow","tempText","doesOverflow","findLongestLine","iterations","_checkOverflow2","doesPrevOverflow","doesMiddleOverflow","calculateWordsByLines","DEFAULT_FILL","_ref5$x","propsX","_ref5$y","propsY","_ref5$lineHeight","lineHeight","_ref5$capHeight","capHeight","_ref5$scaleToFit","_ref5$textAnchor","_ref5$verticalAnchor","_ref5$fill","wordsByLines","dx","dy","textProps","startDy","transforms","defaultFormatter","DefaultTooltipContent","_props$separator","separator","_props$contentStyle","contentStyle","_props$itemStyle","_props$labelStyle","labelStyle","itemSorter","wrapperClassName","labelClassName","labelFormatter","_props$accessibilityL","backgroundColor","border","whiteSpace","finalLabelStyle","hasLabel","finalLabel","wrapperCN","labelCN","accessibilityAttributes","finalItemStyle","paddingTop","paddingBottom","finalValue","finalName","formatted","_formatted","CSS_CLASS_PREFIX","TOOLTIP_HIDDEN","visibility","getTooltipCSSClassName","translateX","translateY","getTooltipTranslateXY","allowEscapeViewBox","offsetTopLeft","reverseDirection","tooltipDimension","viewBoxDimension","negative","positive","TooltipBoundingBox","dismissed","dismissedAtCoordinate","_this$props$coordinat","_this$props$coordinat2","_this$props$coordinat3","_this$props$coordinat4","document","handleKeyDown","_this$props$coordinat5","_this$props$coordinat6","hasPayload","useTranslate3d","_getTooltipTranslate","tooltipBox","cssProperties","getTransformStyle","cssClasses","getTooltipTranslate","filterNull","finalPayload","cursorStyle","svgView","calculateViewBox","XAxisContext","createContext","YAxisContext","ViewBoxContext","OffsetContext","ClipPathIdContext","ChartHeightContext","ChartWidthContext","ChartLayoutContextProvider","_props$state","useClipPathId","useContext","useXAxisOrThrow","useArbitraryXAxis","useYAxisWithFiniteDomainOrRandom","useYAxisOrThrow","useViewBox","useOffset","useChartWidth","useChartHeight","BasisClosed","_context","BasisOpen","areaStart","areaEnd","lineStart","_x0","_x1","_x2","_x3","_x4","_y0","_y1","_y2","_y3","_y4","_point","lineEnd","moveTo","closePath","lineTo","point","_line","x0","y0","Bump","bezierCurveTo","LinearClosed","slope3","that","h0","h1","s0","s1","slope2","t0","t1","MonotoneX","MonotoneY","ReflectContext","Natural","controlPoints","Step","_t0","_y","py","i0","i1","defined","curve","output","area","defined0","x0z","y0z","arealine","_","lineX0","lineY0","lineY1","lineX1","CURVE_FACTORIES","curveBasisClosed","curveBasisOpen","curveBasis","curveBumpX","curveBumpY","curveLinearClosed","curveLinear","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","getX","getY","lineFunction","_ref$type","_ref$points","_ref$connectNulls","connectNulls","curveFactory","getCurveFactory","formatPoints","formatBaseLine","areaPoints","pathRef","realPath","getRectanglePath","maxRadius","ySign","xSign","newRadius","_newRadius","isInRectangle","minX","maxX","minY","maxY","isUpdateAnimationActive","rectangleProps","totalLength","setTotalLength","getTotalLength","pathTotalLength","currWidth","currHeight","currY","getTangentCircle","isExternal","cornerRadius","cornerIsExternal","centerRadius","theta","asin","centerAngle","lineTangencyAngle","center","circleTangency","lineTangency","cos","getSectorPath","tempEndAngle","outerStartPoint","outerEndPoint","innerStartPoint","innerEndPoint","forceCornerRadius","sectorProps","deltaRadius","cr","_getTangentCircle","soct","solt","sot","_getTangentCircle2","eoct","eolt","eot","outerArcAngle","_getTangentCircle3","sict","silt","sit","_getTangentCircle4","eict","eilt","eit","innerArcAngle","getSectorWithCorner","draw","pi","arc","tan30","tan30_2","kr","kx","ky","sqrt3","symbolFactories","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","RADIAN","PI","symbolFactory","_ref$size","_ref$sizeType","filteredProps","getSymbolFactory","circle","tan","calculateAreaSize","registerSymbol","factory","getTrapezoidPath","upperWidth","lowerWidth","widthGap","Trapezoid","trapezoidProps","currUpperWidth","currLowerWidth","defaultPropTransformer","ShapeSelector","_elementProps","isSymbolsProps","Shape","_ref2$propTransformer","_ref2$activeClassName","getPropsFromShapeOption","isFunnel","_item","isPie","isScatter","compareFunnel","shapeData","_activeTooltipItem$la","_activeTooltipItem$la2","xMatches","yMatches","comparePie","startAngleMatches","endAngleMatches","compareScatter","zMatches","getActiveShapeIndexForTooltip","shapeKey","getShapeDataKey","_activeItem$tooltipPa","_activeItem$tooltipPa2","getActiveShapeTooltipPayload","activeItemMatches","datum","dataIndex","valuesMatch","mouseCoordinateMatches","comparison","getComparisonFn","indexOfMouseCoordinates","ids","leftMirror","rightMirror","topMirror","bottomMirror","calculatedPadding","needSpace","_axis$padding","offsetKey","diff","smallestDistanceBetweenValues","Infinity","sortedValues","smallestDistanceInPercent","rangeWidth","halfBand","_parseScale","realScaleType","finalAxis","rectWithPoints","rectWithCoords","ScaleHelper","bandwidth","_offset","_offset2","first","last","createLabeledScales","getAngledRectangleWidth","normalizedAngle","normalizeAngle","angleRadians","angleThreshold","atan","angledWidth","sin","series","order","stackValue","stackSeries","PLACE_HOLDER","isPlaceHolder","curry0","_curried","curryN","argsLength","restArgs","newArgs","curry","compose","_len3","_key3","fns","firstFn","tailsFn","lastResult","_len4","_key4","rangeStep","getDigitCount","interpolateNumber","newA","uninterpolateNumber","uninterpolateTruncation","_arr","_n","_d","_e","_s","_i","getValidInterval","validMin","validMax","getFormatStep","roughStep","correctionFactor","digitCount","digitCountValue","stepRatio","stepRatioScale","formatStep","getTickOfSingleValue","absVal","middleIndex","calculateStep","tickMin","tickMax","belowCount","upCount","scaleCount","getNiceTickValues","_getValidInterval2","cormin","cormax","_values","_calculateStep","getTickValuesFixedDomain","_getValidInterval4","_getValidInterval6","getValueByDataKey","getDomainOfDataByKey","filterNil","flattenData","calculateActiveTickIndex","_ticks$length","unsortedTicks","before","cur","after","sameDirectionCoord","diffInterval","curInRange","afterInRange","sameInterval","minValue","maxValue","getMainColorOfGraphicItem","_item$type","defaultedProps","getBarSizeList","globalSize","_ref2$stackGroups","numericAxisIds","sgs","stackIds","sLen","_sgs$stackIds$j","barItems","barItemDefaultProps","barItemProps","selfSize","cateId","stackList","getBarPosition","_ref3$sizeList","realBarGap","initialValue","useFull","fullBarSize","newPosition","newRes","originalSize","appendOffsetOfLegend","_unused","legendBox","legendProps","boxWidth","boxHeight","getDomainOfErrorBars","errorBarChild","isErrorBarRelevantForAxis","mainValue","errorDomain","prevErrorArr","errorValue","lowerValue","upperValue","parseErrorBarsOfAxis","domains","getDomainOfItemsWithSameAxis","isCategoricalAxis","getCoordinatesOfGrid","syncWithTicks","hasMin","hasMax","getTicksOfAxis","isGrid","isAll","offsetForBand","niceTicks","scaleContent","row","handlerWeakMap","combineEventHandlers","defaultHandler","childHandler","childWeakMap","combineHandler","parseScale","chartType","EPS","checkDomainOfScale","findPositionOfBar","truncateByDomain","STACK_OFFSET_MAP","expand","none","silhouette","wiggle","s2","si","sij0","s3","sk","getStackedData","stackItems","offsetType","dataKeys","offsetAccessor","oz","sz","getStackGroupsByAxisId","_items","_item$type2","stackId","parentGroup","childGroup","group","getTicksOfScale","opts","scaleType","tickValues","_domain","getCateCoordinateOfLine","matchedTick","getCateCoordinateOfBar","getBaseValueOfBar","getStackedDataOfItem","_item$type3","itemIndex","getDomainOfStackGroups","MIN_VALUE_REG","MAX_VALUE_REG","parseSpecifiedDomain","specifiedDomain","dataDomain","_value","getBandSizeOfAxis","isBar","bandWidth","orderedTicks","parseDomainOfCategoryAxis","calculatedDomain","axisChild","getTooltipItem","tooltipType","stringCache","widthCache","cacheCount","SPAN_STYLE","MEASUREMENT_SPAN_ID","getStringSize","copyObj","copyStyle","cacheKey","JSON","stringify","measurementSpan","getElementById","setAttribute","body","appendChild","measurementSpanStyle","textContent","getOffset","documentElement","clientTop","clientLeft","mathSign","isPercent","isNumOrStr","idCounter","uniqueId","getPercentValue","percent","totalValue","validate","getAnyElementOfObject","hasDuplicate","ary","numberA","numberB","findEntryInArray","specifiedValue","getLinearRegression","xsum","ysum","xysum","xxsum","xmin","xmax","xcurrent","ycurrent","condition","format","radianToDegree","angleInRadian","polarToCartesian","getAngleOfPoint","anotherPoint","acos","reverseFormatAngleOfSetor","startCnt","endCnt","inRangeOfSector","sector","_getAngleOfPoint","_formatAngleOfSector","formatAngleOfSector","formatAngle","REACT_BROWSER_EVENT_MAP","click","mousedown","mouseup","mouseover","mousemove","mouseout","mouseenter","mouseleave","touchcancel","touchend","touchmove","touchstart","getDisplayName","Comp","lastChildren","toArray","findAllByType","childType","findChildByType","validateWidthHeight","_el$props","SVG_TAGS","isSvgElement","hasClipDot","filterProps","includeEvents","svgElementType","inputProps","out","_inputProps","_FilteredElementKeyMa","matchingElementTypeKeys","isValidSpreadableProp","isChildrenEqual","nextChildren","isSingleChildEqual","nextChild","renderByOrder","record","results","getReactEventByType","parseChildIndex","shallowEqual","legendData","legendDefaultProps","sectors","iconType","getWithHeight","SVGElementPropKeys","PolyElementKeys","FilteredElementKeyMap","svg","polygon","polyline","EventKeys","adaptEventHandlers","newHandler","adaptEventsOfChild","originalHandler","getEventHandlerOfChild","_inheritsLoose","isProduction","invariant","provided"],"sourceRoot":""}